Iptables 忽略配置文件中的规则

Iptables 忽略配置文件中的规则

我看到很多从 ip 188.241.114.22 到我的 apache 服务器的连接,这最终导致 apache 挂起。重新启动服务后,一切正常。我尝试在 iptables 中添加一条规则

-A INPUT -s 188.241.114.22 -j DROP

但尽管如此,我仍然看到来自该 IP 的连接。我使用的是 centOS,并添加了如下规则:

iptables -A INPUT -s 188.241.114.22 -j DROP

之后我使用以下命令保存它:service iptables save
以下是 iptables -L -v 的输出

    链输入(策略接受120K数据包,16M字节)

     pkts 字节数 目标 协议 选择加入 退出 源 目标
    0 0 DROP 全部 -- 任何 任何 lg01.mia02.pccwbtn.net 任何地方
    0 0 DROP 全部 -- 任何任何 c-98-210-5-174.hsd1.ca.comcast.net 任何地方
    0 0 DROP 全部 -- 任何任何 c-98-201-5-174.hsd1.tx.comcast.net 任何地方
    0 0 DROP 全部 -- 任何 任何 lg01.mia02.pccwbtn.net 任何地方
    0 0 DROP 全部 -- 任何 任何 www.dabacus2.com 任何地方
    0 0 DROP 全部 -- 任何 任何 116.255.163.100 任何位置
    0 0 DROP 全部 -- 任何 任何 94.23.119.11 任何位置
    0 0 DROP 全部 -- 任何 任何 164.bajanet.mx 任何地方
    0 0 DROP 全部 -- 任何 任何 173-203-71-136.static.cloud-ips.com 任何地方
    0 0 DROP 全部 -- 任何 任何 v1.oxygen.ro 任何地方
    0 0 DROP 全部 -- 任何 任何 74.122.177.12 任何位置
    0 0 DROP 全部 -- 任何 任何 58.83.227.150 任何位置
    0 0 DROP 全部 -- 任何 任何 v1.oxygen.ro 任何地方
    0 0 DROP 全部 -- 任何 任何 v1.oxygen.ro 任何地方

链转发(策略接受 0 个数据包,0 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标

链输出(策略接受 186K 数据包,224M 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标

答案1

命令 iptables -A INPUT 在 INPUT 链的末尾添加了一条新规则。Iptables 遵循第一匹配原则,因此您很可能在链的较早部分有允许访问端口 80 的规则。

使用以下命令保存 iptables 的状态:

service iptables save
然后编辑/etc/sysconfig/iptables文件并将允许端口 80 的行移到 -A INPUT -s 188.241.114.22 -j DROP上面。保存文件并运行

service iptables restart

答案2

与大多数防火墙访问列表 (ACL) 一样,条目是从上到下读取的。状态防火墙(基于主机和基于网络)的新手通常会在输入规则之前检查所应用的访问列表,以查找符合相同条件的类似规则。当防火墙管理员在拒绝规则之后放置允许规则并好奇为什么他们仍然无法从主机获得连接时,通常会这样做。

我的建议是检查您的访问列表,看看在您尝试的语句之前是否有任何内容与您的语句匹配。您的拒绝规则可能应该位于列表的顶部,因为阻止该流量对您来说是高优先级。只需具体说明您要阻止的主机即可。

答案3

根据您提供的信息,阻止此 IP 的规则似乎存在,并且在此之前似乎没有任何东西以更普遍的意义上接受流量(除非您只复制其中的一部分)。

尝试阻止对此 IP 的输出:

 iptables -I OUTPUT -d <dst-ip> -j DROP

答案4

好吧,由于您的 netfilter 相当暗淡(至少在您的解释中),您可以使用 ip route 删除该主机: sudo ip route add unreachable 188.241.114.22。 这也将更加 CPU 友好,因为路由表使用 Hash 或 Tree 来存储大量路由(而不是数据包进入时要继续的列表)。

相关内容