| Por Mauro J. Miranda
Introdução à Segurança para Servidores Linux
A segurança de servidores Linux é uma das prioridades para qualquer administrador de sistemas. Portanto, com a crescente onda de ataques cibernéticos, garantir que seus servidores estejam seguros é essencial para proteger dados sensíveis e a integridade da infraestrutura. Dessa forma, este artigo oferece um guia abrangente com dicas de segurança para servidores Linux, ajudando a fortalecer sua defesa contra ameaças.
Mantenha o Sistema Atualizado para Segurança de Servidores Linux
Uma das práticas mais básicas, porém cruciais, é manter o sistema operacional e todos os softwares atualizados. Vulnerabilidades são descobertas constantemente, e as atualizações frequentes garantem que as falhas de segurança sejam corrigidas.
- Automatize as Atualizações: Além disso, configure o sistema para verificar e instalar atualizações automaticamente. Por exemplo, no Ubuntu, você pode habilitar atualizações automáticas com o comando:bashCopy code
sudo apt-get install unattended-upgrades
- Monitoramento de CVEs: Ainda mais, utilize ferramentas como o OSSEC para monitorar vulnerabilidades específicas (CVE) e aplicar patches assim que estiverem disponíveis.
Autenticação com Chave Pública: Melhoria na Segurança para Servidores Linux
A autenticação baseada em senha é vulnerável a ataques de força bruta. Por isso, substitua-a pela autenticação com chave pública para melhorar a segurança do SSH.
- Gerar Chave SSH: No cliente, use o comando:bashCopy code
ssh-keygen -t rsa -b 4096
- Copiar Chave Pública para o Servidor:bashCopy code
ssh-copy-id usuario@servidor
- Desabilitar Login com Senha: Após configurar a chave pública, edite o arquivo
/etc/ssh/sshd_config
e defina:bashCopy codePasswordAuthentication no
Configurando um Firewall para Segurança de Servidores Linux
Em primeiro lugar, implementar um firewall é essencial para controlar o tráfego de rede e proteger o servidor contra acessos não autorizados.
- Configurar o UFW: O
ufw
(Uncomplicated Firewall) é uma ferramenta simplificada para a configuração de regras de firewall no Ubuntu.bashCopy codesudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow ssh sudo ufw enable
- Utilizar Iptables: Da mesma forma, para maior controle, o
iptables
permite criar regras personalizadas para filtrar o tráfego de rede. Por exemplo:bashCopy codesudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT sudo iptables -A INPUT -j DROP
Desativando Serviços Inúteis para Aumentar a Segurança em Servidores Linux
Serviços desnecessários aumentam a superfície de ataque do servidor. Portanto, desabilite ou remova qualquer serviço que não esteja sendo usado.
- Identifique os Serviços em Execução:bashCopy code
systemctl list-units --type=service --state=running
- Desative Serviços Inúteis:bashCopy code
sudo systemctl disable nome_do_serviço sudo systemctl stop nome_do_serviço
Limite o Acesso ao Root
O acesso direto ao usuário root deve ser evitado. Assim sendo, configure o servidor para exigir que os usuários façam login como uma conta normal e, em seguida, use sudo
para realizar tarefas administrativas.
- Desabilitar Login Root via SSH: No arquivo
/etc/ssh/sshd_config
, defina:bashCopy codePermitRootLogin no
- Configurar Sudoers: Além disso, adicione usuários ao grupo sudo para permitir que eles executem comandos como root:bashCopy code
sudo usermod -aG sudo usuario
Implemente Monitoramento de Logs
Certamente, monitorar logs é crucial para identificar atividades suspeitas e responder a incidentes de segurança rapidamente.
- Ferramentas de Monitoramento: Por exemplo, utilize ferramentas como
logwatch
,rsyslog
, ou oGraylog
para centralizar e monitorar logs. - Configuração do Logwatch: Instale e configure o
logwatch
para enviar relatórios diários por e-mail:bashCopy codesudo apt-get install logwatch sudo logwatch --detail High --mailto seuemail@dominio.com --range hoje
Configure o Fail2Ban
O Fail2Ban
protege o servidor contra ataques de força bruta, bloqueando endereços IP que tentam acessar o servidor repetidamente com credenciais incorretas.
- Instalar o Fail2Ban:bashCopy code
sudo apt-get install fail2ban
- Configurar Jail Local: Crie o arquivo
/etc/fail2ban/jail.local
e defina parâmetros para o SSH:bashCopy code[sshd] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 3600
Use SELinux ou AppArmor
Além disso, ferramentas como SELinux ou AppArmor reforçam a segurança do sistema, impondo políticas restritivas que limitam as ações que processos podem realizar.
- Habilitar e Configurar o SELinux: No CentOS e RHEL, o SELinux vem instalado por padrão. Portanto, verifique o status:bashCopy code
sudo sestatus
- Configurar Políticas AppArmor: No Ubuntu, o AppArmor é o padrão. Assim sendo, para visualizar e aplicar perfis:bashCopy code
sudo aa-status sudo aa-enforce /etc/apparmor.d/
Criptografe Dados Sensíveis
A criptografia garante que, mesmo que os dados sejam comprometidos, eles não poderão ser lidos sem a chave de decriptação.
- Criptografar Partições: Utilize o
LUKS
para criptografar partições inteiras:bashCopy codesudo cryptsetup luksFormat /dev/sdX sudo cryptsetup luksOpen /dev/sdX nome_criptografado
- Criptografar Arquivos com GPG: Da mesma forma, para criptografar arquivos individuais:bashCopy code
gpg -c arquivo.txt
Implemente Autenticação de Dois Fatores (2FA)
Adicionar uma camada extra de segurança com autenticação de dois fatores dificulta o acesso não autorizado, mesmo que as credenciais sejam comprometidas.
- Instalar Google Authenticator: Adicione o Google Authenticator ao SSH:bashCopy code
sudo apt-get install libpam-google-authenticator google-authenticator
- Configurar SSH para 2FA: Logo depois, edite o arquivo
/etc/pam.d/sshd
e adicione:bashCopy codeauth required pam_google_authenticator.so
No arquivo/etc/ssh/sshd_config
, adicione:bashCopy codeChallengeResponseAuthentication yes
Realize Backups Regulares
Garantir que você tenha backups atualizados é vital para a recuperação após um incidente de segurança.
- Automatize Backups: Além disso, configure scripts de backup e cron jobs para automatizar o processo.
- Verifique Backups: Finalmente, teste regularmente a restauração dos backups para garantir que eles funcionem corretamente.
Restrinja Acesso Físico
Controle o acesso físico ao servidor, visto que um invasor com acesso físico pode facilmente comprometer o sistema.
- Use BIOS/UEFI Passwords: Configure senhas no BIOS/UEFI para impedir o boot de dispositivos não autorizados.
- Desabilite Boot de Dispositivos Externos: Nas configurações de BIOS/UEFI, desabilite o boot de dispositivos externos como USBs.
Conclusão
A segurança de servidores Linux é um processo contínuo e multifacetado. Portanto, implementar essas práticas reforçará significativamente a segurança do seu servidor, protegendo contra uma variedade de ameaças cibernéticas. Dessa forma, lembre-se, a vigilância constante e a adaptação às novas ameaças são fundamentais para manter um ambiente seguro.