Proteção do servidor Linux. o que fazer primeiro

Proteção do servidor Linux. o que fazer primeiro
Habib M'henni/Wikimedia CommonsCC BY-SA

Hoje em dia, levantar um servidor em uma hospedagem é questão de alguns minutos e alguns cliques do mouse. Mas logo após o lançamento, ele se encontra em um ambiente hostil, pois está aberto a toda a Internet como uma garota inocente em uma discoteca de rock. Os scanners o encontrarão rapidamente e detectarão milhares de bots com scripts automáticos que vasculham a rede em busca de vulnerabilidades e configurações incorretas. Há algumas coisas que você deve fazer logo após o lançamento para garantir a proteção básica.

Conteúdo

Usuário não raiz

A primeira etapa é criar um usuário não raiz para você. A questão é que o usuário root privilégios absolutos no sistema e, se você permitir a administração remota, fará metade do trabalho para o hacker, deixando um nome de usuário válido para ele.

Portanto, você precisa criar outro usuário e desativar a administração remota via SSH para root.

Um novo usuário é iniciado pelo comando useradd:

useradd [options] <username>

Em seguida, uma senha é adicionada a ela com o comando passwd:

passwd <username>

Por fim, esse usuário precisa ser adicionado a um grupo que tenha o direito de executar comandos elevados sudo. Dependendo da distribuição do Linux, podem ser grupos diferentes. Por exemplo, no CentOS e Red Hat, o usuário é adicionado ao grupo wheel:

usermod -aG wheel <username>

No Ubuntu é adicionado ao grupo sudo:

usermod -aG sudo <username>

Chaves em vez de senhas SSH

Força bruta ou vazamentos de senha são um vetor de ataque padrão, portanto, é melhor desativar a autenticação de senha no SSH (Secure Shell) e usar a autenticação de chave.

Existem vários programas para implementar o protocolo SSH, como lsh и Queda de urso, mas o mais popular é o OpenSSH. Instalando o cliente OpenSSH no Ubuntu:

sudo apt install openssh-client

Instalação do servidor:

sudo apt install openssh-server

Iniciando o daemon SSH (sshd) no servidor Ubuntu:

sudo systemctl start sshd

Inicie automaticamente o daemon em cada inicialização:

sudo systemctl enable sshd

Deve-se notar que a parte do servidor do OpenSSH inclui a parte do cliente. Isto é, através openssh-server você pode se conectar a outros servidores. Além disso, a partir de sua máquina cliente, você pode iniciar um túnel SSH de um servidor remoto para um host de terceiros e, em seguida, o host de terceiros considerará o servidor remoto como a origem das solicitações. Um recurso muito útil para mascarar seu sistema. Veja o artigo para detalhes "Dicas práticas, exemplos e túneis SSH".

Em uma máquina cliente, geralmente não faz sentido instalar um servidor completo para evitar a possibilidade de conexão remota com um computador (por motivos de segurança).

Assim, para o seu novo usuário, primeiro você precisa gerar as chaves SSH no computador a partir do qual acessará o servidor:

ssh-keygen -t rsa

A chave pública é armazenada em um arquivo .pub e se parece com uma string de caracteres aleatórios que começa com ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

Em seguida, na raiz, crie um diretório SSH no servidor no diretório inicial do usuário e adicione a chave pública SSH ao arquivo authorized_keys, usando um editor de texto como o Vim:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /home/user_name/.ssh/authorized_keys

Por fim, defina as permissões corretas para o arquivo:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

e altere a propriedade para este usuário:

chown -R username:username /home/username/.ssh

No lado do cliente, você precisa especificar o local da chave secreta para autenticação:

ssh-add DIR_PATH/keylocation

Agora você pode fazer login no servidor com o nome de usuário usando esta chave:

ssh [username]@hostname

Após a autorização, você pode usar o comando scp para copiar arquivos, o utilitário sshfs para montar remotamente um sistema de arquivos ou diretórios.

É aconselhável fazer várias cópias de backup da chave privada, porque se você desabilitar a autenticação de senha e perdê-la, não terá como fazer login em seu próprio servidor.

Conforme mencionado acima, no SSH você precisa desabilitar a autenticação para root (este é o motivo pelo qual iniciamos um novo usuário).

No CentOS/Red Hat encontramos a linha PermitRootLogin yes no arquivo de configuração /etc/ssh/sshd_config e altere:

PermitRootLogin no

No Ubuntu adicione a linha PermitRootLogin no para o arquivo de configuração 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Depois de verificar se o novo usuário está autenticando com sua chave, você pode desativar a autenticação de senha para eliminar o risco de vazamento de senha ou força bruta. Agora, para acessar o servidor, um invasor precisará obter uma chave privada.

No CentOS/Red Hat encontramos a linha PasswordAuthentication yes no arquivo de configuração /etc/ssh/sshd_config e altere assim:

PasswordAuthentication no

No Ubuntu adicione a linha PasswordAuthentication no arquivar 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Para obter instruções sobre como ativar a autenticação de dois fatores via SSH, consulte aqui.

Firewall

O firewall garante que apenas o tráfego nas portas que você permite diretamente irá para o servidor. Isso protege contra a exploração de portas habilitadas acidentalmente com outros serviços, o que reduz bastante a superfície de ataque.

Antes de instalar um firewall, você precisa se certificar de que o SSH está incluído na lista de exclusão e não será bloqueado. Caso contrário, após iniciar o firewall, não poderemos nos conectar ao servidor.

A distribuição do Ubuntu vem com o Uncomplicated Firewall (ufw) e com CentOS/Red Hat - firewalld.

Permitindo SSH no firewall no Ubuntu:

sudo ufw allow ssh

No CentOS/Red Hat use o comando firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

Após este procedimento, você pode iniciar o firewall.

No CentOS/Red Hat, inicie o serviço systemd para firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

No Ubuntu usamos o seguinte comando:

sudo ufw enable

Falha2Ban

Serviço Falha2Ban analisa os logs no servidor e conta o número de tentativas de acesso de cada endereço IP. As configurações especificam as regras para quantas tentativas de acesso são permitidas em um determinado intervalo - após o qual esse endereço IP é bloqueado por um período de tempo especificado. Por exemplo, vamos permitir 5 tentativas de autenticação SSH com falha em 2 horas e, em seguida, bloquear o endereço IP fornecido por 12 horas.

Instalando o Fail2Ban no CentOS e Red Hat:

sudo yum install fail2ban

Instalação no Ubuntu e Debian:

sudo apt install fail2ban

Lançar:

systemctl start fail2ban
systemctl enable fail2ban

O programa possui dois arquivos de configuração: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. As restrições de proibição são especificadas no segundo arquivo.

A prisão para SSH é habilitada por padrão com configurações padrão (5 tentativas, intervalo de 10 minutos, banimento por 10 minutos).

[DEFAULT] ignorecommand=bantime=10m findtime=10m maxretry=5

Além do SSH, o Fail2Ban pode proteger outros serviços no servidor web nginx ou Apache.

Atualizações automáticas de segurança

Como você sabe, novas vulnerabilidades são constantemente encontradas em todos os programas. Depois que as informações são publicadas, as explorações são adicionadas aos pacotes de exploração populares, que são usados ​​\uXNUMXb\uXNUMXbpor hackers e adolescentes em massa ao verificar todos os servidores seguidos. Portanto, é muito importante instalar as atualizações de segurança assim que elas aparecerem.

No servidor Ubuntu, as atualizações automáticas de segurança são ativadas por padrão, portanto, nenhuma outra ação é necessária.

No CentOS/Red Hat você precisa instalar o aplicativo dnf-automático e ligue o temporizador:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

Verificação do temporizador:

sudo systemctl status dnf-automatic.timer

Alterando as portas padrão

O SSH foi desenvolvido em 1995 para substituir o telnet (porta 23) e o ftp (porta 21), por isso o autor do programa, Tatu Iltonen porta 22 selecionada por padrão, e foi aprovado pela IANA.

Naturalmente, todos os invasores sabem em qual porta o SSH está sendo executado - e fazem a varredura junto com o restante das portas padrão para descobrir a versão do software, para verificar as senhas de root padrão e assim por diante.

A alteração das portas padrão - ofuscação - reduz várias vezes a quantidade de tráfego de lixo, o tamanho dos logs e a carga no servidor, além de reduzir a superfície de ataque. Apesar de alguns criticar este método de "proteção através da obscuridade" (segurança através da obscuridade). A razão é que esta técnica se opõe ao fundamental proteção arquitetônica. Portanto, por exemplo, o Instituto Nacional de Padrões e Tecnologia dos EUA em "Guia de segurança do servidor" indica a necessidade de uma arquitetura de servidor aberta: “A segurança de um sistema não deve depender do sigilo da implementação de seus componentes”, diz o documento.

Teoricamente, alterar as portas padrão é contra a prática da arquitetura aberta. Mas, na prática, a quantidade de tráfego malicioso é realmente reduzida, portanto, essa é uma medida simples e eficaz.

O número da porta pode ser configurado alterando a diretiva Port 22 no arquivo de configuração / etc / ssh / sshd_config. Também é indicado pelo parâmetro -p <port> в sshd. Cliente e programas SSH Sftp também suporta a opção -p <port>.

Parâmetro -p <port> pode ser usado para especificar o número da porta ao conectar com o comando ssh em linux. EM Sftp и scp parâmetro é usado -P <port> (P maiúsculo). A instrução da linha de comando substitui qualquer valor nos arquivos de configuração.

Se houver muitos servidores, quase todas essas ações para proteger o servidor Linux podem ser automatizadas em um script. Mas se houver apenas um servidor, é melhor controlar manualmente o processo.

Como a publicidade

Encomende e comece imediatamente! Criação de VDS qualquer configuração e com qualquer sistema operacional em um minuto. A configuração máxima permitirá que você aproveite ao máximo - 128 núcleos de CPU, 512 GB de RAM, 4000 GB NVMe. Épico 🙂

Proteção do servidor Linux. o que fazer primeiro

Fonte: habr.com