我正在尝试在 Fail2Ban 中创建一个 jail 来保护 Asterisk PBX。我已经按照建议做了,并复制了jail.conf
名为的文件jail.local
。在 中jail.local
,我按如下方式设置了一个 asterisk jail:
[asterisk]
port = 5060,5061
action_ = %(default/action_)s[name=%(__name__)s-tcp, protocol="tcp"]
%(default/action_)s[name=%(__name__)s-udp, protocol="udp"]
logpath = /var/log/asterisk/messages
maxretry = 10
然后,在jail.d
文件夹中,我创建了一个名为asterisk.full
:
[asterisk-full]
backend = polling
enabled = true
port = all
filter = asterisk-full
logpath = /var/log/asterisk/messages
maxretry = 3
findtime = 1200
bantime = 600
在filter.d
我放置的文件夹中asterisk-full.conf
:
[Definition]
failregex = .*NOTICE.* .*: Request '.*' from '.*' failed for '<HOST>:.*' .*- Failed to authenticate
.*NOTICE.* .*: Request '.*' from '.*' failed for '<HOST>:.*' .*- No matching endpoint found
ignoreregex =
问题是,如果我尝试使用命令进行过滤
sudo fail2ban-regex /var/log/asterisk/full /etc/fail2ban/filter.d/asterisk-full.conf
它确实有效,它正确地看到了日志文件并匹配了行,但问题是 jail 在 fail2ban 中没有激活。
这是我启动时得到的fail2ban-client status
:
Status
|- Number of jail: 1
`- Jail list: sshd
并且 Asterisk 监狱没有列出。
我运行了命令fail2ban-client reload
和systemctl restart fail2ban
,但无济于事。
所以是 CentOS 7。
答案1
jail 尚未启动,因为其中的文件jail.d
必须以.local
或结尾.conf
。因此请将您的 重命名asterisk.full
为asterisk.conf
。
另外,不要同时对某个 jail 使用jail.local
和jail.d/*
文件;要么使用其中一个,要么使用另一个。在这种情况下,只需删除 jail.local 文件即可。
从 asterisk.conf 中删除任何冗余部分,仅包含将保存自定义非标准值的参数(省略的参数将从中的默认值中获取jail.conf
,这些默认值应保持不变)。
[asterisk]
backend = polling
enabled = true
logpath = /var/log/asterisk/full
maxretry = 3
findtime = 1200
bantime = 600
将您的asterisk-full.conf
内部filter.d
文件夹重命名为asterisk.conf
(这不是必需的,但您必须提供具有该值的filter
参数jail.d/asterisk.conf
,否则它将默认为监狱的名称,在本例中仅为asterisk
)。
检查参数的值是否确实符合您的标准(例如,后端是否正在轮询,或者 logpath 是否有正确的路径等)。重新启动 fail2ban 并检查其状态,然后应该会列出新的 jail。