¿Cómo mostrar todas las ip prohibidas con fail2ban?

36

Cuando ejecuto este comando fail2ban-client status sshdobtuve esto:

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

Solo muestra dos IP en la lista de IP prohibidas en lugar de 8, como dice Total Banned.

Mientras lo hago tail -f /var/log/auth.log, tengo esto:

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 prohibida sigue intentando.

Sin embargo, cuando verifico sudo iptables -L INPUT -v -n, obtuve esto:

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

¿Qué estoy haciendo mal aquí?

¿Cómo puedo mostrar todas las listas de IP prohibidas?

Gracias por adelantado.

Cyber ​​oscuro
fuente
"Total" significa el total prohibido, no el total prohibido actualmente. El único lugar donde encontrará direcciones prohibidas anteriormente es en los registros (si las conservó).
Deja de dañar a Monica el
en jail.local o jail.conf, parece que tienes un pequeño bantime. Hazlo 200mo incluso más y luego hazlo sudo service fail2ban restarty luegofail2ban-client status sshd
Allen King

Respuestas:

19

Tenga en cuenta que la prohibición de IP de fail2ban es de naturaleza temporal.

La mejor manera de echar un vistazo a la lista completa de IPs que han sido bloqueadas sería verificar el archivo de registro:

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

El siguiente comando también puede darle una lista limpia de reglas de entrada:

sudo iptables -L INPUT -v -n | less
NA AE
fuente
3
No hay dos puntos en mis archivos de registro (por lo tanto, es necesario ajustar el grep). Sin embargo, dejarlo como un comentario en lugar de una edición, ya que no sé qué tan extendido está esto / si se trata de un cambio reciente.
kwah
Tenga en cuenta que enumerar las reglas de iptables solo funciona en caso de que iptables sea su acción de prohibición. A veces este no es el caso.
gilad mayani
@kwah lo mismo para mí, no hay dos puntos en el archivo de registro. Probablemente un cambio reciente en la salida, o un error tipográfico.
David Mordigal
Elimine el ':' después del término de búsqueda 'Prohibir' porque el ':' ya no está escrito en el archivo de registro. Entonces podrá ver las IP bloqueadas nuevamente con el comando mencionado anteriormente.
Mario Neubauer
9

Para ver la línea completa de iptables:

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

Para ver solo la dirección IP:

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

Puede cambiar "REJECT" por "DROP", según su caso.

César Themudo Goday
fuente
6

Similar a NA AE anterior con los comentarios de kwaa incluidos, esto enumera todas las IP:

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

pero esa salida tiene muchas líneas. Esto cuenta las líneas de todas las IP registradas prohibidas (y probablemente no prohibidas):

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

El resultado del comando anterior (con recuento de líneas) debe coincidir con el recuento 'Total prohibido' en la salida de estado de fail2ban:

fail2ban-client status sshd

probado en Ubuntu 18.04.1 LTS.

Mi salida de la línea 'wc -l':

7244

Y a partir del estado de fail2ban, se verifica el mismo número 7244:

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:   [...]
Marc Compere
fuente
4

Solo un FYI:

  • "Total prohibido" son las IP totales que han sido prohibidas para esa cárcel (y probablemente no han sido prohibidas).
  • "Actualmente prohibido" son las ÚNICAS IP que están actualmente prohibidas para esa cárcel (y la lista de IP lo confirma).

Espero que ayude.

Rob Pickering
fuente
4

si desea ver la lista de IP prohibidas con su tiempo de espera (el tiempo de espera caduca, se eliminan del grupo prohibido) puede usar:

ipset list
gstlouis
fuente
2

Esto mostrará lo que está actualmente prohibido (RECHAZAR) en la porción Chain fail2ban-ssh de iptables.

sudo iptables -L fail2ban-ssh -v -n
IG-88
fuente
2

Para agregar una respuesta más genérica:

Tenga en cuenta que iptables podría no ser la respuesta correcta y podría no brindarle información relevante (para el póster original sí lo es). Depende de qué valor de banaction = [acción] esté utilizando en su DEFECTO o definición de cárcel específica.

Tengo muchas cajas pequeñas con ARM que funcionan con Linux, pero el núcleo no tiene todos los módulos de iptables relevantes disponibles, por lo que iptables no funcionará en ese caso.

* Es posible que BSD no tenga iptables en absoluto y use en su lugar algo como pf .

En mis cajas ARM estoy usando la ruta para bloquear. Agrega una ruta no válida para IP prohibidas y, por lo tanto, los paquetes de devolución no se pueden entregar y la IP está esencialmente bloqueada. Funciona muy bien En ese caso, puede verificar las direcciones IP prohibidas utilizando:

# 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 -

Tienes muchas opciones para prohibir. Y por lo tanto, muchas opciones para verificar la lista de prohibición. Cuál usar depende de su plataforma y preferencia. Hay muchos archivos de configuración preconfigurados en: /etc/fail2ban/action.d/ para elegir.

srx
fuente