我在服务器上使用 Fail2Ban,我想知道如何正确取消 IP。
我知道我可以直接使用 IPTables: iptables -D fail2ban-ssh <number>
但是有没有办法做到这一点fail2ban-client?
在手册它规定是这样的:fail2ban-client get ssh actionunban <IP>。但这不起作用。
另外,我不想这样做,/etc/init.d/fail2ban restart因为那样会失去列表中的所有禁令。
当我运行这个命令时,fail2ban-client status sshd我得到了这个:
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 81
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 2
|- Total banned: 8
`- Banned IP list: 218.65.30.61 116.31.116.7
Run Code Online (Sandbox Code Playgroud)
它只在禁用 IP 列表中显示两个 IP,而不是像 Total Banned 所说的那样显示 8 个。
当我这样做时,tail -f /var/log/auth.log我得到了这个:
Mar 29 11:08:40 DBSERVER sshd[29163]: error: maximum authentication attempts exceeded for root from 218.65.30.61 port 50935 ssh2 [preauth]
Mar 29 11:08:40 DBSERVER sshd[29163]: …Run Code Online (Sandbox Code Playgroud) 我正在设置 LAMP 服务器,需要阻止 SSH/FTP/等。成功的蛮力登录尝试。我已经看到了许多关于 denyhosts 和 fail2ban 的建议,但很少对两者进行比较。我还读到 IPTables 规则可以填充相同的功能。
为什么我会选择其中一种方法而不是另一种方法?serverfault 上的人如何处理这个问题?
我有一个fail2ban配置如下:
这非常有效,我想保持这种方式,以便有效用户有机会在超时后重试登录。现在,我想实现一个规则,如果相同的 IP 被检测为攻击并被阻止,解除阻止 5 次,永久阻止该 IP 并且永远不会再次解除阻止。这可以单独使用fail2ban来实现还是我需要编写自己的脚本来做到这一点?
我在centos中这样做。
在我的服务器中,ssh 端口不是标准的 22。我设置了不同的端口。如果我设置了fail2ban,它能检测到那个端口吗?我如何告诉它检查该端口而不是端口 22?
的输出iptables -L -v -n:
Chain fail2ban-ssh (1 references)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 119.235.2.158 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain fail2ban-ssh-ddos (0 references)
pkts bytes target prot opt in out source destination
Run Code Online (Sandbox Code Playgroud)
服务 iptables status 的输出:
iptables: unrecognized service
Run Code Online (Sandbox Code Playgroud)
总结fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf:
Summary
=======
Addresses found:
[1]
[2]
[3]
113.59.222.240 (Wed Mar 21 18:24:47 2012)
113.59.222.240 …Run Code Online (Sandbox Code Playgroud) 如何为同一规则配置多个日志路径?
我正在尝试编写这样的语法:
[apache-w00tw00t]
enabled = true
filter = apache-w00tw00t
action = iptables-allports
logpath = /var/log/apache*/*error.log
logpath = /var/www/vhosts/site1.com/log/errorlog
logpath = /var/www/vhosts/site1.com/subdom/log/errorlog
logpath = /var/www/vhosts/site3/log/errorlog
logpath = /var/www/vhosts/site4/log/errorlog
maxretry = 1
Run Code Online (Sandbox Code Playgroud)
路径都不同,所以我不能使用 RE *
将更多日志放入规则的正确语法是什么?
jail.local 文件是作为 jail.conf 的覆盖还是作为 jail.conf 的替代?
当我从教程中学习Fail2Ban时,他们中的大多数人通常会说要么将 jail.conf 复制到 jail.local 并在那里进行编辑,其中一些人说要创建一个新的 jail.local 文件并提供一堆要复制的设置和粘贴。但他们没有解决的是 jail.local 如何与 jail.conf 一起工作。这些是2个场景:
覆盖:如果jail.local 充当jail.conf 文件的覆盖,那么我需要做的只是将我想要覆盖的必要配置添加到jail.conf 中给出的默认值中。在这种情况下,我不需要添加 SSH 配置等,因为它已经包含在 jail.conf 中。
替换:如果jail.conf 在jail.local 存在时无效,那么我需要在jail.local 中添加所有规则,然后编辑我想要修改的规则。
你能确认当 jail.local 存在时 jail.conf 会发生什么吗?如果 jail.local 的行为就像是在 jail.conf 文件之上的覆盖,那么对我来说,只需添加几行我想添加的规则就更容易了,这也使维护和可读性变得容易。什么是最好的方法?
我在所有具有公开可见服务的服务器上使用 fail2ban,我想知道:
自设置此服务器的第一天起,我就进行了无数次登录尝试。
我的 Centos 服务器上运行着 Fail2Ban。(配置如下)
在我的var/log/messages我注意到一些非常奇怪的事情:
Jun 19 12:09:32 localhost fail2ban.actions: INFO [postfix] 114.43.245.205 already banned
Run Code Online (Sandbox Code Playgroud)
我配置了 Fail2Ban 以将禁止的 IP 添加到 iptables。
我的 jail.conf:
[postfix]
enabled = true
filter = postfix
action = iptables
port = smtp,ssmtp
filter = postfix
logpath = /var/log/maillog
bantime = 43200
maxretry = 2
Run Code Online (Sandbox Code Playgroud)
我的 postfix.conf:
[INCLUDES]
before = common.conf
[Definition]
failregex = reject: RCPT from (.*)\[<HOST>\]: 550 5.1.1
reject: RCPT from (.*)\[<HOST>\]: 450 4.7.1
reject: RCPT from (.*)\[<HOST>\]: 554 5.7.1
reject: RCPT from …Run Code Online (Sandbox Code Playgroud) 如果服务器重新启动,或者即使 fail2ban 停止/启动,它也会发送通知。
[asterisk-iptables]
enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, protocol=all]
sendmail-whois[name=ASTERISK, dest=blah@foo.com, sender=blah@foo.com]
logpath = /var/log/asterisk/messages
maxretry = 5
bantime = 259200
Run Code Online (Sandbox Code Playgroud)
删除 sendmail-whois 会停止它,但它也会停止禁止通知,我怎样才能让它在进程开始/停止时停止通知我?
谢谢