Salve galerinhaaaa, Tudo certo com vocês? Hoje vou deixar mais um post aqui de algumas configurações que eu uso em meus Servidores Ubuntu para deixar elas mais seguras e mais auditáveis caso esteja sob um ataque rootkit ou algo parecido.
Já vou avisar, esse post ficou longo por que além de colocar os comandos estou descrevendo um pouco mais o por que de usar e um pouco mais do serviço utilizado.
Chaves SSH
As chaves SSH são uma forma segura de autenticação usada para acessar servidores remotos, elas substituem a necessidade de usar senhas, oferecendo maior segurança e conveniência. Aqui está um guia básico sobre o que são chaves SSH e como usá-las para se conectar a um servidor Ubuntu:
As chaves SSH são um par de chaves criptográficas: uma chave pública e uma chave privada.
- Chave pública: Pode ser compartilhada livremente e é armazenada no servidor remoto.
- Chave privada: Deve ser mantida em segredo e fica armazenada no seu computador local.
Quando você tenta se conectar ao servidor, o servidor usa a chave pública para criar um desafio criptográfico que só pode ser respondido com a chave privada correspondente. Se a resposta for correta, a autenticação é bem-sucedida.
Como usar chaves SSH para conectar a um servidor Ubuntu
1. Gerar um par de chaves SSH
Se você ainda não tem um par de chaves SSH, pode gerar um no seu computador local:
ssh-keygen -t rsa -b 4096 -C "seu_email@exemplo.com"
-t rsa
: Especifica o tipo de chave (RSA é o mais comum).-b 4096
: Define o tamanho da chave (4096 bits é recomendado para maior segurança).-C "seu_email@exemplo.com"
: Adiciona um comentário para identificar a chave.
Durante o processo, você será solicitado a escolher um local para salvar as chaves (o padrão é geralmente ~/.ssh/id_rsa
) e a definir uma senha para a chave privada (opcional, mas recomendado para maior segurança).
2. Copiar a chave pública para o servidor Ubuntu
Depois de gerar as chaves, você precisa copiar a chave pública para o servidor Ubuntu. Use o comando ssh-copy-id
:
ssh-copy-id usuario@ip_do_servidor
Substitua usuario
pelo seu nome de usuário no servidor e ip_do_servidor
pelo endereço IP ou domínio do servidor.
Se o ssh-copy-id
não estiver disponível, você pode copiar manualmente a chave pública para o arquivo ~/.ssh/authorized_keys
no servidor:
cat ~/.ssh/id_rsa.pub | ssh usuario@ip_do_servidor "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
3. Conectar ao servidor usando a chave SSH
Agora que a chave pública está no servidor, você pode se conectar usando a chave privada:
ssh usuario@ip_do_servidor
Se você configurou uma senha para a chave privada, será solicitado a inseri-la.
Atualização de pacotes
Manter um servidor Ubuntu com os pacotes atualizados é crucial por várias razões, principalmente relacionadas à segurança, estabilidade e desempenho. Aqui estão os principais motivos:
Por que manter os pacotes atualizados?
- Segurança:
- Correção de vulnerabilidades: Atualizações frequentes incluem patches para vulnerabilidades de segurança descobertas recentemente. Se você não atualizar, seu servidor pode ficar exposto a ataques.
- Proteção contra exploits: Muitos ataques exploram falhas conhecidas em softwares desatualizados. Manter os pacotes atualizados reduz o risco de ser vítima desses ataques.
- Estabilidade:
- Correção de bugs: Atualizações também incluem correções para bugs que podem causar instabilidade ou mau funcionamento do sistema.
- Compatibilidade: Novas versões de pacotes podem melhorar a compatibilidade com outros softwares e bibliotecas.
- Desempenho:
- Melhorias de desempenho: Atualizações podem incluir otimizações que melhoram o desempenho do sistema e dos aplicativos.
- Novas funcionalidades: Às vezes, atualizações trazem novas funcionalidades e melhorias que podem ser úteis para o seu servidor.
Para atualizar seu sistema operacional e pacotes instalados execute
sudo apt update && sudo apt upgrade -y
Esse comando vai atualizar os repositórios e atualizar os pacotes caso existam versões mais recentes deles nos repositórios.
Habilitando Atualizações automáticas
No Ubuntu, você pode configurar o sistema para atualizar automaticamente os pacotes usando o pacote unattended-upgrades
. Aqui está como fazer isso:
1. Instalar o pacote unattended-upgrades
Primeiro, instale o pacote unattended-upgrades
se ele ainda não estiver instalado:
sudo apt-get update
sudo apt-get install unattended-upgrades
2. Configure o dpkg para reconfigurar o unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
O comando sudo dpkg-reconfigure --priority=low unattended-upgrades
é usado para reconfigurar o pacote unattended-upgrades
no Ubuntu. Ele abre uma interface interativa que permite ajustar as configurações do pacote de forma mais amigável, especialmente útil para quem prefere não editar arquivos de configuração manualmente.
Configure um firewall
Configurar um firewall no Ubuntu é uma prática essencial para garantir a segurança do seu sistema. Um firewall atua como uma barreira entre o seu servidor e o tráfego de rede externo, controlando o que pode entrar e sair. Aqui estão os principais motivos pelos quais você deve configurar um firewall no Ubuntu:
1. Proteção contra Ataques Externos
- Bloqueio de Portas: Um firewall permite que você bloqueie portas que não estão em uso, reduzindo a superfície de ataque. Muitos ataques exploram portas abertas para ganhar acesso não autorizado ao sistema.
- Prevenção de Exploração de Vulnerabilidades: Ao limitar o acesso a serviços específicos, você reduz o risco de exploração de vulnerabilidades conhecidas nesses serviços.
2. Controle de Tráfego de Rede
- Regras de Acesso: Um firewall permite que você defina regras detalhadas sobre quais tipos de tráfego são permitidos ou bloqueados. Por exemplo, você pode permitir apenas tráfego HTTP/HTTPS para um servidor web.
- Filtragem de Pacotes: O firewall pode filtrar pacotes de rede com base em critérios como endereço IP, porta e protocolo, garantindo que apenas o tráfego legítimo seja permitido.
3. Proteção contra Malware e Ataques de Força Bruta
- Bloqueio de IPs Maliciosos: Um firewall pode ser configurado para bloquear endereços IPs conhecidos por atividades maliciosas, como tentativas de força bruta em serviços SSH.
- Limitação de Taxa de Conexão: Você pode configurar regras para limitar a taxa de conexões por segundo, o que ajuda a mitigar ataques de negação de serviço (DoS) e força bruta.
4. Conformidade com Políticas de Segurança
- Requisitos de Conformidade: Muitas organizações têm políticas de segurança que exigem o uso de firewalls para proteger sistemas e dados sensíveis.
- Auditoria e Monitoramento: Um firewall permite que você registre e monitore o tráfego de rede, o que é útil para auditorias de segurança e investigação de incidentes.
5. Isolamento de Serviços
- Segmentação de Rede: Em ambientes com múltiplos serviços, um firewall pode ser usado para isolar serviços uns dos outros, limitando o impacto de uma possível violação de segurança.
- Controle de Acesso Interno: Além de proteger contra ameaças externas, um firewall pode controlar o tráfego entre diferentes partes da rede interna, garantindo que apenas os serviços necessários possam se comunicar entre si.
Como Configurar um Firewall no Ubuntu
No Ubuntu, uma das ferramentas mais comuns para configurar um firewall é o UFW
(Uncomplicated Firewall), que é uma interface amigável para o iptables
. Aqui estão os passos básicos para configurar o UFW:
1. Instalar o UFW (se não estiver instalado)
sudo apt-get update
sudo apt-get install ufw
2. Habilitar o UFW
sudo ufw enable
3. Configurar Regras Básicas
Permitir tráfego SSH (para garantir que você não seja bloqueado ao se conectar remotamente):
sudo ufw allow ssh
Permitir tráfego HTTP e HTTPS (para um servidor web):
sudo ufw allow http
sudo ufw allow https
4. Verificar o Status do UFW
sudo ufw status verbose
Ataques de força bruta
O Fail2Ban é uma camada extra de segurança que protege seu servidor contra ataques de força bruta e tentativas de login mal-intencionadas. Ele monitora os logs do sistema em busca de atividades suspeitas (como várias tentativas de login falhas) e bloqueia automaticamente os IPs suspeitos usando o firewall do Ubuntu (UFW ou iptables).
Principais Benefícios do Fail2Ban
- Protege contra ataques de força bruta
Se um atacante tentar várias senhas erradas, o Fail2Ban bloqueia o IP por um tempo definido. - Funciona com diversos serviços
Pode proteger SSH, Apache, Nginx, Postfix, MySQL, e outros analisando seus logs. - Reduz carga no servidor
Ataques contínuos podem consumir CPU e rede. O Fail2Ban corta isso ao bloquear IPs maliciosos. - Personalizável
Você pode configurar regras personalizadas, tempo de banimento, número de tentativas permitidas, lista branca de IPs, etc. - Integra-se com firewalls
Ele pode usar UFW, iptables ou firewalld para bloquear IPs automaticamente.
Como instalar e configurar o Fail2Ban no Ubuntu?
Instalar o Fail2Ban
sudo apt update && sudo apt install fail2ban -y
Habilitar proteção para SSH
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
No arquivo, encontre [sshd]
e ajuste as regras, por exemplo:
[sshd]
enabled = true
maxretry = 5 # Número de tentativas antes do ban
bantime = 3600 # Tempo de bloqueio (em segundos)
findtime = 600 # Período para contar tentativas
Reiniciar o Fail2Ban
sudo systemctl restart fail2ban
Verificar IPs bloqueados
sudo fail2ban-client status sshd
Ative logs e monitoramento
O Logwatch é uma ferramenta essencial para monitorar e analisar logs do sistema no Ubuntu. Ele gera relatórios diários automáticos sobre a atividade do servidor, ajudando a identificar problemas de segurança, falhas no sistema e tentativas de ataque.
Por que usar o Logwatch?
- Monitoramento centralizado
Ele analisa logs de diversos serviços como SSH, Apache, Nginx, MySQL, Postfix, Fail2Ban, UFW e outros - Alertas sobre atividades suspeitas
Detecta tentativas de login falhas, ataques de força bruta, erros críticos e acessos suspeitos. - Facilita a manutenção e diagnóstico
Reduz a necessidade de verificar logs manualmente, pois gera resumos claros e organizados. - Envia relatórios por e-mail
Pode ser configurado para enviar relatórios diários diretamente para seu e-mail. - Personalizável
Você pode definir quais logs quer monitorar e qual nível de detalhe quer nos relatórios.
Como instalar e configurar o Logwatch no Ubuntu?
Instalar o Logwatch
sudo apt update && sudo apt install logwatch -y
Gerar um relatório manualmente
sudo logwatch --detail high --mailto seu@email.com --output mail
Esse comando gera um relatório detalhado e envia para seu e-mail.
Configurar execução diária (opcional, mas recomendado)
Edite o cron para rodar automaticamente:
sudo nano /etc/cron.daily/00logwatch
Adicione:
#!/bin/bash
/usr/sbin/logwatch --output mail --mailto seu@email.com --detail high
Depois, torne o script executável:
sudo chmod +x /etc/cron.daily/00logwatch
Instale ferramentas anti-malware
O ClamAV é um antivírus de código aberto muito usado para escanear arquivos e detectar malwares em servidores Linux, incluindo o Ubuntu. Ele é útil especialmente se você estiver hospedando uploads de usuários ou quiser verificar seu sistema periodicamente contra ameaças.
Por que usar o ClamAV no Ubuntu?
- Proteção contra malwares e vírus
Detecta arquivos infectados no sistema. - Escaneia uploads de usuários
Ideal para servidores que aceitam arquivos. - Baixo impacto no desempenho
Não consome muitos recursos quando configurado corretamente. - Atualizações regulares
Mantém sua base de dados de vírus sempre atualizada.
Como instalar o ClamAV no Ubuntu
Atualize os pacotes do sistema
sudo apt update && sudo apt upgrade -y
Instale o ClamAV e o daemon ClamAV
sudo apt install clamav clamav-daemon -y
Atualize a base de dados de vírus\
Antes de usar, você precisa baixar as definições de vírus mais recentes:
sudo systemctl stop clamav-freshclam
sudo freshclam
Depois, reinicie o serviço para manter as definições sempre atualizadas:
sudo systemctl start clamav-freshclam
Como usar o ClamAV para escanear arquivos?
Escanear um diretório inteiro:
clamscan -r /caminho/do/diretorio
Escanear e remover arquivos infectados:
clamscan -r --remove /caminho/do/diretorio
Cuidado: Isso apaga os arquivos infectados. Se quiser apenas movê-los, use --move /pasta/de/quarentena
.
Escanear apenas e exibir os infectados:
clamscan -r --infected /caminho/do/diretorio
Escanear todo o sistema (pode demorar):
sudo clamscan -r --bell -i /
-r
= Escaneia recursivamente.--bell
= Emite um som quando um vírus for encontrado.-i
= Mostra apenas arquivos infectados.
Automatizar Escaneamento com o ClamAV
Se quiser que o ClamAV rode automaticamente todos os dias, crie um cron job:
sudo nano /etc/cron.daily/clamscan
Adicione:
#!/bin/bash
clamscan -r /home --quiet --infected --log=/var/log/clamav.log
Depois, torne o script executável:
sudo chmod +x /etc/cron.daily/clamscan
Auditoria de Segurança
O Lynis é uma ferramenta de auditoria de segurança para sistemas Linux, macOS e Unix. Ele analisa vulnerabilidades, configurações fracas e possíveis brechas no seu servidor, fornecendo recomendações para melhorar a segurança.
Por que usar o Lynis no Ubuntu?
- Auditoria de segurança automatizada
Verifica mais de 300 pontos no sistema. - Detecta configurações fracas
Avalia permissões, firewall, autenticação, etc. - Ajuda na conformidade
Útil para normas como PCI-DSS, ISO 27001, NIST. - Leve e sem impacto no desempenho
Não precisa rodar constantemente.
Como instalar o Lynis no Ubuntu?
Baixar e instalar o Lynis
O Lynis pode ser instalado via repositório oficial.
sudo apt update && sudo apt install lynis -y
Como usar o Lynis para auditar o sistema?
Rodar um escaneamento completo
sudo lynis audit system
O que esse comando faz?
- Analisa configurações do kernel
- Verifica serviços rodando
- Avalia firewall e autenticação
- Exibe relatório de segurança com pontuação
Outros comandos úteis
Verificar apenas segurança do sistema:
sudo lynis audit security
Ver logs da última auditoria:
sudo cat /var/log/lynis.log
Ver recomendações após a auditoria:
sudo lynis show suggestions
Rootkits
O Chkrootkit é uma ferramenta de segurança para Linux que verifica a presença de rootkits, que são tipos de malwares que se escondem no sistema para obter acesso privilegiado sem serem detectados. Ele analisa arquivos e processos suspeitos, ajudando a identificar possíveis infecções.
Por que usar o Chkrootkit no Ubuntu?
- Detecta rootkits e backdoors
Verifica arquivos do sistema em busca de alterações suspeitas. - Leve e rápido
Pode ser rodado sem impactar o desempenho do servidor. - Fácil de usar
Basta rodar um comando para escanear o sistema. - Complementar a outras ferramentas
Pode ser usado junto com o ClamAV e Lynis para uma proteção mais completa.
Como instalar o Chkrootkit no Ubuntu?
Atualize o sistema
sudo apt update && sudo apt upgrade -y
Instale o Chkrootkit
sudo apt install chkrootkit -y
Como usar o Chkrootkit para escanear rootkits?
Rodar uma verificação completa no sistema:
sudo chkrootkit
O comando verifica diversos arquivos e exibe o resultado no terminal.
Verificar apenas rootkits específicos:
sudo chkrootkit | grep INFECTED
Isso exibe apenas os arquivos infectados, facilitando a leitura.
Verificar processos ocultos suspeitos:
sudo chkrootkit -p
Escanear um diretório específico:
sudo chkrootkit -r /caminho/desejado
Conclusão
Com esse passo a passo você consegue configurar um servidor ubuntu com uma segurança a mais para rodar suas aplicações ou até mesmo para os seus clientes!
Qualquer dúvida pode deixar aqui nos comentários!
Links
Enterprise Open Source and Linux | Ubuntu
O que é SSH | Protocolo Secure Shell | Cloudflare
Fundamentos do UFW: regras e comandos comuns de firewall
fail2ban/fail2ban: Daemon to ban hosts that cause multiple authentication errors
Usando Logwatch para monitoramento básico de segurança no Linux
Lynis – Security auditing tool for Linux, macOS, and Unix-based systems – CISOfy