![]() |
|
![]() |
#1 | |||
Коварный тип
![]() ![]()
|
![]() Защита от брутфорса ssh, ftp, http: fail2ban
fail2ban анализирует логи, и если встречает последовательности, определяемые регулярными выражениям, применяет правила iptables Ставим apt-get install fail2ban Конфигурируем nano /etc/fail2ban/jail.conf Указываем свой почтовый ящик для алертов destemail = root@yourdomain.tld Если есть необходимость, то можно в включить логирование пакетов, попавших в бан banaction = iptables-multiport-log По умолчанию, проверяется и банится только ssh В секциях, которые нам необходимы ставим enabled = true Например: [proftpd] enabled = true port = ftp,ftp-data,ftps,ftps-data filter = proftpd logpath = /var/log/proftpd/proftpd.log maxretry = 6 Для VPS openvz: на ноде делаем следующее: cp /etc/fail2ban/action.d/iptables-allports.conf /etc/fail2ban/action.d/iptables-allports-vps.conf Копируем строки содержащие INPUT, и в скопированном INPUT меняем на FORWARD и меняем на vps также, в actionstart добавим проверку на существование записей в цепочках, чтобы начальные правила не дублировались. nano /etc/fail2ban/action.d/iptables-allports-vps.conf [Definition] actionstart = iptables -N fail2ban-vps iptables -n -L fail2ban-vps | grep RETURN || iptables -A fail2ban-vps -j RETURN iptables -n -L INPUT | grep fail2ban-vps || iptables -I INPUT -p <protocol> -j fail2ban-vps iptables -n -L FORWARD | grep fail2ban-vps || iptables -I FORWARD -p <protocol> -j fail2ban-vps actionstop = iptables -D INPUT -p <protocol> -j fail2ban-vps iptables -D FORWARD -p <protocol> -j fail2ban-vps iptables -F fail2ban-vps iptables -X fail2ban-vps actioncheck = iptables -n -L INPUT | grep -q fail2ban-vps iptables -n -L FORWARD | grep -q fail2ban-vps actionban = iptables -I fail2ban-vps 1 -s <ip> -j DROP actionunban = iptables -D fail2ban-vps -s <ip> -j DROP [Init] name = default protocol = tcp port = anyport nano /etc/fail2ban/jail.conf bantime = 3600 maxretry = 10 banaction = iptables-allports-vps port = anyport [ssh-local] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log [1001-ssh] enabled = true filter = sshd logpath = /vz/private/1001/var/log/auth.log [1001-proftpd] enabled = true filter = proftpd logpath = /vz/private/1001/var/log/proftpd/proftpd.log [1002-ssh] enabled = true filter = sshd logpath = /vz/private/1002/var/log/auth.log [1002-proftpd] enabled = true filter = proftpd logpath = /vz/private/1002/var/log/proftpd/proftpd.log [1003-ssh] enabled = true filter = sshd logpath = /vz/private/1003/var/log/auth.log Теперь, при попытке перебора паролей на SSH или FTP, кулхацкеру будет закрыт TCP на все VPSы и ноду. Можно еще и UDP добавить, но в моем случае, в этом не было необходимости. для проверки, реагиреут ли fail2ban на записи в логах можно воспользоваться утитлтой fail2ban-regex: fail2ban-regex "line" "failregex" fail2ban-regex /var/log/auth.log "Failed [-/\w]+ for .* from " fail2ban-regex /vz/private/1002/var/log/auth.log /etc/fail2ban/filter.d/sshd.conf Проверить конфигурацию fail2ban-client -d Автор: KRoM |
|||
![]() |
![]() |
#3 | |||
Коварный тип
![]() ![]()
|
![]() В дополние к материалм из первого сообщения добавляю новые материалы, для внесеняи полной ясности в настройку Fail2ban.
Итак, начнем сначала. Устанавливаем fail2ban: sudo apt-get install fail2ban Настраиваем fail2ban через правку конфига: jail.conf (/etc/fail2ban/jail.conf) [Definition] loglevel = 3 # уровень детализации логов (1-4) logtarget = /var/log/fail2ban.log # лог-файл socket = /var/run/fail2ban/fail2ban.sock # сокет демона [DEFAULT] ignoreip = 127.0.0.1 212.26.248.138 # Игнорируемые адреса - эти адреса не будут забанены никогда bantime = 600 # Время бана в секундах maxretry = 3 # Число разрешенных попыток по умолчанию backend = polling # Способ слежения за изменением логов. # В большинстве случаев нас устроит дефолтное значение polling (допустимы также gamin и auto). # С методом gamin в Debian существуют некоторые проблемы. destemail = user@test.ru # e-mail для отчетов о банах banaction = iptables-multiport # С помощю чего блокируем protocol = tcp # Протокол # Действие - забанить и выслать whois информацию о брутфорсере на указанный выше e-mail action = iptables[name=%(__name__)s, port=%(port)s] mail-whois-lines[name=%(__name__)s, dest=%(destemail)s, logpath=%(logpath)s] # Далее идут настройки для каждого из сервисов [ssh] enabled = true # разрешен port = ssh # можно указывать числовое значение (в данном случае - 22) filter = sshd # название фильтра (см. директорию /etc/fail2ban/filter.d) logpath = /var/log/auth.log # к какому лог-файлу применить фильтр maxretry = 5 # разрешенное число неудачных попыток # Список сервисов можно расширить самому (изучайте регулярные выражения!) # Нашел в интернете готовый конфиг из которого выкинуто много мне ненужного для большинства серверов, т.к. по дефолту тут масса всего. enabled = true filter = pam-generic port = all banaction = iptables-allports port = anyport logpath = /var/log/auth.log maxretry = 6 [xinetd-fail] enabled = false filter = xinetd-fail port = all banaction = iptables-multiport-log logpath = /var/log/daemon.log maxretry = 2 [ssh-ddos] enabled = true port = ssh filter = sshd-ddos logpath = /var/log/auth.log maxretry = 3 [apache] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache*/*error.log maxretry = 3 [apache-multiport] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache*/*error.log maxretry = 3 [apache-noscript] enabled = true port = http,https filter = apache-noscript logpath = /var/log/apache*/*error.log maxretry = 3 [apache-overflows] enabled = true port = http,https filter = apache-overflows logpath = /var/log/apache*/*error.log maxretry = 2 [proftpd] enabled = true port = ftp,ftp-data,ftps,ftps-data filter = proftpd logpath = /var/log/proftpd/proftpd.log maxretry = 3
Материалы слиты с разных сайтов и собраны в кучу для удобства. |
|||
Последний раз редактировалось Serberg; 01.07.2010 в 00:41.. |
||||
![]() |
![]() |
#4 | |||
Коварный тип
![]() ![]()
|
![]() Установка fail2ban на CentOS 5.6
Установка немного отличается от убунту, но вроде разобрался и все заработало. Итак, заходим под SSH на сервер. Предполагается что Вы в корневой директории. Переходим в папку tmp cd /tmp Качаем файл2бан wget http://sourceforge.net/projects/fail...r.bz2/download Извлекаем архив: tar -xf fail2ban-0.8.4.tar.bz2 Переходим в папку с fail2ban: cd fail2ban-0.8.4 Устанавливаем: python setup.py install Инициализируем, добавляем в автозагрузку и стартуем сервис: cp files/redhat-initd /etc/init.d/fail2ban chkconfig --add fail2ban chkconfig fail2ban on service fail2ban start На последнюю команду должны получить ответ: Код:
Starting fail2ban: [ OK ] Конфиг программы находится тут: /etc/fail2ban/jail.conf Единственное что там стоит поправить, это файл логов в разделе: Код:
[ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=tvoe_milo@mail.ru, sender=fail2ban] logpath = /var/log/secure maxretry = 5 После правки конфига перезапускаем fail2ban: service fail2ban restart Все. параметры самого конфига в постах выше в данной теме. |
|||
![]() |
![]() |
Метки |
fail2ban, ssh, защита |
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Http прокси из компьютера на ubuntu 9.04 | boxx | Linux | 1 | 03.04.2011 13:18 |
Вопрос по хостингу http://nextmail.ru | kaba4ok | Хостинг (Hosting) | 0 | 05.03.2011 08:02 |
Помогите разобраться с установкой Fail2ban | Serberg | Linux | 9 | 25.06.2010 23:20 |
[Статья] Защищаем SSH от брутфорса на любом порту | Serberg | Linux | 0 | 18.06.2010 23:27 |
[Статья] Коды ошибки http веб-сервера | Serberg | Сайтостроение | 0 | 26.05.2010 16:35 |