FreeBSD, установка и настройка fail2ban

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

1. Ставим:
1
# pkg install py-fail2ban

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

1
sysrc fail2ban_enable="YES"

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

[DEFAULT]
ignoreip = 127.0.0.1 192.168.37.0/24
# время бана в секундах(только число) или минутах(m)
bantime = 180m

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

# максимальное число правонарушений
maxretry = 2
# по-умолчанию применять IPFW
action = bsd-ipfw[table=1]

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

[ssh-ipfw]
enabled = true
filter = bsd-sshd
action = bsd-ipfw[table=50]
logpath = /var/log/auth.log
maxretry = 3

[proftpd-ipfw]
enabled = true
filter = proftpd
action = bsd-ipfw[table=51]
# sendmail[name=proftpd, dest=admin@example.com]
logpath = /var/log/proftpd/proftpd.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

# выявляем неудачные попытки ввода пароля
[apache]

enabled = true
port = http,https
filter = apache-auth
action = bsd-ipfw[table=53]
logpath = /var/log/httpd-error.log

# выявляем потенциальные сканирования для применения эксплойтов и php уязвимостей
[apache-noscript]

enabled = true
port = http,https
filter = apache-noscript
action = bsd-ipfw[table=53]
logpath = /var/log/httpd-error.log

# выявляем попытки переполнения Апача
[apache-overflows]

enabled = true
port = http,https
filter = apache-overflows
action = bsd-ipfw[table=53]
logpath = /var/log/httpd-error.log
maxretry = 2

# выявляем неудачные попытки в поиске домашней директории на сервере
[apache-nohome]

enabled = true
port = http,https
filter = apache-nohome
action = bsd-ipfw[table=53]
logpath = /var/log/httpd-error.log
maxretry = 2

4. Создаем свой/usr/local/etc/fail2ban/action.d/bsd-ipfw.local

1
2
3
4
5
6
7
8
9
10
[Definition]
actionstart =
actionstop =
actioncheck =
#
actionban = ipfw table <table> add <ip>
actionunban = ipfw table <table> delete <ip>
 
[Init]
localhost = 127.0.0.1

6. Правим скрипт  сетевого экрана

1
2
3
4
5
6
7
8
9
10
11
#fail2ban table
sshd_ban_table="table(50)"
proftpd_ban_table="table(51)"
postfix_ban_table="table(52)"
wordpress_ban_table="table(53)"
 
#fail2ban
$cmd 09 deny ip from «table(1)» to any #таблица по-умолчанию
$cmd 10 deny tcp from ${proftpd_ban_table} to me 21 via ${WAN}
$cmd 11 deny tcp from ${sshd_ban_table} to me 22 via ${WAN}
$cmd 12 deny tcp from ${postfix_ban_table} to me 25 via ${WAN}
$cmd 13 deny tcp from ${wordpress_ban_table} to me 80 via ${WAN}

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

1
touch dns.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/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

 

Источники: https://www.lissyara.su/articles/freebsd/security/fail2ban/? 

https://habr.com/ru/post/409915/

https://www.site-motor.ru/docs/freebsd/security_fail2ban.html

https://forum.sys-adm.in/index.php?topic=3121.0

https://itstuff.info/web/install-and-configure-fail2ban/#filters_and_jails
Довольны?
[Оценок: 0 средняя: 0]

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

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