Fail2ban: Difference between revisions

From DWIKI
 
(12 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Links=
=Links=
*[http://www.fail2ban.org/wiki/index.php/Main_Page Homepage Wiki]
*[http://www.fail2ban.org/wiki/index.php/Main_Page Homepage Wiki]
*[https://bornoe.org/blog/2023/09/basic-fail2ban-commands/ Basic fail2ban commands]
*[https://www.sshguard.net/ sshguard, an alternative]
*[https://www.sshguard.net/ sshguard, an alternative]
*[https://wiki.archlinux.org/title/fail2ban Archlinux wiki fail2ban]
*[https://wiki.archlinux.org/title/fail2ban Archlinux wiki fail2ban]
*[https://fail2ban.readthedocs.io/en/latest/ Welcome to Fail2Ban’s developers documentation!]
*https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-ubuntu-20-04


=Custom rules=
=Custom rules=
Line 21: Line 24:
===unban IP===
===unban IP===
  fail2ban-client unban <IP>
  fail2ban-client unban <IP>
==Check in which jails IP is banned==
fail2ban-client banned <ip>
==Get statistics==
fail2ban-client status
===Status of one jail ===
fail2ban-client status sshd
<pre>
|- Filter
|  |- Currently failed: 0
|  |- Total failed:    14
|  `- File list:        /var/log/access.log
`- Actions
  |- Currently banned: 8
  |- Total banned:    8
  `- Banned IP list:
</pre>
====Currently failed====
Not banned yet


=Structure=
=Structure=
Relative to '''etc/failban/'''
Relative to '''/etc/failban/'''
==jail.conf and jail.local==
By default jails have names matching their filter name, so
 
Jail '''myrules''':
[myrules]
uses '''filter.d/myrules.conf'''
 
 
And
[myjail]
filter = myfilter
Optionally refers to '''filter.d/myfilter.conf'''
 
And a custom action defined as
action = myaction
calls '''action.d/myaction.conf'''
 
===action vs banaction ===
 
==jail.d==
==jail.d==
==filter.d==
==filter.d==
==action.d==
==action.d==


=FAQ=
=FAQ=
==Error messages==


== Error in FilterPyinotify callback: 'module' object has no attribute '_strptime_time'==
=== Error in FilterPyinotify callback: 'module' object has no attribute '_strptime_time'===
Enabling sshd-ddos filter seems to trigger this
Enabling sshd-ddos filter seems to trigger this


==WARNING Unable to find a corresponding IP address for client: (-2, 'Name or service not known')==
===WARNING Unable to find a corresponding IP address for client: (-2, 'Name or service not known')===
Crap code, maybe look at usedns in fail.conf
Crap code, maybe look at usedns in fail.conf




===Unable to read the filter===
"because of wrong configuration", so it can read it




Line 55: Line 106:
  sshd_backend = systemd
  sshd_backend = systemd
(not working??)
(not working??)
[[Category:Security]]

Latest revision as of 11:56, 17 April 2025

Links

Custom rules

assp.conf

failregex =  \[Worker_.*\] <HOST> \[SMTP Error\] 535 5.7.8 Error: authentication failed: 
                        \[Worker_.*\] \[SSL-in\] \[TLS-out\] <HOST> \[SMTP Error\] 535 
                       \[Worker_.*\] \[MessageLimit\] <HOST>
                       \[Worker_.*\] <HOST> .* \[SMTP Error\] 554 5.7.1


HOWTO

test filter

fail2ban-regex /usr/share/assp/logs/maillog.txt /etc/fail2ban/filter.d/assp.conf


fail2ban-client

unban IP

fail2ban-client unban <IP>

Check in which jails IP is banned

fail2ban-client banned <ip>

Get statistics

fail2ban-client status


Status of one jail

fail2ban-client status sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     14
|  `- File list:        /var/log/access.log
`- Actions
   |- Currently banned: 8
   |- Total banned:     8
   `- Banned IP list: 

Currently failed

Not banned yet

Structure

Relative to /etc/failban/

jail.conf and jail.local

By default jails have names matching their filter name, so

Jail myrules:

[myrules]

uses filter.d/myrules.conf


And

[myjail]
filter = myfilter

Optionally refers to filter.d/myfilter.conf

And a custom action defined as

action = myaction

calls action.d/myaction.conf


action vs banaction

jail.d

filter.d

action.d

FAQ

Error messages

Error in FilterPyinotify callback: 'module' object has no attribute '_strptime_time'

Enabling sshd-ddos filter seems to trigger this

WARNING Unable to find a corresponding IP address for client: (-2, 'Name or service not known')

Crap code, maybe look at usedns in fail.conf


Unable to read the filter

"because of wrong configuration", so it can read it


I don't see the rules

Maybe its using ipset, check

ipset list


unban an IP

fail2ban-client set <jailname> unbanip <bannedip>


sshd rule not working on Ubuntu 20.04

Probably silently fails on missing pyinotify

apt install inotify-tools inotify-hookable python-pyinotify

OR change backend:

sshd_backend = systemd

(not working??)