у него firewalld - седьмая ветка centos или rhel - там версия изначально 0.9.х
awsswa ( 2016-02-08 19:10:47 +0400 )редактироватьДобрый день. Прошу помощи в следующем вопросе. Имеется Centos7, firewalld, asterisk13, FreePBX
/etc/fail2ban/jail.conf: (Пробовал несколько вариантов action ни один не сработал)
[asterisk]
enabled = true
filter = asterisk
action = firewallcmd-ipset
#action = iptables-allports[name=ASTERISK, protocol=all]
# sendmail[name=ASTERISK, dest=ivanv@domain, sender=fail2ban@local.local]
logpath = /var/log/asterisk/full
maxretry = 2
bantime = 259200
findtime = 21600
/etc/fail2ban/filter.d/asterisk.conf:
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf
[Definition]
_daemon = asterisk
__pid_re = (?:\[\d+\])
iso8601 = \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+[+-]\d{4}
# All Asterisk log messages begin like this:
log_prefix= (?:NOTICE|SECURITY)%(__pid_re)s:?(?:\[C-[\da-f]*\])? \S+:\d*( in \w+:)?
failregex = ^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Registration from '[^']*' failed for '<HOST>(:\d+)?' - (Wrong password|Username/auth name mismatch|No matching peer found|Not a local domain|Device does not match ACL|Peer is not supposed to register|ACL error \(permit/deny\)|Not a local domain)$
^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Call from '[^']*' \(<HOST>:\d+\) to extension '\d+' rejected because extension not found in context 'default'\.$
^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Host <HOST> failed to authenticate as '[^']*'$
^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s No registration for peer '[^']*' \(from <HOST>\)$
^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Host <HOST> failed MD5 authentication for '[^']*' \([^)]+\)$
^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s Failed to authenticate (user|device) [^@]+@<HOST>\S*$
^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s hacking attempt detected '<HOST>'$
^(%(__prefix_line)s|\[\]\s*)%(log_prefix)s SecurityEvent="(FailedACL|InvalidAccountID|ChallengeResponseFailed|InvalidPassword)",EventTV="([\d-]+|%(iso8601)s)",Severity="[\w]+",Service="[\w]+",EventVersion="\d+",AccountID="(\d*|<unknown>)",SessionID=".+",LocalAddress="IPV[46]/(UDP|TCP|WS)/[\da-fA-F:.]+/\d+",RemoteAddress="IPV[46]/(UDP|TCP|WS)/<HOST>/\d+"(,Challenge="[\w/]+")?(,ReceivedChallenge="\w+")?(,Response="\w+",ExpectedResponse="\w*")?(,ReceivedHash="[\da-f]+")?(,ACLName="\w+")?$
^(%(__prefix_line)s|\[\]\s*WARNING%(__pid_re)s:?(?:\[C-[\da-f]*\])? )Ext\. s: "Rejecting unknown SIP connection from <HOST>"$
Делаю проверку правил: fail2ban-regex /var/log/asterisk/full /etc/fail2ban/filter.d/asterisk.conf
Results
=======
Failregex: 50 total
Т.е. правила вроде настроены правильно Но когда пытаюсь подключиться с неправильным паролем или без пароля - то fail2ban не добавляет ip - в бан.
Попробуйте использовать следующий пример:
[asterisk]
enabled = true
filter = asterisk
action = iptables-multiport[name=asterisk-tcp, port="5060,5061", protocol=tcp]
iptables-multiport[name=asterisk-udp, port="5060,5061", protocol=udp]
sendmail-whois[name=Asterisk, dest=support@f2b.com, sender=sip-f2b@f2b.com, sendername="SIP Fail2Ban"]
logpath = /var/log/asterisk/messages
/var/log/asterisk/security
bantime = 259200
maxretry = 3
Это стандартные action f2b в последних версиях ветки 0.8.Х. Так что они всегда должны быть в наборе 100%. Ещё важно то что вы пишите в /var/log/asterisk/full. Возможно там просто не логируются события о которых стоит знать f2b. Я бы посоветовал в logger.conf разделить логи безопасности в 2 файла /var/log/asterisk/messages и /var/log/asterisk/security во первых потому что туда будет писаться только то что относится к безопасноти и вы будете уверены что сравнение происходит с тем что нужно, а во вторых f2b не будет проверять огромные файлы с тем же выводом консоли тратя на это время и ресурсы.
И ещё от себя добавлю что лучше всё своё добро писать в /etc/fail2ban/jail.local а не в основной jail.conf.
у него firewalld - седьмая ветка centos или rhel - там версия изначально 0.9.х
awsswa ( 2016-02-08 19:10:47 +0400 )редактироватьу меня было такое, не банил из-за не совпадения времени в логах фаил2бан и астериск. уже не помню как вылечил, а разница была как раз в 6 часов.
И стандартные правила не работают, добавте в фильтр вот это и будет вам счатье:
\[\]\s*(?:NOTICE|SECURITY).*SecurityEvent="(FailedACL|InvalidAccountID|ChallengeResponseFailed|InvalidPassword)",.*RemoteAddress="IPV[46]/(
UD|TC)P/<host>.*
стандарные правила не смотрят на время. надо реально чтото криво сделат, чтоб время учитывалося
meral ( 2016-02-05 21:20:48 +0400 )редактироватькак не смотрят, если в течении 10 мин 3 неудачных попытки то банить, это по вашему не смотрят? если это 10 минут были в прошлом то тогда правила не сработает.
baf28 ( 2016-02-05 21:32:52 +0400 )редактироватьПроверил время одинаковое в файлах. Пробовал добавить ваш фильтр - все равно не банит.
ipvinner ( 2016-04-14 09:19:01 +0400 )редактироватьудалите файлик full. подключитесь с неправильным паролем, проверьте еще раз правила. если ок, смотрите actions чтоб совпадало с вашим типом фаервола.
зы вообщето есть файлки /var/log/fail2ban.log в котором описано, что происходит.
в этом файлике какой-то полезной информации особо нет. 2016-02-03 09:34:19,271 fail2ban.jail [26046]: INFO Jail 'sshd' started 2016-02-03 09:34:19,274 fail2ban.filtersystemd [26046]: NOTICE Jail started without 'journalmatch' set. Jail regexs will be checked against all journal entries, which is not advised for performance reasons. 2016-02-03 09:34:19,278 fail2ban.jail [26046]: INFO Jail 'asterisk' started
А что дает удаление файла?
ipvinner ( 2016-02-03 13:38:41 +0400 )редактироватьну старых match не будет же. вы же их удалили. потом можно посмотреть сматчится ли на ваши конкртеные попытки. если в логе ничего нет - значит не работает.
meral ( 2016-02-03 18:17:51 +0400 )редактироватьЗадан: 2016-02-02 18:38:36 +0400
Просмотрен: 4,161 раз
Обновлен: Feb 08 '16
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Время бана меняли? Попробуйте для начала вернуть стандартное.
Out ( 2016-02-02 19:26:04 +0400 )редактироватьтут скорей надо спросить - удалил ли он firewalld и перешел ли на iptables = потому как я перешел и у меня всё банит. В стандарной настройке там отдельный файлик лежит для firewalld который точно работает. И еще вопрос SSH банит ?
awsswa ( 2016-02-02 22:54:18 +0400 )редактироватьПопробовал поменять время бана на 3600 или вообще закоментировать и использовать по умолчанию.
По ssh банит удачно. Так, что использовать firewalld и fail2ban с asterisk нельзя?
ipvinner ( 2016-02-03 13:35:32 +0400 )редактироватьРаз SSH банит значит конфигурация рабочая - пробовали сменить action = firewallcmd-ipset на banaction = тря-ля-ля
awsswa ( 2016-02-03 15:42:05 +0400 )редактироватьуже попробовал - все равно не работает. В логе нет активности, хотя Jail 'asterisk' started
ipvinner ( 2016-02-03 19:10:00 +0400 )редактировать