FreeBSD

Защита средствами fail2ban на FreeBSD

Fail2Ban — простой локальный сервис, который просматривает логи на предмет попытки подоброать пароли к ssh, ftp, http-сервисам. Если такие попытки найдены, fail2ban блокирует ip-адрес источника. Сервис очень гибко настраивается, способен оповещать по email, писать лог, сбрасывать блокировку через заданное время и прочее.

1. Ставим:

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

2. Добавляем в автозапуск:

# ee /etc/rc.conf
fail2ban_enable="YES"

3. Правим кофиг /usr/local/etc/fail2ban/jail.conf. Вначале идут дефолтные настройки, которые можно
переопределить в отдельных секциях.

[DEFAULT]
ignoreip = 127.0.0.1 192.168.1.0/24
# время бана в секундах
bantime  = 600

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

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

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

[ssh-ipfw]
enabled  = true
filter   = bsd-sshd
action   = bsd-ipfw[table=50]
#           sendmail[name=ssh, dest=admin@example.com]
logpath  = /var/log/auth.log

[proftpd-ipfw]
enabled  = true
filter   = proftpd
action   = bsd-ipfw[table=51]
#           sendmail[name=proftpd, dest=admin@example.com]
logpath  = /var/log/auth.log

[postfix-ipfw]
enabled  = true
filter   = postfix
action   = bsd-ipfw[table=52]
#           sendmail[name=postfix, dest=admin@example.com]
logpath  = /var/log/maillog
bantime  = 604800
maxretry = 3

[wordpress]
enabled = true
filter = wordpress
action   = bsd-ipfw[table=53]
#           sendmail[name=wordpress, dest=admin@example.com]
logpath = /var/log/auth.log

4. Правим /usr/local/etc/fail2ban/action.d/bsd-ipfw.conf

[Definition]
actionstart =
actionstop =
actioncheck =
#
actionban = ipfw table <table> add <ip>
actionunban = ipfw table <table> delete <ip>

[Init]
localhost = 127.0.0.1

5. Ставим плагин WP fail2ban Cоздаём файл /usr/local/etc/fail2ban/filter.d/wordpress.conf

touch /usr/local/etc/fail2ban/filter.d/wordpress.conf

 

[INCLUDES]
#
before = common.conf
#
[Definition]
#
_daemon = wordpress
#
failregex = ^%(__prefix_line)sAuthentication failure for .* from $
#
ignoreregex =

6. Правим /etc/rc.firewall

#fail2ban table
sshd_ban_table="table(50)"
proftpd_ban_table="table(51)"
postfix_ban_table="table(52)"
wordpress_ban_table="table(53)"

#fail2ban
${fw} add 10 deny tcp from ${proftpd_ban_table} to me 21 via ${LanOut}
${fw} add 11 deny tcp from ${sshd_ban_table} to me 22 via ${LanOut}
${fw} add 12 deny tcp from ${postfix_ban_table} to me 25 via ${LanOut}
${fw} add 13 deny tcp from ${wordpress_ban_table} to me 80 via ${LanOut}

7. Скрипт получения DNS имен из IP в таблице ipfw. Создаём файл dns.sh

touch dns.sh
#!/bin/sh
echo "Table 50 sshd"
ipfw table 50 list|awk -F '/' '{ print $1 }'| nslookup $@ |
grep "name =" | more
echo -e "n"
echo -e "n"
echo "Table 51 proftpd"
ipfw table 51 list|awk -F '/' '{ print $1 }'| nslookup $@ |
grep "name =" | more
echo -e "n"
echo -e "n"
echo "Table 52 postfix"
ipfw table 52 list|awk -F '/' '{ print $1 }'| nslookup $@ |
grep "name =" | more
echo -e "n"
echo -e "n"
echo "Table 53 wordpress"
ipfw table 53 list|awk -F '/' '{ print $1 }'| nslookup $@ |
grep "name =" | more
Теги
Показать больше

Статьи по теме

2 thoughts on “Защита средствами fail2ban на FreeBSD”

  1. Please do not edit the fail2ban.conf and jail.conf files as they
    will be overwritten upon each upgrade of the port.

    Instead, create new files named fail2ban.local and jail.local

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Close

Обнаружен Adblock

Пожалуйста, подумайте и поддержите нас, отключив Adblock.