Ir ao conteúdo

Como deixar sua VPS Ubuntu mais segura

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?

  1. 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.
  2. 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.
  3. 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

ClamAVNet

Lynis – Security auditing tool for Linux, macOS, and Unix-based systems – CISOfy

chkrootkit — locally checks for signs of a rootkit

Publicado emProgramação