Configurar um servidor Linux para ter um nível de segurança básico pode parecer uma tarefa complicada à primeira vista, especialmente se o servidor estiver exposto à Internet. No entanto, seguindo alguns passos básicos, é possível ter um servidor seguro sem necessariamente ser um especialista em segurança.

Tux segurando ferramentas. Fonte: Pixabay

Firewall

Em se tratando de segurança em rede, tudo começa com um bom firewall habilitado e configurado propriamente. Pode ser utilizado o iptables diretamente, desde que se tenha conhecimento suficiente e tempo para configurá-lo, mas uma ferramenta mais simples é o UFW (Uncomplicated Firewall), que projetado para ser uma interface mais amigável para configuração do iptables.

No Ubuntu ou no Debian, o UFW pode ser instalado com o seguinte comando:

sudo apt-get install ufw

A menos que você não esteja acessando o servidor via SSH, para acessar o seu servidor, a primeira recomendação é permitir conexões SSH antes de habilitar o UFW:

sudo ufw allow ssh

Em seguida, pode ser habilitado o UFW:

sudo ufw enable

Se for um servidor web, será necessário permitir conexões de entrada via HTTP (porta 80):

sudo ufw allow http

O mesmo pode ser feito para conexões via HTTPS (porta 443):

sudo ufw allow https

Para saber como aprimorar o seu firewall, digite man ufw na linha de comando, ou acesse a página do UFW na Wiki do UbuntuBr.

SSH

Por falar em SSH, existem algumas configurações que podem ser realmente úteis para evitar ataques ao seu servidor utilizando este serviço. O SSH, tanto o cliente como o servidor, é configurado por meio do arquivo /etc/ssh/ssh_config. Então, antes de prosseguir, abra esse arquivo:

sudoedit /etc/ssh/ssh_config

A primeira medida é desabilitar o acesso com o usuário root via ssh, evitando que o atacante tenha controle total do seu sistema imediatamente. Antes disso, certifique-se de que possui uma conta normal (não root) e que essa conta está habilitada. Em seguida, faça a configuração:

PermitRootLogin no

Você pode também desabilitar acessos SSH que utilizem contas com senhas vazias:

PermitEmptyPasswords no

Para ter um nível de segurança ainda maior, configure a sua chave pública no servidor e posteriormente desabilite todos os acessos via senha:

AuthenticationMethods publickey
PubkeyAuthentication yes

Se quiser obter mais dicas de segurança relacionadas ao SSH, acesse o seguinte artigo:

Fail2ban

O Fail2ban é uma ferramenta muito interessante que permite executar ações específicas após sucessivas tentativas de acesso mal sucedidas. Geralmente, é utilizada para bloquear o acesso ao servidor a partir do endereço utilizado para o ataque.

Instale o Fail2ban com o seguinte comando:

sudo apt-get install fail2ban

O Fail2ban vem com suporte a SSH pré-instalado, sendo necessário apenas habilitá-lo. Em sistemas baseados no Debian, como o Ubuntu, a habilitação já acontece durante a instalação. Para conferir, abra o arquivo /etc/fail2ban/jail.d/defaults-debian.conf e verifique se contém as seguintes linhas:

[sshd]
enabled = true

Caso o seu sistema não possua esse arquivo, ou o conteúdo do arquivo seja diferente do indicado acima, crie um arquivo /etc/fail2ban/jail.local e cole essas linhas.

Além do SSH, o Fail2ban suporta uma infinidade de outros mecanismos de autenticação, e você pode criar configurações de acordo com as suas necessidades. Porém, para cada sistema a configuração é diferente. Recomendo que você mesmo faça sua pesquisa sobre como configurar cada um.

Senhas e chaves de acesso

Para autenticação no seu servidor via SSH, em geral o recomendado é que seja utilizada uma chave pública SSH, desabilitando, na medida do possível, a autenticação via senha. Isso porque a autenticação por senha é (mais) vulnerável a ataques de força bruta, especialmente se a sua senha for fraca.

O ideal é que você utilize uma senha com pelo menos cerca de 16 ou 20 caracteres. Se possível, gere uma senha aleatória e guarde-a em segurança, de preferência utilizando um gerenciador de senhas. Uma frase-senha pode ser muito segura, desde que contenha palavras sem relação entre si. Para saber mais dicas, acesso o artigo sobre como criar uma senha forte e segura.

Conclusão

Vimos alguns passos básicos para garantir a segurança mínima de um servidor Linux. Obviamente, existem muitos outros fatores importantes e recursos adicionais que você pode adotar para torná-lo ainda mais robusto e resistente a ataques. Porém, com os itens que aprendemos, já é possível dizer que o nosso servidor está equipado para resistir aos ataques mais comuns.

Referências

Leia também