iptables——我这样做对吗?

iptables——我这样做对吗?

更新

我很高兴我问了这个问题。好的,我会再试一次并发布另一个问题


我想设置一个 CentOS 5.3 主机以仅允许 ping、ssh、httpd 和 SSL 连接。

阅读完教程并尝试创建配置后,我的情况如下...

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             127.0.0.0/8         reject-with icmp-port-unreachable 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
ACCEPT     icmp --  anywhere             anywhere            icmp echo-request 
REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            

Chain RH-Firewall-1-INPUT (0 references)
target     prot opt source               destination

在我看来,我好像已经完成了我的目标,但我想我应该和这里的专家再确认一下。

有什么看上去非常错误吗?

答案1

您的政策(输出除外)应设置为删除(以下代码假设没有规则)

从此开始


iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP 

现在添加您可能需要在接口上监听的任何其他服务


iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

不要使用拒绝,除非你限制它...请记住,对于每个被拒绝的数据包,都会有一个被发送回来,这会产生大量流量。我说不要使用它

我写了一些东西供桌面使用这里

答案2

看起来您已设置为拒绝任何尝试使用 TCP 与本地主机通信的操作。我会避免这样做,因为这样做会阻止一些合法的操作[需要引证]。

答案3

唯一严重错误的事情是您正在阻止 ICMP。非常非常糟糕的主意。这会破坏 PMTU 发现。只需让 ICMP 通过即可。

我假设您刚刚添加了它以进行测试,但是:

ACCEPT     all  --  anywhere             anywhere

允许所有流量。因此,该规则集不执行任何操作。

你还打破了:

  • 内部服务通过环回进行通信(规则应该说“数据包未通过环回进入”)
  • ping 回复(让 ICMP 通过!)

建议:

  • 为什么不也添加state NEW到您的dpt:httpdpt:https中呢?

相关内容