Pesquise...

Últimos Posts

Arquivo de Posts

2026 - 2025 - 2024 - 2023 - 2022 - 2021 - 2020 - 2019 - 2018 - 2017 - 2016 - 2015 - 2014 - 2013 - 2012

Postagens Populares

Vem Comigo

     
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Tecnologia do Blogger.

Total de Acessos

Mostrando postagens com marcador fail2ban. Mostrar todas as postagens
Mostrando postagens com marcador fail2ban. Mostrar todas as postagens


Saudações,

Recentemente ao verificar os logs de um servidor web, eu notei uma quantidade excessiva de erros 403 e 404.

Na verdade o erro 403 até que não tinha muito. Era um forbidden aqui e ali; algo esperado.

Já o erro 404... rapaz... parece que os robôs estavam no modo gera url aleatoriamente e testa!


Ignorando IP no Fail2ban com base da geolocalização


Acessando o servidor, eu abri o arquivo jail.local e editei a seção apache-40x...



#vim jail.local

...

[apache-40x]
enabled = true
port = http,https
filter = apache-40x
logpath = /var/log/apache2/other_vhosts_access.log
maxretry = 3
bantime = 300
ignorecache = key="<ip>", max-count=50, max-time=10m
ignorecommand = if echo "<ip>" | grep -qE '^([0-9a-fA-F:]{2,}|::1)$'; then geoiplookup6 "<ip>"; else geoiplookup "<ip>"; fi | egrep "BR|Brazil" && exit 0 || exit 1

...



Salvei o arquivo e reiniciei o Fail2ban. Acessei o site do cliente e ao testar um endereço inexistente os logs do Failban exibiu um "... INFO [apache-40x] Found 1xx.xxx.xxx.xx7 ...".

Oxi... não esperava isto! Deveria ser outra mensagem. Isto indica que o comando geoiplookup (pacote geoip-bin) consultou meu IP mas não retornou informações relacionadas ao Brasil.

De fato, executando o comando geoiplookup 1xx.xxx.xxx.xx7 o resultado trazia informações referente a Costa Rica.

Fiz um apt update, um apt upgrade e rodei o geoiplookup mas a mensagem sobre meu IP não mudava. Este servidor roda o Ubuntu 22.04 LTS e o pacote que precisa ser atualizado é o geoip-database. Mas infelizmente não há atualização disponível para o geoip-database.

Bem, hora de colocar a "mão na massa" e atualizar a base de geolocalização manualmente.

Eu acessei o site do mantenedor das bases de dados em mailfud.org/geoip-legacy, e depois baixei o arquivo GeoIP.dat.gz e o GeoIPv6.dat.gz...


It's enough to download these once a week. Unpack to /usr/share/GeoIP or equivalent directory.


Depois descompactei o conteúdo dos arquivos no diretório /usr/share/GeoIP...


A essa altura eu acredito que você já deve ter pensado: vou colocar um script na agenda do sistema para baixar com o wget ou curl, e descompactar com gunzip os arquivos. #FicaADica 😀

Agora ao executar o comando geoiplookup 1xx.xxx.xxx.xx7 obtenho exatamente a saída que espero...


Retornando o teste com o Fail2ban, ao tentar acessar uma pagina inexistente no site do cliente, o log mostra a mensagem: "... INFO    [apache-40x] Ignore 1xx.xxx.xxx.xx7 by command ...".

Show! Esta era a mensagem que esperava.

Agora o servidor do cliente reduziu a carga pois não tem que ficar dando tantas respostas 404.

Talvez você esteva se perguntando sobre a diretiva ignorecommand. Ela funciona assim: 


  • O IP casa com o filtro apache-40x.
  • A seção apache-40x é processada e o ignorecommand executa o comando 'if echo "<ip>" ... exit 0 || exit 1'.
  • O IP não será bloqueado se o comando for executado com sucesso (exit code 0).

Shell  builtin  commands return a status of 0 (true) if successful, and non-zero (false) if an error occurs while they execute.


Nesta situação eu use o ignorecache e o ignorecommand apenas para um filtro. Mas você também pode usar globalmente se desejar. Assim todos os filtros irão ignorar os IPs de um ou mais países; sua configuração é quem dita as regras.


Paz a todos!