por Michael McMahon — Publicado em 05 de dezembro de 2024, às 16h39
Colaboradores: Equipe SysOps da FSF
O texto a seguir foi inteiramente traduzido pelo Google Tradutor. O texto original (escrito em inglês) está acessível em <https://www.fsf.org/bulletin/2024/fall/fsf-sysops-cleaning-up-the-internet>.
Alguns dos nossos incidentes mais graves aconteceram em 2016 com um serviço terceirizado de mitigação de DDoS, envolvendo até mesmo o FBI. Não vou escrever sobre os detalhes dos nossos incidentes recentes ou em andamento, pois não quero ajudar ninguém que esteja nos atacando ativamente neste momento. O que posso mencionar, no entanto, é que um dos ataques recentes, ocorrido nos últimos meses, exigiu o bloqueio de mais de 40.000 endereços IP para um ataque DDoS. Também posso compartilhar algumas das ferramentas que usamos semanalmente para investigar ataques, que estão um pouco simplificadas para este artigo, mas que esperamos que sejam úteis para outros administradores de sistemas:
Monitoramento
Com ferramentas como Prometheus e Uptime Kuma, podemos ser alertados quando um serviço cai ou quando o tempo de resposta aumenta. Um padrão de alertas pode indicar a necessidade de uma investigação.
Analisando logs
Os logs do serviço afetado geralmente contam uma história, mas é difícil ler os logs linha por linha. Os logs podem ser analisados usando variações de utilitários clássicos, como Bash, cat, zcat, grep, egrep, awk, sed, sort, uniq e tail. Normalmente, encontro os dez principais endereços IP que se comunicam com um serviço e, em seguida, procuro os três principais agentes de usuário usados por esse endereço e uma amostra do que eles estão acessando.
Encontrando padrões
Você provavelmente notará tráfego estranho examinando arquivos de log de qualquer site disponível publicamente. Se um rastreador normal estiver acessando 1.000 páginas, é provável que algo esteja errado quando outro endereço tiver mais de 30.000 linhas no log. Exemplos reais de quando algo está errado incluem: procurar continuamente por páginas específicas do WordPress e o site não estiver usando WordPress; alegar ser o Googlebot e seu host não resolver como Google; não seguir o arquivo robots.txt; se o agente de usuário for um navegador de desktop padrão e eles estiverem gerando milhares de linhas de log; se uma string do agente de usuário estiver vazia; ou se eles solicitarem páginas várias vezes por segundo.
Pesquisando ASNs
Usamos o IPtoASN para fornecer tabelas atualizadas de números de sistema autônomo (ASNs) sem custo. É o único que encontramos que envolve o download de um banco de dados local que pode ser consultado. ASN é um número de identificação que representa um conjunto de endereços pertencentes a uma operadora de rede. Assim que tivermos uma tabela de ASNs local, consultamos a tabela com os endereços considerados questionáveis para obter uma melhor compreensão em escala macro. Adicionar essas informações, bem como o comportamento às regras de firewall, nos ajuda a procurar padrões ao longo do tempo.
Bloqueio
Usamos uma variedade de firewalls para impedir que endereços cheguem aos nossos servidores antes de reiniciar o serviço afetado. Podemos precisar bloquear endereços individuais, endereços CIDR, provedores VPS ou até mesmo ASNs inteiros. Quando bloquear um endereço ou um bloco de endereços não for suficiente, regras podem ser escritas para procurar padrões de comportamento com ferramentas como o fail2ban. O exemplo de regra padrão quando o fail2ban é instalado é bloquear temporariamente um endereço IP após três tentativas de SSH com falha. As regras do Fail2ban podem ser escritas para corresponder aos padrões em qualquer arquivo de log. Ao escrever regras de fail2ban, esteja ciente de que pode ser fácil escrever regras muito agressivas, o que pode causar uma negação de serviço. Embora os padrões do fail2ban sejam sensatos, você pode observar os logs do fail2ban com atenção e ajustar as configurações para evitar o bloqueio de tráfego válido. É importante encontrar um bom equilíbrio com as regras do fail2ban.
Relatórios de abuso
Às vezes, o bloqueio não é suficiente para prevenir ou interromper o abuso persistente. Esse abuso pode ser denunciado a empresas de hospedagem e Provedores de Serviços de Internet (ISPs). Às vezes, os IPSs fornecem uma página para denunciar abusos, mas essa página pode usar JavaScript não livre. Geralmente, podemos contornar o uso de JavaScript não livre em casos como esses enviando um e-mail com uma descrição do abuso, um trecho do log e o comportamento esperado para abuse@theirdomain.com. Muitos relatórios de abuso não são respondidos, mas quando respondem, pode valer a pena.
Vemos três tipos de atividade de abuso com mais frequência em nossos servidores web. Várias organizações se dedicam à varredura de vulnerabilidades, um abuso que varre ativamente a Internet o tempo todo, na maioria das vezes que podem ser bloqueados com firewalls no nível do roteador. Outro tipo de scanner que pode ser persistente são os programas escritos para pesquisar sites inteiros, ou rastreadores de sites. A maioria dos programas rastreadores é gentil com os servidores que rastreiam, mas o mesmo não pode ser dito daqueles que ignoram os arquivos robots.txt, rastreiam muito rápido e derrubam sites, especialmente aqueles escritos por grandes empresas de modelos de linguagem. Também vemos alguma automação de integração contínua, que rastreia constantemente sites em busca de alterações, como as em nossas páginas de licenciamento.
Diferentes tecnologias
Por vários motivos, o tráfego da Internet que entra e sai de alguns locais, como a República Popular da China, se comporta de maneira diferente de qualquer outro lugar do mundo. Isso pode ter a ver com o Grande Firewall da China, NAT de nível de operadora e roteamento. Muitos comportamentos diferentes podem ser observados simultaneamente vindos dos mesmos endereços IP que se conectam a ASNs chineses. Como há tráfego bom misturado com tráfego ruim vindo dos mesmos endereços, ferramentas tradicionais como fail2ban e firewalls interrompem a funcionalidade. Se eu criar uma regra fail2ban para bloquear comportamentos nefastos vistos em um endereço chinês, também bloquearei o tráfego legítimo que tenta usar o mesmo endereço IP. Recentemente, comecei a usar um firewall de aplicação web chamado Modsecurity, que permite a modelagem de tráfego por agente de usuário em vez de apenas por endereço IP. Atualmente, estamos limitando a taxa de alguns agentes de usuário, mas planejamos adicionar mais configurações no futuro.
O que você pode fazer para ajudar?
Administrar nossos recursos minimalistas, conservar nossa computação e otimizar nossos recursos financeiros exige muito tempo e esforço. Mesmo com todas as ferramentas que usamos para investigar e bloquear ataques, estamos sempre buscando mais ajuda e listamos muitas maneiras de se voluntariar em fsf.org/volunteer. A melhor maneira de demonstrar apoio de longo prazo à equipe de SysOps da FSF, e à FSF como um todo, é se tornar um membro associado da FSF.