如果您使用的是 2.1.102 或更新版本的内核,请跳到下一节关于 IPCHAINS 的内容。
在较旧的内核中,IP 转发默认在内核中开启。因此,您的网络应该首先拒绝所有访问,并清除上次运行时遗留的所有 ipfw 规则。此脚本片段应放入您的网络启动脚本中。 (/etc/rc.d/init.d/network)
# # setup IP packet Accounting and Forwarding # # Forwarding # # By default DENY all services ipfwadm -F -p deny # Flush all commands ipfwadm -F -f ipfwadm -I -f ipfwadm -O -f
现在我们拥有了终极防火墙。任何东西都无法通过。
现在创建文件 /etc/rc.d/rc.firewall。此脚本应允许电子邮件、Web 和 DNS 流量通过。 ;-)
#! /bin/sh # # rc.firewall # # Source function library. . /etc/rc.d/init.d/functions # Get config. . /etc/sysconfig/network # Check that networking is up. if [ ${NETWORKING} = "no" ] then exit 0 fi case "$1" in start) echo -n "Starting Firewall Services: " # Allow email to got to the server /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10 25 # Allow email connections to outside email servers /sbin/ipfwadm -F -a accept -b -P tcp -S 192.1.2.10 25 -D 0.0.0.0/0 1024:65535 # Allow Web connections to your Web Server /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.11 80 # Allow Web connections to outside Web Server /sbin/ipfwadm -F -a accept -b -P tcp -S 192.1.2.* 80 -D 0.0.0.0/0 1024:65535 # Allow DNS traffic /sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D 192.1.2.0/24 ;; stop) echo -n "Stooping Firewall Services: " ipfwadm -F -p deny ;; status) echo -n "Now do you show firewall stats?" ;; restart|reload) $0 stop $0 start ;; *) echo "Usage: firewall {start|stop|status|restart|reload}" exit 1 esac
注意:在此示例中,我们的电子邮件 (smtp) 服务器运行在 192.1.2.10,必须能够通过端口 25 发送和接收。Web 服务器运行在 192.1.2.11。我们允许局域网 (LAN) 上的任何人访问外部 Web 和 DNS 服务器。
这并非完全安全。因为端口 80 不必用作 Web 端口,所以聪明的黑客可能会使用此端口来创建通过防火墙的虚拟专用网络 (VPN)。解决此问题的方法是设置 Web 代理。并且只允许代理通过防火墙。局域网 (LAN) 上的用户将必须通过代理才能访问外部 Web 服务器。
您可能还对统计通过防火墙的流量感兴趣。此脚本将统计每个数据包。您可以添加一两行来统计仅 направленный 到单个系统的数据包。
# Flush the current accounting rules ipfwadm -A -f # Accounting /sbin/ipfwadm -A -f /sbin/ipfwadm -A out -i -S 192.1.2.0/24 -D 0.0.0.0/0 /sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 192.1.2.0/24 /sbin/ipfwadm -A in -i -S 192.1.2.0/24 -D 0.0.0.0/0 /sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 192.1.2.0/24
如果您的全部需求只是一个过滤防火墙,您可以在此停止。测试并享受吧。