7.3. 常用 iptables 过滤

把远程攻击者拒之“LAN”外是网络保安的一个重要方面。LAN 的完好性应该通过使用严格的防火墙规则来抵御蓄意不良的远程用户而被保护。但是,如果默认策略被设置为阻塞所有进入、输出、和转发的分组,防火墙/网关和内部 LAN 用户之间的通信就无法进行。要允许用户执行和网络相关的功能以及使用联网应用程序,管理员必须打开某些端口进行通信。

例如:要允许到防火墙上的端口80的通信,添加以下规则:

iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT 

这会允许用户浏览通过端口80通信的网站。要允许到安全网站(如 https://www.example.com/)的访问,你还必须打开端口443。

iptables -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT 

有时候,你可能会需要从 LAN 之外远程地进入 LAN。SSH 和 CIPE 之类的安全服务可以用于到 LAN 服务的加密远程连接。对于拥有基于 PPP 资源(如调制解调器池或批量 ISP 帐号)的管理员来说,拨号进入可以被用来安全地避开防火墙,因为调制解调器连接是直接连接,通常位于防火墙/网关之后。 然而,对于有宽带连接的远程用户来说,你就需要制定些特殊规定。你可以配置 IPTables 接受来自远程 SSH 和 CIPE 客户的连接。例如,要允许远程 SSH 访问,你可以使用以下规则:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p udp --sport 22 -j ACCEPT

来自外部的 CIPE 连接请求可以使用以下命令来接受(把 x 替换成你的设备号码):

iptables -A INPUT -p udp -i cipcbx -j ACCEPT
iptables -A OUTPUT -p udp -o cipcbx -j ACCEPT

CIPE 使用它自己的传输数据报(UDP)分组的虚拟设备,因此这条规则允许 cipcb 接口上的进入连接,而不是规定源地端口或目标端口(虽然它们可以被用来代替设备选项)。关于使用 CIPE 的信息,请参阅第6章

你可能还想为其它服务定义规则。关于 IPTables 及其各类选项的完整信息,请参阅《红帽企业 Linux 参考指南》

这些规则允许到防火墙上的常规及安全服务的访问;然而,它们并不允许防火墙之后的机器使用这些服务。要允许 LAN 使用这些服务,你可以使用带有 IPTables 过滤规则的 NAT。