Logo UFPR Logo Licenciatura em Computação

CÓDIGO DA DISCIPLINA: DEE345

SEGURANÇA DIGITAL - Aula 9

Professor Jéfer Benedett Dörr

Prof. Jéfer Benedett Dörr

Departamento de Engenharias e Exatas - UFPR/Palotina

Docente de Segurança da Informação

Aula 9: Hardening de Sistemas e Segurança de Acesso Remoto

Objetivos de Aprendizagem

1. Hardening de Sistemas: Conceito e Importância

Hardening reduz a superfície de ataque, essencial para conformidade com LGPD, PNSI e ISO 27001/27002.

Visa proteger o “elo mais fraco” — o usuário ou configurações padrão inseguras — e garantir conformidade com ISO 27001/27002.

Nota: O ataque à Sabesp (2024). https://g1.globo.com/sp/sao-paulo/noticia/2024/10/22/sabesp-e-alvo-de-ataque-cibernetico-e-registra-instabilidade-na-rede-digital.ghtml

Prática: Configure Wazuh em uma VM Ubuntu para monitorar logs. Escaneie /etc com ClamAV usando arquivo EICAR.

Configuração Wazuh + ClamAV em Ubuntu

Objetivo: Monitorar logs com Wazuh e testar detecção de malware com arquivo EICAR.

1. Instalação do Wazuh (Servidor)

  1. Adicione o repositório: curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | sudo gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import && sudo chmod 644 /usr/share/keyrings/wazuh.gpg
  2. Instale o Wazuh: echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" | sudo tee -a /etc/apt/sources.list.d/wazuh.list sudo apt update && sudo apt install wazuh-manager

2. Configuração do Agente Wazuh

  1. Instale o agente: sudo apt install wazuh-agent
  2. Registre no servidor: sudo /var/ossec/bin/agent-auth -m IP_DO_SERVIDOR
  3. Inicie o serviço: sudo systemctl start wazuh-agent

3. Teste com ClamAV e EICAR

  1. Instale o ClamAV: sudo apt install clamav clamav-daemon
  2. Crie arquivo de teste EICAR: echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/eicar.txt
  3. Execute a verificação: clamscan --infected --recursive /etc/

4. Verificação no Wazuh

  1. Acesse a interface web: http://IP_DO_SERVIDOR:55000
  2. Verifique os alertas em:
    • Security Events → ClamAV
    • Integrity Monitoring → /etc
Resultado esperado: O Wazuh deve gerar alertas sobre a detecção do EICAR e alterações em /etc.

2. Hardening de SSH

SSH seguro protege acessos remotos, essencial para LGPD e PNSI.

2.1 Alterar porta padrão


# /etc/ssh/sshd_config
Port 5849
# comente ou remova a linha 'Port 22'
  
sudo systemctl restart sshd

2.2 Bloquear acesso root


# /etc/ssh/sshd_config
PermitRootLogin no
  

Isso impede logins diretos como root, forçando uso de contas menos privilegiadas + sudo.

sudo systemctl restart sshd

2.3 Proteção contra força bruta com fail2ban

O Fail2ban monitora logs de serviços e bane automaticamente IPs que apresentam comportamento malicioso, como múltiplas tentativas de login com falha.

Instale e configure /etc/fail2ban/jail.local:


# /etc/fail2ban/jail.local
[sshd]
enabled   = true
port      = 5849
filter    = sshd
logpath   = /var/log/auth.log
maxretry  = 5
bantime   = 3600
ignoreip  = 192.168.0.0/24
  

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

# SSHGuard alternativo
sshguard -l /var/log/auth.log
  

2.4 Port Knocking


# /etc/knockd.conf
[options]
    logfile = /var/log/knockd.log

[openSSH]
    sequence    = 7000,8000,9000
    seq_timeout = 5
    command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

[closeSSH]
    sequence    = 9000,8000,7000
    command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
  
knock 192.168.0.155 7000:tcp 8000:tcp 9000:tcp

Ferramentas

Prática: Configure SSH em uma VM com porta 5849, bloqueio de root, Fail2ban e port knocking. Use ssh-audit para validar segurança.

3. Segurança no Terminal


# /etc/profile ou /etc/bash.bashrc
TMOUT=180
readonly TMOUT
export TMOUT

# Tmux
tmux set -g lock-after-time 180
# Screen
screen -L -Logfile /var/log/screen.log
  

Fechará a sessão após 180 segundos de inatividade.

Ferramentas

Prática: Configure TMOUT=180 e Tmux com bloqueio em uma VM. Use Screen para registrar comandos e analise logs.

4. Ferramentas Essenciais de Hardening

Prática: Escaneie uma VM com Rkhunter e Lynis. Configure SELinux em modo enforcing e ajuste portas SSH.

5. Hardening em Windows

Minicurso de referência: Hardening Windows – Prof. Peter Lopes

6. Hardening Avançado e Ferramentas Complementares

6.1 Kernel Hardening via sysctl


# /etc/sysctl.d/99-hardening.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
fs.suid_dumpable = 0
  
sudo sysctl --system

6.2 HIDS – auditd & AIDE


# auditd para monitorar sshd_config
sudo apt install auditd
sudo auditctl -w /etc/ssh/sshd_config -p wa -k ssh_cfg_changes

# AIDE para verificar integridade
sudo apt install aide
sudo aideinit
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
sudo aide --check

# Tripwire
tripwire --init; tripwire --check

# OSSEC
ossec-control start
  

6.3 OSQuery


# Exemplo de consulta SQL
osqueryi "SELECT name, path FROM kernel_modules WHERE path LIKE '%ssh%';"
  

6.4 Firewall com nftables


sudo apt install nftables
cat <

# Nftables
nft add rule inet filter input tcp dport 5849 limit rate 5/second accept
# UFW
sudo ufw allow 58472/tcp comment 'SSH custom port'
sudo ufw enable
  

6.5 Alternativa com UFW


sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 5849/tcp comment 'SSH custom port'
sudo ufw enable
  

Ferramentas

Prática: Configure Tripwire e OSSEC em uma VM. Implemente Nftables com rate-limiting para SSH.

Proxies, Filtragem e Relatórios

Uso de ferramentas para gerenciar acesso à internet: Squid (proxy HTTP), SquidGuard (filtragem de URLs), sarg (relatórios de acesso), e DansGuardian (filtro de conteúdo). Essas soluções são comuns em redes corporativas e educacionais para controle de navegação, segurança, e monitoramento. Abaixo, detalho cada ferramenta com exemplos práticos, saídas, e cenários educacionais.

Aviso Ético: Configure proxies e filtros apenas em redes autorizadas. Monitorar acessos sem consentimento viola a LGPD (Lei nº 13.709/2018) e políticas de privacidade.

1. Squid + SquidGuard

Visão Geral

Squid é um proxy HTTP de alto desempenho que armazena em cache e controla requisições web. SquidGuard é um plugin que filtra URLs com base em blacklists, bloqueando categorias como pornografia, redes sociais, ou malwares.

Pré-requisitos

  • Debian/Ubuntu (ex.: VM com Kali/Parrot).
  • Permissões de root.
  • Conexão à internet para baixar pacotes e blacklists.

Cenário

Você é um administrador de rede em um laboratório educacional (rede 192.168.1.0/24). Configure um proxy Squid com SquidGuard para bloquear sites de redes sociais em uma máquina (192.168.1.100).

Passos Detalhados

  1. Instalar Squid e SquidGuard:
    sudo apt-get update
    sudo apt-get install squid squidguard

    Saída Esperada: Pacotes instalados sem erros.

    Explicação: Instala o Squid (proxy) e SquidGuard (filtro).

  2. Baixar Blacklist:

    Crie o diretório para blacklists e baixe a Shallalist:

    sudo mkdir -p /etc/squidguard/db
    cd /etc/squidguard/db
    sudo wget https://www.shallalist.de/Downloads/shallalist.tar.gz
    sudo tar xzf shallalist.tar.gz

    Saída Esperada:

    BL/socialnet/domains
    BL/socialnet/urls
              

    Explicação: A Shallalist contém listas de domínios/URLs por categoria (ex.: socialnet para redes sociais).

  3. Configurar SquidGuard:

    Crie um arquivo de configuração básico:

    cat > /etc/squidguard/squidGuard.conf <

    Explicação: Bloqueia a categoria `socialnet` (ex.: facebook.com). `pass none` nega tudo por padrão, exceto o que for explicitamente permitido.

  4. Integrar com Squid:

    Edite `/etc/squid/squid.conf`:

    echo "url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf" | sudo tee -a /etc/squid/squid.conf

    Explicação: Direciona requisições do Squid para o SquidGuard.

  5. Reiniciar Serviços:
    sudo squidguard -C all
    sudo systemctl restart squid

    Saída Esperada: Serviços reiniciados sem erros.

    Explicação: `squidguard -C all` compila blacklists. O Squid reinicia para aplicar mudanças.

  6. Testar Proxy:

    Configure um cliente (ex.: navegador em 192.168.1.10) para usar o proxy (192.168.1.100:3128). Acesse `facebook.com`.

    Saída Esperada:

    Access Denied: Site blocked by SquidGuard (socialnet)

    Verifique logs:

    tail -f /var/log/squid/access.log

    Saída Esperada:

    1623456789.123 192.168.1.10 TCP_DENIED/403 0 CONNECT facebook.com:443 - HIER_NONE/- -
              

    Explicação: Confirma que o acesso foi bloqueado.

Comandos Adicionais

Testar com curl:

curl -x http://192.168.1.100:3128 http://facebook.com

Saída Esperada:

403 Forbidden: Access denied by SquidGuard

Monitorar em tempo real:

tail -f /var/log/squidguard/squidGuard.log

Saída Esperada:

2025-06-12 10:15:00 [192.168.1.10] facebook.com blocked (socialnet)
      

Dicas Acadêmicas

  • Documentação: Salve logs e capturas de tela do bloqueio para relatórios.
  • Laboratório: Configure VMs (Kali como proxy, Ubuntu como cliente) em VirtualBox.
  • Blacklists: Explore alternativas como UT1 ou OpenDNS.
  • Automação: Script para atualizar blacklists:
    #!/bin/bash
    cd /etc/squidguard/db
    sudo wget -O shallalist.tar.gz https://www.shallalist.de/Downloads/shallalist.tar.gz
    sudo tar xzf shallalist.tar.gz
    sudo squidguard -C all
    sudo systemctl restart squid
            

2. sarg (Squid Analysis Report Generator)

Visão Geral

sarg gera relatórios HTML a partir dos logs do Squid, detalhando consumo de banda, sites acessados, e padrões de navegação.

Cenário

Você precisa gerar um relatório semanal de navegação para identificar os sites mais acessados na rede do laboratório.

Passos Detalhados

  1. Instalar sarg:
    sudo apt-get install sarg

    Saída Esperada: Pacote instalado.

  2. Configurar sarg:

    Edite `/etc/sarg/sarg.conf`:

    sudo nano /etc/sarg/sarg.conf

    Defina:

    access_log /var/log/squid/access.log
    output_dir /var/www/html/squid-reports

    Explicação: Especifica o log do Squid e o diretório de relatórios (acessível via navegador).

  3. Gerar Relatório:

    Para o dia anterior:

    sudo sarg -o /var/www/html/squid-reports

    Saída Esperada:

    SARG: Records in file: 1234, reading: 100.00%
    Report generated in /var/www/html/squid-reports
              

    Acesse `http://192.168.1.100/squid-reports` no navegador.

    Saída Esperada:

    HTML Report:
    - Top sites: www.google.com (50MB), www.youtube.com (30MB)
    - User 192.168.1.10: 80MB downloaded
              
  4. Relatórios Periódicos:

    Agende via cron:

    sudo crontab -e

    Adicione:

    0 0 * * * /usr/bin/sarg -o /var/www/html/squid-reports

    Explicação: Gera relatórios diários à meia-noite.

Comandos Adicionais

Verificar logs brutos:

tail -f /var/log/squid/access.log

Saída Esperada:

1623456789.123 192.168.1.10 TCP_MISS/200 123456 GET http://www.google.com -
      

Gerar relatório para um período específico:

sarg -o /var/www/html/squid-reports -d 2025-06-01/2025-06-07

Dicas Acadêmicas

  • Visualização: Hospede relatórios em um servidor Apache (`sudo apt install apache2`) para acesso via navegador.
  • Análise: Use relatórios para identificar abusos (ex.: streaming excessivo).
  • Documentação: Inclua capturas de tela dos relatórios em relatórios acadêmicos.

3. DansGuardian

Visão Geral

DansGuardian é um filtro de conteúdo que analisa URLs, frases, e padrões de texto, funcionando com o Squid para bloquear páginas indevidas.

Cenário

Você precisa bloquear sites com conteúdo sensível (ex.: palavras-chave proibidas) em uma rede escolar.

Passos Detalhados

  1. Instalar DansGuardian:
    sudo apt-get install dansguardian

    Saída Esperada: Pacote instalado.

  2. Configurar DansGuardian:

    Edite `/etc/dansguardian/dansguardian.conf`:

    sudo nano /etc/dansguardian/dansguardian.conf

    Ajuste:

    filterport = 8080
    proxyip = 192.168.1.100
    proxyport = 3128

    Explicação: Define a porta do DansGuardian (8080) e conecta ao Squid (3128).

  3. Configurar Filtros:

    Adicione palavras proibidas:

    sudo nano /etc/dansguardian/lists/bannedphraselist

    Exemplo:

    violence
    gambling

    Adicione URLs proibidas:

    sudo nano /etc/dansguardian/lists/bannedurllist

    Exemplo:

    casino.com
  4. Modo Transparente:

    Redirecione tráfego HTTP para o DansGuardian:

    sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

    Explicação: Intercepta requisições HTTP automaticamente.

  5. Reiniciar Serviço:
    sudo systemctl restart dansguardian

    Saída Esperada: Serviço reiniciado.

  6. Testar Filtro:

    Acesse um site proibido (ex.: `casino.com`) ou busque “gambling” no Google.

    Saída Esperada:

    Access Denied: Content blocked by DansGuardian

    Verifique logs:

    tail -f /var/log/dansguardian/access.log

    Saída Esperada:

    2025-06-12 10:15:00 192.168.1.10 DENIED casino.com (bannedurllist)
              

Comandos Adicionais

Salvar regras iptables:

sudo iptables-save > /etc/iptables/rules.v4

Testar com curl:

curl -x http://192.168.1.100:8080 http://casino.com

Saída Esperada:

403 Forbidden: Blocked by DansGuardian

Dicas Acadêmicas

  • Personalização: Ajuste listas de frases para contextos específicos (ex.: termos acadêmicos).
  • Laboratório: Teste com Squid e DansGuardian em VMs separadas.
  • Documentação: Registre configurações e logs para relatórios.

4. Diagrama Interativo: Fluxo de Proxy e Filtragem

Ilustração do tráfego web passando pelo proxy e filtros:

Cliente Squid SquidGuard DansGuardian Internet Requisição Filtragem URL Filtragem Conteúdo

Explicação: O cliente envia no Squid, que passa pelos filtros SquidGuard e DansGuardian antes de acessar a internet. Relatórios são gerados pelo sarg.

5. Conclusão

  • Squid: Proxy robusto para caching, essencial para redes corporativas.
  • SquidGuard: Filtragem de URLs baseada em blacklists, ideal para controle de acesso.
  • sarg: Relatórios visuais para monitoramento de navegação.
  • DansGuardian: Filtragem avançada de conteúdo, complementando o SquidGuard.

Alunos devem praticar em laboratórios, documentar configurações (ex.: logs, relatórios HTML), configurações e explorar alternativas modernas como Zabbix para monitoramento. A ética é crucial: respeite as leis de privacidade e obtenha políticas antes de monitorar acessos.

Recursos Adicionais:

Lembrete: Monitoramento de rede pode ser detectado por usuários ou sistemas de segurança. Configure com notificações claras de monitoramento.

Quiz de Avaliação – Aula 9

1. Para alterar a porta padrão do SSH para 5849, qual linha deve ser ajustada em /etc/ssh/sshd_config?

2. Qual parâmetro do fail2ban define quantas tentativas de login são permitidas antes do ban?

3. Qual comando UFW habilita o firewall e nega todas as conexões de entrada por padrão?

4. Em /etc/sysctl.d/99-hardening.conf, qual parâmetro desativa o IP forwarding?

5. Qual ferramenta de integridade de arquivos utiliza um banco de dados inicial e depois verifica alterações?

6. Qual comando define que o shell encerrará a sessão após 3 minutos de inatividade?

7. Qual utilitário permite consultar estado do SELinux e habilitar o modo enforcement?

8. Qual comando nftables adiciona regra para aceitar novas conexões SSH na porta 5849?