LINUX.ORG.RU

Помогите разобраться с Fail2ban

 ,


0

1

Приветствую всех форумчан. Вот установил fail2ban и не могу пока разобраться с его фильтрами и действиями. На данный момент не могу решить проблему с Exim, забанить ip. Вот содержимое лога

2017-04-09 06:27:37 [959] SMTP connection from [195.22.126.98]:53643 I=[64.45.my-host-ip]:25 (TCP/IP connection count = 1)
2017-04-09 06:27:57 [11848] SMTP connection from (User) [195.22.126.98]:53643 I=[64.45.my-host-ip]:25 closed by QUIT
2017-04-09 06:27:57 [11848] no MAIL in SMTP connection from (User) [195.22.126.98]:53643 I=[64.45.my-host-ip]:25 D=20s C=EHLO,QUIT
2017-04-09 06:35:10 [959] SMTP connection from [195.22.126.98]:57074 I=[64.45.my-host-ip]:25 (TCP/IP connection count = 1)
2017-04-09 06:35:10 [11944] SMTP connection from (User) [195.22.126.98]:57074 I=[64.45.my-host-ip]:25 closed by QUIT
2017-04-09 06:35:10 [11944] no MAIL in SMTP connection from (User) [195.22.126.98]:57074 I=[64.45.my-host-ip]:25 D=0s C=EHLO,QUIT 2017-04-09 06:39:03 [959] SMTP connection from [195.22.126.98]:61419 I=[64.45.my-host-ip]:25 (TCP/IP connection count = 1)
2017-04-09 06:39:04 [11996] SMTP connection from (User) [195.22.126.98]:61419 I=[64.45.my-host-ip]:25 closed by QUIT
2017-04-09 06:39:04 [11996] no MAIL in SMTP connection from (User) [195.22.126.98]:61419 I=[64.45.my-host-ip]:25 D=1s C=EHLO,QUIT 2017-04-09 06:42:02 [12023] cwd=/ 2 args: /usr/sbin/exim4 -q
2017-04-09 06:42:02 [12023] Start queue run: pid=12023 2017-04-09 06:42:02 [12023] End queue run: pid=12023
То что по умолчанию прилагается, эти фильтра не видят событие
#host_info = H=([\w.-]+ )?(\(\S+\) )?\[<HOST>\](:\d+)? (I=\[\S+\]:\d+ )?(U=\S+ )?(P=e?smtp )? #pid = ( \[\d+\])?
Подскажите правило фильтра для этого события «no MAIL in SMTP connection from» И как вообще их строить?



Последнее исправление: beastie (всего исправлений: 1)

Как обычное регулярное выражение с питоновскими расширениями. Для проверки использовать fail2ban-regex. ЕМНИП, нужно определять failregex, а то, что вы привели (host_info) это вспомогательная регулярка для конструирования чего-то более сложного.

И, не обязательно писать развесистый regexp, наподобие тех, что идут с fail2ban, начитайте с простого. Попробуйте

fail2ban-regex /var/log/mail.log 'no MAIL in SMTP connection from (User) \[<HOST>\]:'

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

Большое спасибо за отзыв, попробую последовать вашему совету. Но я вообще не знаю python, как быть. И вообще теперь не знаю нужен ли fail2ban. Кого будет банить? Пока разбирался с настройками fail2ban, поставил tcpdump port 25. После дамп загрузил в wireshark. Пока со всем этим разбираюсь, но вроде как этот ip который я собрался банить не реальный. Открывалась сессия SYN с одним адресом, а продолжилась с другим. После долгих сканирований, далее атака или что? Wireshark идентифицировал как: Tcp out of order SYN, TCP retransmission SYN, TCP dup ACK, TCP retransmission PSH ACK, Tcp out of order FIN ACK. Немного отдаляясь от темы хочу спросить. Может быть лучше фильтрация по flags TCP будет эффективнее?

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

Там нужен не сам питон. Там нужны расшерения обычных regexp'ов, которые есть в питоне. Но это вам решать, хотите вы изучать регулярные выражения или нет.

По вашем логу как-то странно. Вроде таких, без обратной записи в DNS, Exim должен отпинывать с записью:

no IP address found for host

Открывалась сессия SYN с одним адресом, а продолжилась с другим.

Так не бывает. С какого адреса приходит первый пакет, с этого должны приходить и все остальные, иначе они будут отнесены к другим tcp-соединениям. Судя по логу, у вас там открывается соединение, далее 20 секунд простоя и оно закрывается.

Что именно у вас происходит я не знаю, может сильно загруженный канал/маршрутизатор или просто глючащий маршрутизатор, и, наверное, не у вас, а где-то далеко. Но все эти ″out of order″ и прочие остаётся на уровне ядра, оно не попадает к exim. Поэтому блокировка всяких неправильных пакетов в iptables не приведёт к уменьшению записи в логах.

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

Возможно вы правы, я только немного стал разбираться в TCP. Не имея опыта, трудно разобраться в дампе что происходит. Немного сделал анализ, да там рой). Особо не считал, но примерно около 50 ботов обстукивают порты. Долбят все подряд, а так же 25.Может быть подбирают кодовую комбинацию.... ХЗ. И все эти логи с 25 порта приходят подобного содержания. Все остальное Exim отбрасывает нормально. Попробовал использовать вашу помощь, видимо в строке чего-то не хватает,в ответ получил это: Running tests =============

Use failregex line : no MAIL in SMTP connection from (User) \[<HOST>\]: Use log file : /var/log/exim4/12/mainlog.8 Use encoding : ISO-8859-1

Results =======

Failregex: 0 total

Ignoreregex: 0 total

Date template hits: |- [# of hits] date format | [728] Year(?P<_sep>[-/.])Month(?P=_sep)Day 24hour:Minute:Second(?:,Microseconds)? `-

Lines: 728 lines, 0 ignored, 0 matched, 728 missed [processed in 0.06 sec] Missed line(s): too many to print. Use --print-all-missed to print all 728 lines

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

А, да, круглые скобки это спецсимволы, их нужно заэкранировать:

fail2ban-regex /var/log/mail.log 'no MAIL in SMTP connection from \(User\) \[<HOST>\]:'

Но, если потом вместо ″User″ будут другие строки, то нужно будет менять эту часть регулярного выражения.

Если fail2ban-regex покажет совпадения, то создаёте два файла — в /etc/fail2ban/filter.d/ и в /etc/fail2ban/jail.d, по аналогии с этим: http://embaby.com/blog/tag/fail2ban/

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

Спасибо огромное, правило работает! Со временем сам пойму куда что вставить, но щас пока трудно понять что и куда. Пытался погуглить и найти хоть как и что, безуспешно. По поводу правила, его видимо нужно немного изменить, потому как не только слово (User) встречается, и другие имена, и без скобок с именем домена. Помогите плииз доработать

2017-04-10 06:50:54 [27567] no MAIL in SMTP connection from 66-191-108-186.static.eucl.wi.charter.com [66.191.108.186]:9118 I=[64.45.my-host-ip]:25 D=9s X=TLS1.0:ECDHE_RSA_AES_256_CBC_SHA1:256 CV=no C=EHLO,STARTTLS
2017-04-10 17:34:51   [326] no MAIL in SMTP connection from (info-api.ru) [93.174.93.46]:36023 I=[64.45.my-host-ip]:465 D=1s X=TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256 CV=no C=EHLO,AUTH
2017-04-11 03:07:44  [3327] no MAIL in SMTP connection from census2.shodan.io [198.20.69.98]:60283 I=[64.45.my-host-ip]:465 D=0s

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

Ну, раз там не обязательно есть круглые скобки, просто считаем, что там долно быть просто какое-то слово:

no MAIL in SMTP connection from [^ ]+ \[<HOST>\]

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