dig*_*123 2 networking linux firewall iptables rhel-5
我正在尝试删除到我的服务器的所有传入连接,但来自特定网络的除外。同时,我希望从我的服务器到外部网络(任何协议的任何网络)的所有传出连接保持打开状态。它通过在 INPUT 链中进行以下两个更改来工作:
注意:测试是在 3 个服务器 (VM) 上完成的,IP 位于 192.168.0.0/24 网络上,所有规则都定义在 server3 (IP: 192.168.0.3) 上
a. iptables -P INPUT DROP
b. iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
[root@server3 ~]# iptables -nvL
Chain INPUT (policy DROP 124 packets, 22308 bytes)
pkts bytes target prot opt in out source destination
265 34603 ACCEPT all -- * * 192.168.0.0/24 0.0.0.0/0
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 433 packets, 34693 bytes)
pkts bytes target prot opt in out source destination
Run Code Online (Sandbox Code Playgroud)
但是,我的第一个问题是:
我想通过不更改 INPUT 链的默认策略来实现相同的目的,如下所示:
c. iptables -I INPUT -j DROP
d. iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
但它仍然阻止所有传入/传出到/来自我的 server3 的连接。这让我想到我的第二个问题:
c.和a.工作方式有何不同?请帮助理解,因为我是 linux 防火墙的新手。如果您有默认的 DROP INPUT 策略,即使是来自您的传出连接的响应数据包也会被丢弃。
要接受这些,请添加以下输入规则:
iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
至于您的最后一个问题,在您的c and d示例中(假设这些命令之前的规则为空),您正在设置第一个规则drop everything和第二个规则,以接受来自某个网络的流量。IPTABLES 会尽快获取匹配项,因此第一个规则始终匹配(未设置条件),因此之后的每个规则都不会执行。规则的例外必须在规则之前定义。
在第一个示例中-P INPUT DROP,您设置的最后一条规则将捕获之前未匹配的任何内容,因此添加的任何异常都将在该默认规则 ( -P)之前执行。
-I 插入到某个位置(例如,在我之前的命令中,我将 ESTABLISHED,RELATED 规则设置为第一个,因此无论您之后设置什么,它都会匹配。
-A 附加到规则列表,因此 if 将在默认值之前匹配。
如果您想使用显式规则(如c and d)实现与第一个示例相同的效果,您应该交换这些规则的位置。
| 归档时间: |
|
| 查看次数: |
12876 次 |
| 最近记录: |