如何使用 iptables 阻止所有进出某个 IP 地址的流量

如何使用 iptables 阻止所有进出某个 IP 地址的流量

我正在尝试阻止所有进出内部 IP 地址的流量(此服务器充当网络路由器)。到目前为止,我已尝试了以下操作:iptables -A INPUT -s 192.168.1.111 -j DROP & iptables -A OUTPUT -d 192.168.1.111 -j DROP,其中 192.168.1.111 是我正在尝试阻止流量的 IP 地址。局域网连接到 br0。这是我当前的 iptables 设置(我已删除端口转发等,以使其更易于浏览):

# Generated by iptables-save v1.4.8 on Sat Feb 16 21:21:16 2013
*nat
:PREROUTING ACCEPT [184556:41149689]
:POSTROUTING ACCEPT [13698:835740]
:OUTPUT ACCEPT [77252:6378101]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Sat Feb 16 21:21:16 2013
# Generated by iptables-save v1.4.8 on Sat Feb 16 21:21:16 2013
*filter
:INPUT DROP [10054:2687428]
:FORWARD ACCEPT [1377:76856]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 192.168.1.0/24 -i br0 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -s 127.0.0.1/32 -j ACCEPT
-A FORWARD -i eth0 -o Br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i br0 -o eth0 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -j ACCEPT
-A OUTPUT -s 127.0.0.1/32 -j ACCEPT
COMMIT
# Completed on Sat Feb 16 21:21:16 2013

使用当前设置,我该如何阻止所有进出 IP 的流量?我对 iptables 并不是最了解,所以任何帮助我都会非常感激,谢谢!

答案1

INPUT和iptables链OUTPUT适用于发往本地服务器的流量。通过防火墙路由的任何数据包都由该FORWARD链处理。因此在这种情况下,您需要使用该链阻止 Linux 路由器将数据包转发到内部客户端FORWARD

我建议您从 FORWARD 链的默认 DROP 策略开始。因为您当前的设置显示默认情况下您的 FORWARD 策略是 ACCEPT,这不是最安全的设置。因此,从转发的丢弃策略开始,其中 -

  iptables -P FORWARD DROP

然后允许数据包转发到内部客户端 -

  iptables -A FORWARD -s source-net/subnet -d destination-net/subnet -j ACCEPT
  iptables -A FORWARD -m state –state NEW,ESTABLISHED -s source-net/subnet -j ACCPET
  iptables -A FORWARD -m state –state ESTABLISHED -j ACCEPT

如果内部客户端位于允许的子网内,则设置规则以明确丢弃发往该客户端的数据包 -

   iptables -I FORWARD -s 0/0 -d 192.168.1.111 -j DROP
   iptables -I FORWARD -s 192.168.1.111 -d 0/0 -j DROP

答案2

您所犯的错误是,您附加了 (-A) 192.168.1.111 的阻止规则,而不是将其插入 (-I),因为如果您注意的话,INPUT/OUTPUT 中的某些规则确实允许来自 192.168.1.X 网段的流量。因此请执行以下操作:

iptables -I INPUT -s 192.168.1.111 -j DROP
iptables -I OUTPUT -d 192.168.1.111 -j DROP

如果 192.168.1.111 使用与路由器相同的服务器,则向 FORWARD 链添加类似规则

iptables -I 转发 -d 192.168.1.111 -j 删除

相关内容