LINUX.ORG.RU

Не работает как надо fail2ban

 , ,


0

1

Добрый вечер.

### CentOS 6.6 ###

Установил fail2ban из репозитория epel (версия 0.8.14):

yum install fail@ban

Скопировал конфигурационный файл:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Изменил в jall.local секцию (так везде пишут):

[ssh-iptables]

# Включено 
enabled  = true
# Использовать фильтр : /etc/fail2ban/filter.d/sshd.conf
filter   = sshd
# Действия, выполняемые при бане IP адреса :
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=admin@example.com, sendername=«Fail2Ban»]
# Файл с логами, которые будет отслеживать Fail2Ban :
logpath  = /var/log/fail2ban.log
# если в течении 1 часа
findtime    = 3600
# произведено 3 неудачных попыток залогиниться
maxretry    = 3
# IP адрес будет забанен на 20 минут
bantime     = 1200

Запустил fail2ban:

service fail2ban start

iptables -L при этом показывает:

Chain INPUT (policy DROP)
target     prot opt source               destination
fail2ban-SSH  tcp  —  anywhere             anywhere            tcp dpt:ssh
ACCEPT     all  —  anywhere             anywhere
ACCEPT     icmp —  anywhere             anywhere
ACCEPT     all  —  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  —  anywhere             anywhere            multiport dports ssh,ftp,EtherNet/IP-1

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain fail2ban-SSH (1 references)
target     prot opt source               destination
RETURN     all  —  anywhere             anywhere

Намерено ввожу неправильный пароль при входе в ssh-терминал, никакого бана не происходит, в лог /var/log/fail2ban.log ничего не пишется

Переименовал секцию [ssh-iptables] на [ssh], перезагрузил fail2ban - начинает банить, но банит на время по правилам из секции [DEFAULT] и лог пишет так-же тот, который указан в секции [DEFAULT]

iptables -L при этом показывает:

Chain INPUT (policy DROP)
target     prot opt source               destination
fail2ban-SSH  tcp  —  anywhere             anywhere            tcp dpt:ssh
fail2ban-SSH  tcp  —  anywhere             anywhere            tcp dpt:ssh
ACCEPT     all  —  anywhere             anywhere
ACCEPT     icmp —  anywhere             anywhere
ACCEPT     all  —  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  —  anywhere             anywhere            multiport dports ssh,ftp,EtherNet/IP-1

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain fail2ban-SSH (2 references)
target     prot opt source               destination
RETURN     all  —  anywhere             anywhere
RETURN     all  —  anywhere             anywhere

Подскажите пожалуйста, в чем может быть дело?

Спасибо.

# Файл с логами, которые будет отслеживать Fail2Ban : logpath = /var/log/fail2ban.log

Вообще должно быть что-то вроде

logpath  = /var/log/auth.log

Вот тебе пример работающей секции:

[ssh]

enabled  = true
port     = 22
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6
bantime  = 604800

И проверь чтоб фильтр sshd был в filter.d.

alozovskoy ★★★★★ ()

у меня в CentOS было так:

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, sender=fail2ban@anyway-test.vcb.local, sendername="Fail2Ban"]
logpath  = /var/log/secure
maxretry = 5

Все остальные настройки по дефолту

JB ★★★★★ ()
Последнее исправление: JB (всего исправлений: 2)

ssh перевесь на другой порт и убери авторизацию по паролю, чем это глюкалово для защиты ssh использовать. Тем более, что от очередного shellshock оно не поможет.

anonymous ()

Но хоть секция [ssh] в файле jail.local и срабатывает на бан, но время бана и файл логов все равно берутся из секции [DEFAULT] в основном файле jail.conf и даже если я в файле jail.local пытаюсь переопределить секцию [DEFAULT]:

[DEFAULT]

bantime     = 900
logpath  = /var/log/auth.log

[ssh]
enabled  = true
port     = 22
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3
bantime  = 1800

то все равно бан происходит на bantime = 600 и логи пишутся в файл logpath = /var/log/secure определенные в секции [DEFAULT] в основном файле jail.conf

Nezhnayka28 ()
Ответ на: комментарий от alozovskoy

Так у тебя лог какой читался в секции [ssh-iptables]?

Да пробовал и logpath = /var/log/secure и logpath = /var/log/auth.log - бесполезно

ssh перевесь на другой порт и убери авторизацию по паролю,

А если перевесить ssh на другой порт, то все службы завязанные на ssh полетят к чертям, нужно будет все перенастраивать? По поводу авторизации - как организовать авторизацию не по паролю?

Nezhnayka28 ()
Ответ на: комментарий от Nezhnayka28

логи пишутся в файл logpath

Да не пишутся они туда, fail2ban парсит этот лог и банит на основе его содержания. Лог своей работы он пишет в /var/log/fail2ban.log если ты там дополнительно ничего не накрутил.

alozovskoy ★★★★★ ()
Ответ на: комментарий от alozovskoy

Да не пишутся они туда, fail2ban парсит этот лог и банит на основе его содержания.

А когда я указываю эту директиву:

[ssh-iptables]
logpath  = /var/log/auth.log
то что должно произойти? fail2ban начинает парсить лог /var/log/auth.log? Если да, то как я могу сказать fail2ban, чтобы он начал писать именно в него содержание, на основании которого будет строится бан?

Лог своей работы он пишет в /var/log/fail2ban.log

Т.е. лог кого он забанил пишет сюда по-умолчанию?

Nezhnayka28 ()
Ответ на: комментарий от Nezhnayka28

Да,все разобрался, на самом деле когда указываю в jail.local:

[ssh-iptables]
....
....
logpath = /var/log/secure
На самом деле начинает работать! Почему-то мне казалось, что я уже раньше так делал и не работало.

По поводу авторизации SSH не по паролю, вы видимо имели в виду авторизацию по ключу, надо будет поразмыслить, там конечно возни порядочно и некоторые неудобства использования - но наверное на самом деле это оправдано, особенно когда речь идет о серьезном сервере, а не так VPS для своих говносайтиков или говносайтиков клиентов.

Nezhnayka28 ()
Ответ на: комментарий от alozovskoy

Да не пишутся они туда, fail2ban парсит этот лог и банит на основе его содержания.

Спасибо, помогли разобраться с этим fail2ban, а то я уже чуть было совсем разочаровался в этой утилите.

Nezhnayka28 ()
Ответ на: комментарий от alozovskoy

Никакой возни, все даже проще чем с паролем.

Ну я имею в виду, что каждому (если не одному человеку нужно заходить в терминал SSH) нужно генерить и раздавать ключи + не знаю - возникнут ли какой-нибудь гемор с настройкой программ и сервисов имеющих какое-либо отношение к SSH (если изменить дефолтный порт 22 SSH на другой)?

Nezhnayka28 ()
Ответ на: комментарий от Nezhnayka28

Ну порт КМК в 99% программ можно произвольный указать, а что касается раздавания ключей - за то пользователям не нужно каждый раз пароль вводить да и тебе доступом рулить проще - убил ключ на сервере и больше его владелец туда не попадет.

alozovskoy ★★★★★ ()
Ответ на: комментарий от alozovskoy

Ну порт КМК в 99% программ можно произвольный указать, а что касается раздавания ключей - за то пользователям не нужно каждый раз пароль вводить да и тебе доступом рулить проще - убил ключ на сервере и больше его владелец туда не попадет.

Понял, спасибо, обязательно попробую такой подход.

Nezhnayka28 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.