我是新手到Linux防火墙,并试图为面向公众的计算机设置我的系统防火墙。 这是我的要求:
问题:我的防火墙有没有漏洞? 我可以使这个更安全的方法。
这是我的防火墙设置:
*filter :FORWARD ACCEPT [0:0] :INPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] :OUTPUT ACCEPT [0:0] -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p esp -j ACCEPT -A RH-Firewall-1-INPUT -p ah -j ACCEPT -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Allow Secure SSH transfer -A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 22 --state NEW -j ACCEPT # Allow all HTTP requests -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT *mangle :FORWARD ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT # Completed *nat :OUTPUT ACCEPT [0:0] -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080 :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] # Routes all HTTP requests from port 80 to port 8080. # Allows you to run JETTY as a non-root user. -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 COMMIT # Completed
您的configuration中有以下行:
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
但是,有两种types的ICMP请求可以被认为是一个小的安全问题(从这里的input链接描述 ):
Type Name Reference ... 13 Timestamp [RFC792] ... 17 Address Mask Request [RFC950]
types13是根据目标计算机的确切时间的请求。 确切的时间可以用来在一些networking协议中利用一些非常弱的encryptionalgorithm,使攻击者能够获得特权信息。 types17是请求被接收的接口的networking掩码的请求。 有效的响应可以帮助攻击者了解networking的拓扑结构。 代替上述规定,我build议以下三条规则:
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type 13 -j REJECT -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type 17 -j REJECT -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
这些规则将防止两个禁止的ICMPtypes,并允许所有其他的。
我对linux路由还是比较陌生的,除此之外,我唯一推荐的方法是将INPUT的目标策略更改为drop / reject(iptables -P INPUT DROP)。 出于某种原因,即使您的最后一条规则是DROP或REJECT,也build议您这样做。