• Версия для печати

Настройка Fail2ban

Описание: Настройка, обслуживание, эксплуатация, управление панелью ISPConfig 3. А так же обсуждение установки и оптимизация сайта под ISPConfig 3
Правила раздела: Условием использования нашего форума, является соблюдение настоящих Правил форума.


Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам, а вы рискуете получить предупреждение.
Модератор: kulia

Автор
Сообщение
kulia M
Автор темы
Аватара
kulia M
Автор темы
Репутация: 25
Лояльность: 22
Сообщения: 131
С нами: 3 года 4 месяца
Откуда: Москва

#1 kulia » Пт, 24 июня 2016, 11:52

Настройка Fail2ban
Первым делом настройте защиту своего сервера по протоколу SSH при помощи программы Fail2ban. Для этого найдите в файле jail.local секцию [ssh].

Она должна быть активна по умолчанию. Тем не менее, на всякий случай, убедитесь, что в значении параметра enabled установлено true, а не false.

Укажите значения параметров, на основании которых Fail2ban должен выполнять отслеживание активности:

filter — фильтр, который будет использоваться. По умолчанию это /etc/fail2ban/filter.d/sshd.conf;

action — действия, которые будет выполнять Fail2ban при обнаружении атакующего IP-адреса, все правила реагирования на действия злоумышленника описаны в файле /etc/fail2ban/action.d. Соответственно, в качестве значения параметра action не может быть указана информация, которой нет в файле /etc/fail2ban/action.d;

logpath — полный путь к файлу, в который будет записываться информация о попытках получения доступа к серверу.

findtime — время в секундах, в течение которого наблюдается подозрительная активность;

maxretry — разрешенное количество повторных попыток подключения к серверу;

bantime — промежуток времени, в течение которого попавший в черный список IP будет оставаться заблокированным.

Стоит обратить внимание на тот факт, что вовсе необязательно прописывать значения вышеуказанных параметров в каждой секции. Если их не упоминать, в действие вступят настройки, указанные в главном разделе [DEFAULT]. Главное, чтобы для переменной enabled было указано значение true.

Защита протокола SSH

Рассмотрим применение параметров реагирования более детально. Пример конфигурации Fail2ban на порту SSH:

Код: Выделить всё

[ssh]
enabled = true
port    = ssh
filter = sshd
action = iptables[name=sshd, port=ssh, protocol=tcp]
   sendmail-whois[name=ssh, dest=****@yandex.ru, sender=fail2ban@***.ru]
logpath = /var/log/auth.log
maxretry = 3
bantime = 600

Запись выше означает, что, если выполнено более 3 неудачных попыток подключения к VPS через основные порты SSH, то IP-адрес, с которого выполнялась авторизация, попадет в бан на 10 минут. Правило запрета будет добавлено в iptables. В то же время владелец сервера получит уведомление на e-mail, указанный в значении переменной dest, о том, что указанный IP был заблокирован за попытку получения несанкционированного доступа по протоколу SSH. Также в сообщении будет указана WHOIS информация о заблокированном IP. Пример такого уведомления от Fail2ban:

Код: Выделить всё

Hi,

The IP 61.147.103.113 has just been banned by Fail2Ban after
3 attempts against SSH.

Here are more information about 61.147.103.113:

% [whois.apnic.net]
% Whois data copyright terms http://www.apnic.net/db/dbcopyright.html

% Information related to '61.147.0.0 - 61.147.255.255'

inetnum: 61.147.0.0 - 61.147.255.255
netname: CHINANET-JS
descr: CHINANET jiangsu province network
descr: China Telecom
descr: A12,Xin-Jie-Kou-Wai Street
descr: Beijing 100088
country: CN
admin-c: CH93-AP
tech-c: CJ186-AP
mnt-by: MAINT-CHINANET
mnt-lower: MAINT-CHINANET-JS
mnt-routes: maint-chinanet-js
changed: hostmaster@ns.chinanet.cn.net 20020209
changed: hostmaster@ns.chinanet.cn.net 20030306
status: ALLOCATED non-PORTABLE
source: APNIC

role: CHINANET JIANGSU
address: 260 Zhongyang Road,Nanjing 210037
country: CN
phone: +86-25-86588231
phone: +86-25-86588745
fax-no: +86-25-86588104
e-mail: ip@jsinfo.net
remarks: send anti-spam reports to spam@jsinfo.net
remarks: send abuse reports to abuse@jsinfo.net
remarks: times in GMT+8
admin-c: CH360-AP
tech-c: CS306-AP
tech-c: CN142-AP
nic-hdl: CJ186-AP
remarks: www.jsinfo.net
notify: ip@jsinfo.net
mnt-by: MAINT-CHINANET-JS
changed: dns@jsinfo.net 20090831
changed: ip@jsinfo.net 20090831
changed: hm-changed@apnic.net 20090901
source: APNIC
changed: hm-changed@apnic.net 20111114

person: Chinanet Hostmaster
nic-hdl: CH93-AP
e-mail: anti-spam@ns.chinanet.cn.net
address: No.31 ,jingrong street,beijing
address: 100032
phone: +86-10-58501724
fax-no: +86-10-58501724
country: CN
changed: dingsy@cndata.com 20070416
changed: zhengzm@gsta.com 20140227
mnt-by: MAINT-CHINANET
source: APNIC

% Information related to '61.147.0.0/16AS23650'

route: 61.147.0.0/16
descr: CHINANET jiangsu province network
country: CN
origin: AS23650
mnt-by: MAINT-CHINANET-JS
changed: ip@jsinfo.net 20030414
source: APNIC

% This query was served by the APNIC Whois Service version 1.69.1-APNICv1r0 (UNDEFINED)

Regards,

Fail2Ban

В качестве значения переменной sender после fail2ban@ укажите домен либо хостнейм сервера.

Важно! Для того чтобы сообщение о блокировке злоумышленника отправлялось на ваш e-mail, необходимо наличие почтового сервера на сервере.

Дополнительно для защиты SSH активируйте следующую секцию:

Код: Выделить всё

[ssh-ddos]
enabled = true
port    = ssh
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 2

Для хранения больших списков заблокированных IP-адресов можно использовать комбинацию Netfilter/Iptables и IPsets. Чтобы настроить работу Fai2ban таким образом, активируйте раздел [ssh-iptables-ipset4]:

Код: Выделить всё

[ssh-iptables-ipset4]
enabled = true
port    = ssh
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
findtime = 300
maxretry = 3
bantime = 600

После правки конфигурационного файла сохраните внесенные изменения.

Аналогичным образом можно защитить и прочие сервисы.

Защита почтового сервера

Ниже представлены примеры настроек конфигурационного файла для защиты почтового сервера postfix.

Код: Выделить всё

[postfix]
enabled = true
port    = smtp,ssmtp,submission
action = iptables[name=Postfix-smtp, port=smtp, protocol=tcp]
filter = postfix
logpath = /var/log/mail.log
bantime = 86400
maxretry = 3
findtime = 3600
ignoreip = 127.0.0.1

Важно! Следите за тем, чтобы путь к файлу хранения логов (logpath) был указан корректно. В противном случае перезапуск Fail2ban завершится сообщением об ошибке. Если какой-то из лог-файлов отсутствует на вашем сервере, вы можете его создать самостоятельно командой touch, например,

Код: Выделить всё

touch /var/log/mail.log
. Обязательно назначьте ему необходимые права доступа командой

Код: Выделить всё

chmod 755 /var/log/mail.log


Код: Выделить всё

[sasl]
enabled = true
port    = smtp,ssmtp,submission,imap2,imap3,imaps,pop3,pop3s
filter = postfix-sasl
action = iptables[name=Postfix-smtp, port=smtp, protocol=tcp]
logpath = /var/log/mail.log
bantime = 86400
maxretry = 3
findtime = 3600

Защиту почтового сервера dovecot можно активировать следующим образом:

Код: Выделить всё

[dovecot]
enabled = true
port = smtp,ssmtp,submission,imap2,imap3,imaps,pop3,pop3s
filter = dovecot
action = iptables-multiport[name=dovecot-pop3imap,port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 3
findtime = 3600
bantime = 86400

Пример конфигурации jail.local для защиты roundcube:

Код: Выделить всё

[roundcube-auth]
enabled = true
filter = roundcube-auth
port    = http,https
logpath = /var/log/mail.log
action = iptables-multiport[name=roundcube, port="http,https"]
bantime = 86400
maxretry = 3
findtime = 3600

Защита веб-сервера (apache)

Для защиты веб-сервера Apache можно использовать следующие настройки Fail2ban:

Код: Выделить всё

[apache]
enabled = true
port    = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
[apache-multiport]
enabled = true
port    = http,https
filter    = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
[apache-noscript]
enabled = true
port    = http,https
filter = apache-noscript
logpath = /var/log/apache2/error.log
maxretry = 3
[apache-overflows]
enabled = true
port    = http,https
filter = apache-overflows
logpath = /var/log/apache2/error.log
maxretry = 2

Как вы уже могли заметить, в используемых выше секциях файла jail.local отсутствуют значения параметра action. В этом случае при обнаружении атаки на сервис apache программа Fail2ban будет выполнять действие, определенное в секции [DEFAULT], а именно action = iptables-multiport. Это значит, что атакующий IP-адрес будет заблокирован в iptables при помощи так называемого модуля multiports. Модуль multiports позволяет настроить правило сразу для диапазонов портов.

Защита FTP сервера

Для защиты FTP-сервера vsftpd с помощью Fail2ban можно использовать следующие параметры:

Код: Выделить всё

[vsftpd]
enabled = true
port    = ftp,ftp-data,ftps,ftps-data
filter = vsftpd
logpath = /var/log/vsftpd.log
action = iptables[name=VSFTPD, port=21, protocol=tcp]
bantime = 600
maxretry = 3
findtime = 1800

Не забудьте о необходимости перезапуска Fail2ban после каждого редактирования конфигурационного файла.

На этом настройка Fail2ban завершена. Ознакомиться с полным списком правил, которыми программа будет руководствоваться при мониторинге активности на вашем сервере, можно с помощью команды:

Код: Выделить всё

sudo iptables –L


Основные моменты по установке и настройке программы рассмотрены.
В случае, если какой-то IP-адрес будет заблокирован Fail2ban по ошибке, удалить его из черного списка можно командой:

Код: Выделить всё

sudo fail2ban-client set JAIL unbanip IP

Где JAIL — название секции конфигурационного файла jail.local, в соответствии с правилами которой была активирована блокировка, IP — адрес, который нужно разблокировать.

Пример команды разблокировки:

Код: Выделить всё

sudo fail2ban-client set ssh-iptables unbanip 61.147.103.113
Последний раз редактировалось kulia Сб, 25 июня 2016, 13:59, всего редактировалось 1 раз.
Создал на Линукс-форуме тему "Установка Internet Explorer под Убунту".
Тему удалили через 4 минуты, выдали бан на 10 дней...

rewuxiin
Супер модератор
Супер модератор
rewuxiin
Супер модератор
Супер модератор
Репутация: 14
Лояльность: 22
Сообщения: 210
С нами: 4 года 11 месяцев

#2 rewuxiin » Пт, 24 июня 2016, 18:28

под спойлером такое полотно читать хреновато, на белом фоне. думаю для мануалов спойлер не обязателен. :-)

alserk3
alserk3
Репутация: 2
Лояльность: 0
Сообщения: 6
С нами: 4 года

#3 alserk3 » Пт, 24 июня 2016, 23:28

Зачем делать мануал по настройке от 5-ти сообщений?

kulia M
Автор темы
Аватара
kulia M
Автор темы
Репутация: 25
Лояльность: 22
Сообщения: 131
С нами: 3 года 4 месяца
Откуда: Москва

#4 kulia » Сб, 25 июня 2016, 0:32

alserk3 писал(а):Зачем делать мануал по настройке от 5-ти сообщений?

У Вас есть уникальная возможность выложить свой мануал без ограничений... *PARDON*

Еще, обратите внимание на тот факт, что:
findtime — время в секундах, в течение которого наблюдается подозрительная активность;
Время (выставляется в секундах) по дефолту устанавливается 600 секунд, т.е. 10 минут. Об этом естественно знают злоумышленники и выставляют повторы, например 1 раз в 3-5 минут. Я бы рекомендовал выставлять > 30 минут
Конвертер Вам в помощь: онлайн конвертер
maxretry — разрешенное количество повторных попыток подключения к серверу;
По дефолту устанавливается 3 раза. Рекомендую так и оставить.
bantime — промежуток времени, в течение которого попавший в черный список IP будет оставаться заблокированным.
По дефолту устанавливается по разному. Рекомендую на SASL ставить 48 часов (чтоб не повадно было :-D ).
Просмотр логов Fail2ban в консоли:

Код: Выделить всё

tail -n 50 -f /var/log/fail2ban.log
Создал на Линукс-форуме тему "Установка Internet Explorer под Убунту".
Тему удалили через 4 минуты, выдали бан на 10 дней...

kulia M
Автор темы
Аватара
kulia M
Автор темы
Репутация: 25
Лояльность: 22
Сообщения: 131
С нами: 3 года 4 месяца
Откуда: Москва

#5 kulia » Ср, 29 июня 2016, 14:57

Наткнулся на информацию о том, что можно конфигурировать fail2ban через веб-морду.

Нормального (для меня) мануала в сети не нашел.

Пробовал ставить по описанию отсюда: ссылка, забуксовался по-полной еще на стадии установки "apt-get install golang git gcc" *WALL*

Ссылки на ресурсы:
REST интерфейс на Go! для управления
Веб нашлепка сверху, с красивым и удобным интерфейсом

Просьба помочь мануалом, как всю эту красоту прикрутить на ubuntu 14.04 с autoinstall-4.0 (Nginx frontend + Apache backend)

И, в довесок:
Fail2ban [incremental]: Лучше, быстрее, надежнее
Создал на Линукс-форуме тему "Установка Internet Explorer под Убунту".
Тему удалили через 4 минуты, выдали бан на 10 дней...

kulia M
Автор темы
Аватара
kulia M
Автор темы
Репутация: 25
Лояльность: 22
Сообщения: 131
С нами: 3 года 4 месяца
Откуда: Москва

#6 kulia » Сб, 2 июля 2016, 21:29

Коллеги, у кого есть возможность, протестируйте хотя бы на виртуалке - Fail2ban [incremental]. Очень заманчивые возможности, но не хочется тестировать на боевом сервере, а песочницы не имею :(
По возможности, интересует работоспособность на скрипте autoinstall-4.0 (Nginx frontend + Apache bacend).
Создал на Линукс-форуме тему "Установка Internet Explorer под Убунту".
Тему удалили через 4 минуты, выдали бан на 10 дней...

snake
snake
Возраст: 26
Репутация: 0
Лояльность: 6
Сообщения: 18
С нами: 2 года 6 месяцев

#7 snake » Чт, 22 сентября 2016, 12:20

В этом месяце планирую арендовать сервер VDS и запустить скрипт установки, отпишусь опосля, если ещё актуально.

kulia M
Автор темы
Аватара
kulia M
Автор темы
Репутация: 25
Лояльность: 22
Сообщения: 131
С нами: 3 года 4 месяца
Откуда: Москва

#8 kulia » Чт, 22 сентября 2016, 21:24

отпишусь опосля, если ещё актуально

Актуально.
Создал на Линукс-форуме тему "Установка Internet Explorer под Убунту".
Тему удалили через 4 минуты, выдали бан на 10 дней...

snake
snake
Возраст: 26
Репутация: 0
Лояльность: 6
Сообщения: 18
С нами: 2 года 6 месяцев

#9 snake » Пн, 10 октября 2016, 13:38

очень интересно, настроил fail2bans, вот настройка для SSH

Код: Выделить всё

[b][i]nano jail.local[/i][/b]
[ssh]
enabled  = true
port     = ssh
filter   = sshd
action = iptables[name=sshd, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
maxretry = 3
bantime = 600

вот вывод лога fail2ban.log

Код: Выделить всё

tail /var/log/fail2ban.log
2016-10-10 11:35:12,736 fail2ban.filter [32748]: INFO    Added logfile = /var/log/mail.log
2016-10-10 11:35:12,736 fail2ban.filter [32748]: INFO    Set maxRetry = 3
2016-10-10 11:35:12,737 fail2ban.filter [32748]: INFO    Set findtime = 600
2016-10-10 11:35:12,738 fail2ban.actions[32748]: INFO    Set banTime = 600
2016-10-10 11:35:12,742 fail2ban.jail   [32748]: INFO    Jail 'ssh' started
2016-10-10 11:35:12,748 fail2ban.jail   [32748]: INFO    Jail 'ssh-iptables-ipset4' started
2016-10-10 11:35:12,754 fail2ban.jail   [32748]: INFO    Jail 'roundcube-auth' started
2016-10-10 11:35:13,025 fail2ban.jail   [32748]: INFO    Jail 'pureftpd' started
2016-10-10 11:35:13,030 fail2ban.jail   [32748]: INFO    Jail 'dovecot-pop3imap' started
2016-10-10 11:35:13,031 fail2ban.jail   [32748]: INFO    Jail 'postfix-sasl' started


вывод IPTables

Код: Выделить всё

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N fail2ban-SSH
-N fail2ban-dovecot-pop3imap
-N fail2ban-postfix-sasl
-N fail2ban-pureftpd
-N fail2ban-roundcube
-N fail2ban-sshd
-A INPUT -p tcp -m multiport --dports 25 -j fail2ban-postfix-sasl
-A INPUT -p tcp -m multiport --dports 110,995,143,993 -j fail2ban-dovecot-pop3imap
-A INPUT -p tcp -m multiport --dports 21 -j fail2ban-pureftpd
-A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-roundcube
-A INPUT -p tcp -m tcp --dport 22 -j fail2ban-SSH
-A INPUT -p tcp -m tcp --dport 22 -j fail2ban-sshd
-A fail2ban-SSH -j RETURN
-A fail2ban-dovecot-pop3imap -j RETURN
-A fail2ban-postfix-sasl -j RETURN
-A fail2ban-pureftpd -j RETURN
-A fail2ban-roundcube -j RETURN
-A fail2ban-sshd -j RETURN


Сижу сам тыкаю неверные пароли - меня не блокирует ...

UDP: Проблема была решена, проблема была со временем, date выводил правильно значение, в логах были ошибки. настроил ntp перезапустил сервер и все нормализовалось


Вернуться в «ISPConfig 3»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость