Fail2ban

Немного начали напрягать брутом популярных портов.

cd /usr/ports/security/py-fail2ban/
make install clean

В процессе установки у меня вывалилась ошибка, связанная с py27-setuptools, примерно такая

===>  Installing for py27-setuptools-32.1.0_1
===>  Checking if py27-setuptools already installed
===>   Registering installation for py27-setuptools-32.1.0_1 as automatic
Installing py27-setuptools-32.1.0_1...
pkg-static: py27-setuptools-32.1.0_1 conflicts with py27-setuptools27-32.1.0 (installs files into the same place).  Problematic file: /usr/local/lib/python2.7/site-packages/easy-install.pth.dist
*** Error code 70
Stop.
make: stopped in /usr/ports/devel/py27-setuptools

Решение

pkg set -n py27-setuptools27:py27-setuptools
pkg set -o devel/py-setuptools27:devel/py27-setuptools

Далее

echo 'fail2ban_enable="YES"' >> /etc/rc.conf

Переходим

cd /usr/local/etc/fail2ban
cp jail.conf jail.local

– чтобы при обновлении не потерлись конфиги.

cat /jail.local
[DEFAULT]
ignoreip = 127.0.0.1 192.168.1.12
# время бана в секундах (отрицательное число - навсегда)
bantime = -600

# время проверки,за которое событие успеет повторится
findtime = 900

# максимальное число правонарушений
maxretry = 2

# метод парсинга логов
backend = auto
usedns= no

[ssh-ipfw]
enabled = true
filter = bsd-sshd
action = bsd-ipfw[table “” not found /]
sendmail[name=ssh, dest=svm@tst-amo.pp.ua] logpath = /var/log/auth.log

В ipfw добавляем таблицы 3, 4, 5

#fail2ban table
 add 2 deny log all from table(3) to me
 add 2 deny log all from me to table(3)

и запускаем

/etc/rc.d/ipfw restart
service fail2ban restart

Делаем

tail -f /var/log/fail2ban.log

и пробуем ошибочно залогинится.

Защищаем Postfix

В /usr/local/etc/fail2ban/jail.local добавляем

[postfix-sasl-ipfw]
enabled = true
filter = postfix-sasl
action = bsd-ipfw[table “” not found /]
logpath = /var/log/maillog bantime = 604800 findtime = 3600 maxretry = 3 ignoreip = 127.0.0.1 192.168.1.0/24 backend = auto
[postfix-ipfw]
enabled = true
filter = postfix
action = bsd-ipfw[table “” not found /]
logpath = /var/log/maillog bantime = 604800 findtime = 3600 maxretry = 3 ignoreip = 127.0.0.1 192.168.1.0/24 backend = auto

В /usr/local/etc/fail2ban/filter.d/postfix-sasl.local правим до состояния

[INCLUDES]
before = common.conf

[Definition]
_daemon = postfix(-\w+)?/(submission/)?smtp(d|s)
failregex = ^%(__prefix_line)swarning: [-._\w]+\[<HOST>\]: SASL ((?i)LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/:]*={0,2})?\s*$
ignoreregex =

Защищаем Dovecot

[dovecot-ipfw]
enabled = true
filter = dovecot
action = bsd-ipfw
# mail-whois[name=Dovecot, dest=svm@tst-amo.pp.ua]
logpath = /var/log/dovecot.log
maxretry = 3
bantime = 3600
findtime = 600
ignoreip = 127.0.0.1 192.168.1.47
backend = auto

Защищаем Roundcube

В /usr/local/etc/fail2ban/jail.local добавляем

[roundcube-ipfw]
enabled = true
filter = roundcube-auth
action = bsd-ipfw[table “” not found /]
port = http,https bantime = 240 findtime = 3600 maxretry = 3 logpath = /usr/local/www/roundcube/logs/errors ignoreip = 127.0.0.1 192.168.1.0.24 backend = auto

Фильтр /usr/local/etc/fail2ban/filter.d/roundcube-auth.local подошел дефолтный.

Защищаем ProFTPd

[proftpd-ipfw]
enabled = true
filter = proftpd
action = bsd-ipfw[table “” not found /]
port = ftp,ftps,sftp bantime = 240 findtime = 3600 maxretry = 3 logpath = /var/log/proftpd/proftpd.log ignoreip = 127.0.0.1 192.168.1.47 194.44.219.161 backend = auto

Полезные команды:

Рестарт

# service fail2ban restart

Получить список правил:

# fail2ban-client status

Получить статистику заблокированных адресов:

# fail2ban-client status <имя правила>

Для удаление адреса из списка вводим:

fail2ban-client set <имя правила> unbanip <IP-адрес>

Например:

fail2ban-client set ssh unbanip 5.234.11.168

https://www.dmosk.ru/instruktions.php?object=fail2ban

image_pdfimage_print

Leave a Reply

Your email address will not be published. Required fields are marked *