iptables:只允许build立的传出连接,如DMZ

我想模拟一个类似于DMZ的场景,其中server1(DMZ,10.1.1.0内)应该能够响应任何传入连接,并且不能自行创build新的传出连接。

如果有人提供了一个实例,我将不胜感激。

例:

我正在做一个简单的testing。 我正在从10.2.2.10访问10.1.1.10托pipe的网页。 所以如果这个规则是允许所有传入和只有相关/build立传出,我应该能够打开网页,并做所有的东西。 但有了这个规则,我无法访问网页。 如果我从10.2.2.10(server2)执行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 

PS:

我正在运行CentOS 6.4。

一个相当通用的答案(如果你search的话,我确定在serverfault的其他地方有更好的答案)是:如果你的iptables不能正常工作,你应该:

  • 在适当的位置添加日志logging规则,并在生成stream量时观察日志
  • iptables -L -n -v同时,根据您的规则查看计数器,以便生成stream量
  • 和(我最喜欢的)使用像Shorewall这样的iptables预处理器来为你创build规则