Lynis: auditoria de segurança e hardening do VPS

    Lynis é um scanner de segurança open-source que avalia centenas de controles de segurança no seu sistema Linux — configurações do kernel, permissões de arquivos, serviços desnecessários, configurações de rede e muito mais. Gera um relatório com score e recomendações priorizadas, tornando o hardening sistemático em vez de ad-hoc.

    Instalação e primeiro audit

    Instalar Lynis e executar auditoria completa do sistema:

    bash
    # Instalar Lynis (repositório oficial para versão mais recente):
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C80E383C3DE9F082
    echo "deb https://packages.cisofy.com/community/lynis/deb/ stable main" |   sudo tee /etc/apt/sources.list.d/cisofy-lynis.list
    sudo apt update && sudo apt install lynis
    
    # Ou instalar versão do Ubuntu (pode ser mais antiga):
    sudo apt install lynis
    
    # Executar auditoria completa do sistema:
    sudo lynis audit system
    
    # Modo não-interativo (para automação):
    sudo lynis audit system --quick
    
    # Auditoria com perfil customizado:
    sudo lynis audit system --profile /etc/lynis/custom.prf
    
    # O relatório é salvo em:
    # /var/log/lynis.log         → log detalhado de cada verificação
    # /var/log/lynis-report.dat  → dados do relatório em formato de chave=valor

    Interpretar o relatório do Lynis

    Entender o score e as recomendações:

    bash
    # Ao final do scan, o Lynis mostra:
    # Hardening index: 67 [#############       ]
    # Tests performed: 248
    # Plugins enabled: 1
    
    # Categorias de resultado:
    # [OK]      → verificação passou
    # [WARNING] → problema que precisa de atenção
    # [SUGGEST] → melhoria recomendada mas não crítica
    
    # Extrair warnings do log:
    sudo grep "Warning" /var/log/lynis.log | head -30
    
    # Extrair sugestões de hardening:
    sudo grep "[suggestion]" /var/log/lynis-report.dat
    
    # Extrair dados do relatório para análise:
    sudo grep "hardening_index" /var/log/lynis-report.dat
    
    # Ver o que foi verificado por categoria:
    sudo grep "^[" /var/log/lynis.log | grep -c "OK"      # quantos passou
    sudo grep "^[" /var/log/lynis.log | grep -c "WARNING" # quantos falhou
    
    # Warnings típicos e o que significam:
    # "SSH: PermitRootLogin is set to yes" → desabilitar root login
    # "No firewall active" → ativar UFW
    # "Found some information disclosure in SMTP banner" → ocultar versão do mail server
    # "PHP exposing version info" → php.ini: expose_php = Off

    Implementar as recomendações do Lynis

    Correções para os warnings mais comuns:

    bash
    # Warnings comuns e como corrigir:
    
    # 1. Parâmetros de kernel (sysctl):
    sudo tee /etc/sysctl.d/99-hardening.conf << 'EOF'
    # Proteção contra ataques de rede:
    net.ipv4.tcp_syncookies = 1          # proteção SYN flood
    net.ipv4.conf.all.rp_filter = 1      # filtro de pacotes spoofed
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.all.accept_redirects = 0   # não aceitar redirects ICMP
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.all.accept_source_route = 0
    net.ipv4.icmp_echo_ignore_broadcasts = 1  # ignorar broadcast ping
    
    # Proteção de memória:
    kernel.randomize_va_space = 2        # ASLR habilitado
    kernel.dmesg_restrict = 1            # restringir dmesg a root
    kernel.kptr_restrict = 2             # ocultar ponteiros do kernel
    
    # Proteção IPv6:
    net.ipv6.conf.all.accept_redirects = 0
    net.ipv6.conf.default.accept_redirects = 0
    EOF
    sudo sysctl --system
    
    # 2. Desabilitar serviços desnecessários:
    sudo systemctl disable avahi-daemon   # mDNS — desnecessário em VPS
    sudo systemctl disable cups           # sistema de impressão
    sudo systemctl disable bluetooth      # Bluetooth
    sudo systemctl stop avahi-daemon cups bluetooth 2>/dev/null
    
    # 3. Configurar umask mais restritivo:
    echo "umask 027" | sudo tee -a /etc/profile  # 750 por padrão (antes era 022)
    
    # 4. Restringir compiladores (evitar compilação após comprometimento):
    sudo chmod o-rx /usr/bin/gcc /usr/bin/cc /usr/bin/make 2>/dev/null || true

    Perfil customizado do Lynis

    Criar perfil para ignorar checks irrelevantes ao seu ambiente:

    bash
    # /etc/lynis/custom.prf — customizar verificações:
    sudo tee /etc/lynis/custom.prf << 'EOF'
    # Ignorar verificações não aplicáveis ao ambiente:
    
    # VPS não tem impressora — desabilitar check de CUPS:
    skip-test=PRNT-2307
    
    # Ambiente de containers — pular alguns checks de kernel:
    skip-test=KRNL-5820
    
    # Banco de dados não está neste servidor — pular checks de MySQL:
    skip-test=DBS-1816
    skip-test=DBS-1818
    
    # Ajustar threshold de score:
    minimum-package-manager-answer=5
    
    # Definir perfil de compliance:
    # compliance=hipaa  # ou: pci-dss, iso27001
    
    # Notificação por email ao encontrar warnings:
    # log-tests-with-wrong-phase=yes
    EOF
    
    # Executar com o perfil customizado:
    sudo lynis audit system --profile /etc/lynis/custom.prf --quick
    
    # Comparar score ao longo do tempo:
    # Armazenar score diário:
    sudo grep "hardening_index" /var/log/lynis-report.dat >> /var/log/lynis-scores.log
    echo "$(date '+%Y-%m-%d') $(sudo grep hardening_index /var/log/lynis-report.dat | cut -d= -f2)" >> /var/log/lynis-scores.log

    Integrar Lynis em pipeline CI/CD

    Executar auditoria de segurança automaticamente em servidor de staging:

    bash
    # .github/workflows/security-audit.yml:
    name: Security Audit
    
    on:
      schedule:
        - cron: '0 2 * * 1'  # toda segunda-feira às 2h
      workflow_dispatch:
    
    jobs:
      lynis:
        runs-on: ubuntu-latest
        steps:
          - name: Install Lynis
            run: sudo apt-get install -y lynis
    
          - name: Run Lynis audit
            run: |
              sudo lynis audit system --quick --no-colors 2>&1 | tee lynis-output.txt
              SCORE=$(grep "Hardening index" lynis-output.txt | grep -oP 'd+(?= [)')
              echo "LYNIS_SCORE=$SCORE" >> $GITHUB_ENV
    
          - name: Check minimum score
            run: |
              if [ "$LYNIS_SCORE" -lt 70 ]; then
                echo "❌ Score de hardening ($LYNIS_SCORE) abaixo do mínimo (70)"
                exit 1
              fi
              echo "✅ Score de hardening: $LYNIS_SCORE"
    
          - name: Upload report
            uses: actions/upload-artifact@v4
            with:
              name: lynis-report
              path: lynis-output.txt
    
    # Script para execução no VPS de staging:
    sudo lynis audit system --quick 2>/dev/null &&   sudo grep "hardening_index" /var/log/lynis-report.dat

    $ runstack deploy --plan starter

    Não quer configurar manualmente?

    Não quer configurar manualmente? Implante o VPS Linux em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.

    Perguntas frequentes