Fail2Ban


Чернетка! Стаття не завершена...

Управління

# застосувати зміни
sudo fail2ban-client reload
sudo fail2ban-client restart

# перевірити статус по окремому фільтру
sudo fail2ban-client status my-filter

# перевірити застосовані правила
sudo iptables -S

# unban ip:
sudo fail2ban-client set my-filter unbanip xxx.xxx.xxx.xxx

# ban ip:
sudo fail2ban-client set my-filter banip xxx.xxx.xxx.xxx

Фільтр

Файли фільтрів знаходяться у /etc/fail2ban/filter.d/ і мають наступний формат:

[Definition]
failregex = 
ignoreregex =
datepattern = 

Протестувати regex (без його застосування) можна командою fail2ban-regex [Options] [Ignoreregex]

# можливі ключі:  --print-all-matched   --print-all-missed   --print-all-ignored
sudo fail2ban-regex  --print-all-missed  /var/log/nginx/access.log   /etc/fail2ban/filter.d/my-filter.conf   /etc/fail2ban/filter.d/my-filter.conf 

Jail

[DEFAULT]

ignoreip = 127.0.0.1/8
findtime = 3600
maxretry = 6
bantime  = 10800
logencoding = auto
enabled  = false
filter   = %(__name__)s

# ACTIONS
protocol = tcp
chain    = INPUT
fail2ban_agent = Fail2Ban/%(fail2ban_version)s
banaction = iptables-multiport
banaction_allports = iptables-allports
action_  = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
action   = %(action_)s

#  JAILS
[sshd]
enabled  = true
port     = ssh
logpath  = /var/log/auth.log
backend  = %(sshd_backend)s

[my-filter]
enabled  = true
filter   = my-filter
port     = http,https
logpath  = /var/log/nginx/access.log
findtime = 300
maxretry = 2
bantime  = 86400

Параметри файлу jail.conf:

Додаткові джерела