78 FreeBSD连载:设置和使用ipfw/natd( 四 )


# Disallow setup of all other TCP connections$fwcmd add deny tcp from any to any setup此后屏蔽所有其他种类的TCP连接请求数据包,因此如果要打开其他TCP连接请求,就需要在这个规则之前进行定义 。
# Allow DNS queries out in the world$fwcmd add pass udp from any 53 to ${ip}$fwcmd add pass udp from ${ip} to any 53# Allow NTP queries out in the world$fwcmd add pass udp from any 123 to ${ip}$fwcmd add pass udp from ${ip} to any 123# Everything else is denied as default.此后定义对UDP数据包的过滤规则,只许可DNS和NTP协议通过,而屏蔽其他UDP数据包 。
上面这些指令都是client类型的过滤规则,综合上面的指令,这就表示为屏蔽外部计算机向本地除smtp之外的TCP连接请求,而允许本地计算机向外发起连接请求,屏蔽除DNS和NTP之外的其他UDP数据包 。这些过滤规则可以有效的保护一个不对外提供服务的客户系统 。但是,如果要对外提供网络服务,就需要更改这里的设置,打开需要提供服务的端口,例如打开TCP端口22,以使得ssh客户能连接到系统中 。
elif [ "${firewall_type}" = "simple" ]; then############# This is a prototype setup for a simple firewall.Configure this machine# as a named server and ntp server, and point all the machines on the inside# at this machine for those services.############# set these to your outside interface network and netmask and ipoif="ed0"onet="192.168.4.0"omask="255.255.255.0"oip="192.168.4.17"# set these to your inside interface network and netmask and ipiif="ed1"inet="192.168.3.0"imask="255.255.255.0"iip="192.168.3.17"防火墙类型simple用于设置一个简单的防火墙系统,用于保护内部网络中的计算机 。由于防火墙系统需要连接多个网络界面,一个用于连接外部网络,而其他用于连接内部网络 。这个简单的防火墙只针对两个网络界面进行了过滤规则的设置,内部网络的界面iif,外部网络的界面oif,因此它只适合只有两个网络界面的防火墙系统 。
当真正要使用这个防火墙设置的时候,首先就要修改iif与oif的IP地址,网络掩码等相关设置,与本地系统实际使用的设置相同 。
# Stop spoofing$fwcmd add deny all from ${inet}:${imask} to any in via ${oif}$fwcmd add deny all from ${onet}:${omask} to any in via ${iif}这两个过滤规则用于丢弃涉及IP地址欺骗的数据包,这包括来自于外部网络界面,但源地址为内部网络地址,或者来自于内部网络界面,但源地址为外部网络地址的数据包 。由于这些数据包涉及IP地址欺骗,每个路由器都应该丢弃这样的数据包 。
# Stop RFC1918 nets on the outside interface$fwcmd add deny all from 192.168.0.0:255.255.0.0 to any via ${oif}#$fwcmd add deny all from any to 192.168.0.0:255.255.0.0 via ${oif}$fwcmd add deny all from 172.16.0.0:255.240.0.0 to any via ${oif}$fwcmd add deny all from any to 172.16.0.0:255.240.0.0 via ${oif}$fwcmd add deny all from 10.0.0.0:255.0.0.0 to any via ${oif}$fwcmd add deny all from any to 10.0.0.0:255.0.0.0 via ${oif}RFC1918中定义了一些只用于内部网络的IP地址,这些地址不能用于Internet上的计算机,而只能用于内部网络中 。这里禁止从外部网络界面上向内部地址进行数据传输,以防止外部网络向内部网络的地址进行连接,也是防火墙的重要功能之一 。
注意,上例中与系统提供的缺省设置是不同的,将其中对应于实际使用的内部地址的一行加上了注释 。这是因为该设置与natd相互冲突,使得natd发送的数据(具备内部网络地址)也被过滤 。可以简单的注释对应本地网络地址的设置项,以使得它们能够相互协议,而将保护功能留给natd来完成 。如果不使用natd,就不必使用上面的注释 。
# Allow TCP through if setup succeeded$fwcmd add pass tcp from any to any established# Allow setup of incoming email$fwcmd add pass tcp from any to ${oip} 25 setup# Allow access to our DNS$fwcmd add pass tcp from any to ${oip} 53 setup# Allow access to our WWW$fwcmd add pass tcp from any to ${oip} 80 setup# Reject&Log all setup of incoming connections from the outside$fwcmd add deny log tcp from any to any in via ${oif} setup# Allow setup of any other TCP connection$fwcmd add pass tcp from any to any setup此后屏蔽除了email,www,dns之外的其他向内部网络的TCP连接请求,而只允许向外进行连接 。当实际内部网络要向外提供服务时,再添加连接许可 。

推荐阅读