- Автор темы
- Администратор
- Модер.
- Команда форума
- #1
Fail2Ban — простой локальный сервис, который просматривает логи на предмет попытки подоброать пароли к ssh, ftp, http-сервисам. Если такие попытки найдены, fail2ban блокирует ip-адрес источника. Сервис очень гибко настраивается, способен оповещать по email, писать лог, сбрасывать блокировку через заданное время и прочее.
1. Ставим:
2. Добавляем в автозапуск:
3. Правим кофиг /usr/local/etc/fail2ban/jail.conf. Вначале идут дефолтные настройки, которые можно
переопределить в отдельных секциях.
4. Правим /usr/local/etc/fail2ban/action.d/bsd-ipfw.conf
5. Ставим плагин WP fail2ban Cоздаём файл /usr/local/etc/fail2ban/filter.d/wordpress.conf
6. Правим /etc/rc.firewall
7. Скрипт получения DNS имен из IP в таблице ipfw. Создаём файл dns.sh
1. Ставим:
Код:
# cd /usr/ports/security/py-fail2ban && make install clean
Код:
# ee /etc/rc.conf
Код:
fail2ban_enable="YES"
переопределить в отдельных секциях.
Код:
[DEFAULT]
2 ignoreip = 127.0.0.1 192.168.1.0/24
3 # время бана в секундах
4 bantime = 600
5
6 # время проверки,за которое событие успеет повторится
7 findtime = 900
8
9 # максимальное число правонарушений
10 maxretry = 2
11
12 # метод парсинга логов
13 backend = auto
14 usedns= no
15
16 [ssh-ipfw]
17 enabled = true
18 filter = bsd-sshd
19 action = bsd-ipfw[table=50]
20 # sendmail[name=ssh, [email protected]]
21 logpath = /var/log/auth.log
22
23 [proftpd-ipfw]
24 enabled = true
25 filter = proftpd
26 action = bsd-ipfw[table=51]
27 # sendmail[name=proftpd, [email protected]]
28 logpath = /var/log/auth.log
29
30 [postfix-ipfw]
31 enabled = true
32 filter = postfix
33 action = bsd-ipfw[table=52]
34 # sendmail[name=postfix, [email protected]]
35 logpath = /var/log/maillog
36 bantime = 604800
37 maxretry = 3
38
39 [wordpress]
40 enabled = true
41 filter = wordpress
42 action = bsd-ipfw[table=53]
43 # sendmail[name=wordpress, [email protected]]
44 logpath = /var/log/auth.log
Код:
1 [Definition]
2 actionstart =
3 actionstop =
4 actioncheck =
5 #
6 actionban = ipfw table <table> add <ip>
7 actionunban = ipfw table <table> delete <ip>
8
9 [Init]
10 localhost = 127.0.0.
Код:
touch /usr/local/etc/fail2ban/filter.d/wordpress.conf
Код:
1 [INCLUDES]
2 #
3 before = common.conf
4 #
5 [Definition]
6 #
7 _daemon = wordpress
8 #
9 failregex = ^%(__prefix_line)sAuthentication failure for .* from $
10 #
11 ignoreregex =
Код:
1 #fail2ban table
2 sshd_ban_table="table(50)"
3 proftpd_ban_table="table(51)"
4 postfix_ban_table="table(52)"
5 wordpress_ban_table="table(53)"
6
7 #fail2ban
8 ${fw} add 10 deny tcp from ${proftpd_ban_table} to me 21 via ${LanOut}
9 ${fw} add 11 deny tcp from ${sshd_ban_table} to me 22 via ${LanOut}
10 ${fw} add 12 deny tcp from ${postfix_ban_table} to me 25 via ${LanOut}
11 ${fw} add 13 deny tcp from ${wordpress_ban_table} to me 80 via ${LanOut}
7. Скрипт получения DNS имен из IP в таблице ipfw. Создаём файл dns.sh
Код:
1 touch dns.sh
view source
print?
1 #!/bin/sh
2 echo "Table 50 sshd"
3 ipfw table 50 list|awk -F '/' '{ print $1 }'| nslookup $@ |
4 grep "name =" | more
5 echo -e "\n"
6 echo -e "\n"
7 echo "Table 51 proftpd"
8 ipfw table 51 list|awk -F '/' '{ print $1 }'| nslookup $@ |
9 grep "name =" | more
10 echo -e "\n"
11 echo -e "\n"
12 echo "Table 52 postfix"
13 ipfw table 52 list|awk -F '/' '{ print $1 }'| nslookup $@ |
14 grep "name =" | more
15 echo -e "\n"
16 echo -e "\n"
17 echo "Table 53 wordpress"
18 ipfw table 53 list|awk -F '/' '{ print $1 }'| nslookup $@ |
19 grep "name =" | more