Pesquise...

Últimos Posts

Arquivo de Posts

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

Postagens Populares

Vem Comigo

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

Total de Acessos


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 comandop 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).


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!