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.
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
- UFW Essentials: Common Firewall Rules and Commands
- Top 20 OpenSSH Server Best Security Practices
- OpenSSH security and hardening
Comentários