通常在服务器上configuration的服务数量有限,大多数不需要的服务都会closures,我想知道什么是使用iptables进行防火墙的最佳方法。
过滤拒绝来自特定接口或networking的特定服务并将未使用的端口保持打开状态,还是更好?是否将链接策略设置为丢弃,然后开始打开所需的内容?
系统级防火墙有很多stream派。
常见的保守方法是使用连接跟踪来匹配和明确接受传入的RELATED或ESTABLISHEDstream量。 所有其他传入stream量默认情况下被丢弃。 为了接受不匹配的传入stream量,必要时会为各种服务添加显式规则。
在大多数情况下不会过滤出站stream量。
例:
:INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -i eth1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -i eth1 -m conntrack --ctstate INVALID -j DROP -A INPUT -i eth1 -p tcp -m tcp --dport 22 -j ACCEPT
上面的iptables-save片断显示了一个默认情况下丢弃入站和转发数据包的设置,默认情况下接受传出数据包。 本地主机的入站stream量被明确接受,RELATED和ESTABLISHED包(例如对http请求的响应)以及到端口22(SSH)的所有stream量都被明确接受。