我想模拟一个类似 DMZ 的场景,其中 server1(DMZ 内,10.1.1.0)应该能够响应任何传入连接,并且不能自行建立新的传出连接。
如果有人能提供一个可行的示例我将不胜感激。
例子:
我正在做一个简单的测试。我从 10.2.2.10 访问托管在 10.1.1.10 上的网页。因此,如果此规则允许所有传入和仅允许相关/已建立的传出,我应该能够打开网页并在其上执行所有操作。但是使用此规则我无法访问该网页。如果我从 10.2.2.10(服务器 2)执行 nc -v 80。我成功了,也可以在 tshark 中看到传入的数据包
我尝试了 iptables 规则,但它没有按我预期的方式工作
*filter
-A INPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state NEW -j DROP
-A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
COMMIT
Iptables -L -nv 输出
iptables -L -nv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1375 142K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state NEW,RELATED,ESTABLISHED
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
8 480 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 state NEW reject-with icmp-port-unreachable
1185 1346K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
附言:
我正在运行 CentOS 6.4。
答案1
一个相当通用的答案(我相信如果你在 serverfault 上搜索的话,其他地方会有更好的答案)是:如果 iptables 没有按你预期的方式工作,你应该:
- 在适当的点添加日志记录规则,并在生成流量时查看日志
iptables -L -n -v
在生成流量时观察规则上的计数器- 我最喜欢的是使用 iptables 预处理器,例如岸墙为你制定规则