IPtables 的 Fail2ban 块在 Debian Lenny 上不起作用。

IPtables 的 Fail2ban 块在 Debian Lenny 上不起作用。

我最近决定进行一些安全维护。我看到了我的日志,并且对我的 SSH 服务器进行了一些尝试。首先,我将 SSH 端口从默认的 22 移开。之后,我读到了一些关于失败2禁止,块主机拒绝主机

我看了一下第一个:配置简单,一切都好理解;但当我试图“探究它的保护”时,测试失败。一切似乎都很好,但我仍然可以访问服务器。

我还测试了 IPtables:# iptables -I INPUT -j DROP- 之后我的 SSH 连接丢失了(所以,我想要的)。然后# iptables -I INPUT -s 84.x.y.z -j DROP,这也起作用了。

但是,Fail2ban 做了什么规则,那不起作用:( $ sudo iptables -L)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
fail2ban-apache  tcp  --  anywhere             anywhere            multiport dports www,https
fail2ban-ssh  tcp  --  anywhere             anywhere            multiport dports ssh
fail2ban-ssh-ddos  tcp  --  anywhere             anywhere            multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        

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

Chain fail2ban-ssh (1 references)
target     prot opt source               destination        
DROP       all  --  84.x.y.z           anywhere            
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh-ddos (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere

加载的内核模块:( $ lsmod | grep ip)

iptable_nat             4680  0
nf_nat                 15576  1 iptable_nat
nf_conntrack_ipv4      12268  3 iptable_nat,nf_nat
nf_conntrack           55540  4 xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4
xt_multiport            2816  2
iptable_filter          2624  1
ip_tables              10160  2 iptable_nat,iptable_filter
x_tables               13284  5 xt_state,xt_tcpudp,iptable_nat,xt_multiport,ip_tables
ipv6                  235396  24

版本:

  • Debian Lenny 5.06,内核 2.6.26-2-686
  • IP表1.4.2-6
  • Fail2ban 0.8.3-2sid1
  • openssh-server1:5.1p1-5

逐步测试#1:

  1. 将 Fail2ban 配置为低禁令时间。 60 秒。然后重新加载。
  2. 尝试直接使用错误的密码登录(使用 SSH)。
  3. 第 6 次输入正确的密码(此处最多尝试次数仅为 4)。我登录了。我还可以访问该服务器托管的网页。
  4. iptables -L正如上面提到的那样向我展示。因此,当我连接并命令我的服务器时,禁令已生效。

逐步测试#2:

  1. 停止 Fail2ban。创建一个at脚本,以便将来删除下面编写的禁止规则。 ( iptables -D INPUT 1)
  2. 创建禁止规则:iptables -I INPUT 1 -s 84.x.y.z -j DROP
  3. 我无法输入任何其他内容,SSH 连接无法使用。我无法访问该网页。所以,我想从 iptables 得到什么。
  4. 脚本完成后at,我可以访问我的服务器。

我没有看到解决方案,我应该怎么做才能使我的 IPtables 禁令(由 Fail2ban 制作)发挥作用?

答案1

我在安装fail2ban之前发现了问题,我做了什么。抱歉占用您的时间。

出于安全原因,我将 sshd 从端口 22 移至另一个端口。中的参考iptables仅指端口 22。我想,它是一个变量,总是指当前的 sshd 端口。但不是

确切的解决方案(如果您将守护进程从其原始端口移走):

  1. 打开jail.local(或.conf)。
  2. 找到您的服务(在大括号中)。
  3. 将该port部分修复为全部。例子:port = all
  4. banaction在端口线后添加或编辑现有线,并带有值iptables-所有端口。例子:banaction = iptables-allports
  5. 重新启动守护进程。例子:# service fail2ban restart

我找不到更改port ssh指令的解决方案,或在那里写一个数字。如果您有非全端口的解决方案,我会听听!

答案2

在我将 ssh 服务器移动到非标准端口 12345 (比方说)后,我遇到了同样的问题,fail2ban 没有禁止。

为了使fail2ban在多次失败的身份验证尝试后产生正确的规则,我编辑了 /etc/fail2ban/jail.conf.

port = ssh 

进入

port = 12345

我认为类似的方法也适用于非标准端口上的其他服务。

答案3

fail2ban 的设置位于/etc/fail2ban/jail.local.在默认安装中,我不确定它是否存在。然后你要做的就是复制jail.confjail.local,这样你就有了两个文件/etc/fail2ban/。编辑jail.local,转到包含它的行[ssh]并启用它,如下所示:

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

之后,重新启动fail2ban:

sudo /etc/init.d/fail2ban restart

现在可能可以工作了,我已经这样设置了,并且可以工作。

答案4

您将“Fail2ban 0.8.3-2sid1”列为已安装。这是不受支持的配置。 Sid 软件包不应安装到稳定的环境中。

我在一个虚拟机中运行 Debian 6 (Squeeze),它是从 Lenny 升级而来的,专门作为我家的 SSH 服务器。我也使用fail2ban。我执行了您的测试 #1,一切都按预期进行。我在最大尝试次数内未能登录,然后我的登录请求被丢弃了 60 秒。

我的版本列表:

  • /etc/debian_版本 = 6.0.1
  • 失败2禁止= 08..4-3
  • iptables = 1.4.8
  • openssh 服务器 = 1:5.5p1-6

相关内容