Como mostrar todos os ip banidos com fail2ban?


36

Quando executo esse comando fail2ban-client status sshd, recebi o seguinte:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     81
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 2
   |- Total banned:     8
   `- Banned IP list:   218.65.30.61 116.31.116.7

Ele mostra apenas dois IPs na lista de IPs proibidos, em vez de 8, como diz o Total Banned.

Enquanto eu tail -f /var/log/auth.logtenho isso:

Mar 29 11:08:40 DBSERVER sshd[29163]: error: maximum authentication attempts exceeded for root from 218.65.30.61 port 50935 ssh2 [preauth]
Mar 29 11:08:40 DBSERVER sshd[29163]: Disconnecting: Too many authentication failures [preauth]
Mar 29 11:08:40 DBSERVER sshd[29163]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.65.30.61  user=root
Mar 29 11:08:40 DBSERVER sshd[29163]: PAM service(sshd) ignoring max retries; 6 > 3
Mar 29 11:08:44 DBSERVER sshd[29165]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=218.65.30.61  user=root
Mar 29 11:08:46 DBSERVER sshd[29165]: Failed password for root from 218.65.30.61 port 11857 ssh2
Mar 29 11:09:01 DBSERVER CRON[29172]: pam_unix(cron:session): session opened for user root by (uid=0)
Mar 29 11:09:01 DBSERVER CRON[29172]: pam_unix(cron:session): session closed for user root
Mar 29 11:10:01 DBSERVER CRON[29226]: pam_unix(cron:session): session opened for user root by (uid=0)
Mar 29 11:10:02 DBSERVER CRON[29226]: pam_unix(cron:session): session closed for user root
Mar 29 11:10:18 DBSERVER sshd[29238]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.122.43.185  user=root
Mar 29 11:10:20 DBSERVER sshd[29238]: Failed password for root from 113.122.43.185 port 46017 ssh2
Mar 29 11:10:33 DBSERVER sshd[29238]: message repeated 5 times: [ Failed password for root from 113.122.43.185 port 46017 ssh2]
Mar 29 11:10:33 DBSERVER sshd[29238]: error: maximum authentication attempts exceeded for root from 113.122.43.185 port 46017 ssh2 [preauth]
Mar 29 11:10:33 DBSERVER sshd[29238]: Disconnecting: Too many authentication failures [preauth]
Mar 29 11:10:33 DBSERVER sshd[29238]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=113.122.43.185  user=root
Mar 29 11:10:33 DBSERVER sshd[29238]: PAM service(sshd) ignoring max retries; 6 > 3
Mar 29 11:11:36 DBSERVER sshd[29245]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:11:38 DBSERVER sshd[29245]: Failed password for root from 116.31.116.7 port 24892 ssh2
Mar 29 11:11:43 DBSERVER sshd[29245]: message repeated 2 times: [ Failed password for root from 116.31.116.7 port 24892 ssh2]
Mar 29 11:11:43 DBSERVER sshd[29245]: Received disconnect from 116.31.116.7 port 24892:11:  [preauth]
Mar 29 11:11:43 DBSERVER sshd[29245]: Disconnected from 116.31.116.7 port 24892 [preauth]
Mar 29 11:11:43 DBSERVER sshd[29245]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:12:39 DBSERVER sshd[29247]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:12:41 DBSERVER sshd[29247]: Failed password for root from 116.31.116.7 port 26739 ssh2
Mar 29 11:12:45 DBSERVER sshd[29247]: message repeated 2 times: [ Failed password for root from 116.31.116.7 port 26739 ssh2]
Mar 29 11:12:45 DBSERVER sshd[29247]: Received disconnect from 116.31.116.7 port 26739:11:  [preauth]
Mar 29 11:12:45 DBSERVER sshd[29247]: Disconnected from 116.31.116.7 port 26739 [preauth]
Mar 29 11:12:45 DBSERVER sshd[29247]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:13:41 DBSERVER sshd[29249]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.7  user=root
Mar 29 11:13:43 DBSERVER sshd[29249]: Failed password for root from 116.31.116.7 port 27040 ssh2

IP banido ainda está tentando.

No entanto, quando eu verifiquei com sudo iptables -L INPUT -v -nisso, consegui:

Chain INPUT (policy ACCEPT 228 packets, 18000 bytes)
 pkts bytes target     prot opt in     out     source               destination
 6050  435K f2b-sshd   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22

O que eu estou fazendo errado aqui?

Como posso mostrar toda a lista de IPs proibidos?

Desde já, obrigado.


"Total" significa o total já banido, não o total atualmente banido. O único local em que você encontrará endereços banidos anteriormente é nos registros (se você os tiver mantido).
Pare de prejudicar Monica

Em jail.local ou jail.conf, você parece ter um pequeno bantime. Torná-lo 200mou ainda mais alto e, em seguida, sudo service fail2ban restarte depoisfail2ban-client status sshd
Allen King

Respostas:


19

Lembre-se de que a proibição fail2ban de IP é de natureza temporária.

A melhor maneira de dar uma olhada na lista completa de IPs que foram bloqueados seria verificar o arquivo de log:

sudo zgrep 'Ban:' /var/log/fail2ban.log*

O comando a seguir também pode fornecer uma lista limpa de regras de entrada:

sudo iptables -L INPUT -v -n | less

3
Não há dois pontos nos meus arquivos de log (portanto, necessário para ajustar o grep). Porém, deixando como um comentário em vez de uma edição, como não sei o quão difundido isso é / se é uma mudança recente.
kwah

Lembre-se de que listar as regras do iptables só funciona caso o iptables seja sua ação de proibição. Às vezes, esse não é o caso.
gilad Mayani

@ kwah mesmo para mim, sem dois pontos no arquivo de log. Provavelmente uma mudança recente na saída ou um erro de digitação.
David Mordigal

Remova o ':' após o termo de pesquisa 'Ban' porque o ':' não está mais gravado no arquivo de log. Assim, você poderá ver os IPs bloqueados novamente com o comando acima mencionado.
Mario Neubauer 13/06

9

Para visualizar a linha completa de iptables:

sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0"'

Para visualizar apenas o endereço IP:

sudo iptables -L -n | awk '$1=="REJECT" && $4!="0.0.0.0/0" {print $4}'

Você pode alterar "REJECT" por "DROP", dependendo do seu caso.


6

Semelhante ao NA AE acima, com os comentários de kwaa incluídos, lista todos os IPs:

sudo zgrep 'Ban' /var/log/fail2ban.log*

mas essa saída tem muitas linhas. Isso conta as linhas de todos os ips banidos (e provavelmente não banidos) registrados:

sudo zgrep 'Ban' /var/log/fail2ban.log* | wc -l

A saída do comando acima (com contagem de linhas) deve corresponder à contagem 'Total banido' na saída de status do fail2ban:

fail2ban-client status sshd

testado no Ubuntu 18.04.1 LTS.

Minha saída da linha 'wc -l':

7244

E do status de fail2ban, o mesmo número 7244 é verificado:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 7
|  |- Total failed: 49457
|  `- File list:    /var/log/auth.log
`- Actions
   |- Currently banned: 9
   |- Total banned: 7244
   `- Banned IP list:   [...]

4

Apenas um FYI:

  • "Total banido" são os IPs totais que foram banidos para essa prisão (e provavelmente foram banidos).
  • "Banido atualmente" são os ÚNICOS IPs atualmente banidos para essa prisão (e a lista de IPs confirma isso).

Espero que ajude.


4

se você quiser ver a lista de IPs banidos com o tempo limite (o tempo limite expira, eles são removidos do pool banido), você pode usar:

ipset list

2

Isso mostrará o que está atualmente banido (REJECT) na parte Chain fail2ban-ssh do iptables.

sudo iptables -L fail2ban-ssh -v -n

2

Para adicionar uma resposta mais genérica:

Observe que o iptables pode não ser a resposta correta e pode não fornecer informações relevantes (para o pôster original). Depende de qual valor para banaction = [ação] você está usando em seu DEFAULT ou definição de prisão específica.

Eu tenho muitas caixas pequenas alimentadas por ARM executando o linux, mas o kernel não possui todos os módulos relevantes do iptables disponíveis, portanto, o iptables não funcionará nesse caso.

* O BSD pode não ter iptables e usar algo como pf .

Nas minhas caixas do BRAÇO, estou usando a rota para bloquear. Ele adiciona uma rota inválida para IPs banidos e, portanto, os pacotes de retorno não são entregues e o IP é essencialmente bloqueado. Funciona muito bem. Nesse caso, você pode verificar IPs banidos usando:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
# normal routing entries
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
# banned IPs (no gateway, no iface)
223.96.95.85    -               255.255.255.255 !H    0      -        0 -

Você tem muitas opções para banir. E, portanto, muitas opções para verificar a lista de proibição. Qual usar depende da sua plataforma e preferência. Existem muitos arquivos de configuração pré-configurados em: /etc/fail2ban/action.d/ para escolher.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.