本实例的网络拓扑如图1所示,FreeBSD具有两个网络接口:rl0和rl1,rl0接入内部网络,rl1接入Internet并分配有一固定公网IP。

图1 网络拓扑
内核中已加入对NAT和防火墙的支持,还需要通过/etc/rc.conf文件的配置使得系统启动时自动启用他们。将如下6行内容添加进/etc/rc.conf文件:
gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="rl1"
natd_flags=""
使用reboot命令重新启动服务器后,FreeBSD系统就具备了基本的NAT和防火墙功能。
三、传入Internet连接及服务器安全配置
1、传入Internet连接
传入Internet用户对内网服务器的访问就是向Internet发布内网中的服务,这需要对FreeBSD的natd服务进行配置。
首先要将/etc/rc.conf文件中的原:
natd_flags=""
更改为:
natd_flags="-f /etc/natd.conf"
亦即让natd服务使用/etc/natd.conf文件作为配置文件。
接着根据图1中要发布内网中WWW和FTP服务器的需要,编辑/etc/natd.conf文件,其内容如下:
redirect_port tcp 192.168.0.1:80 80
redirect_port tcp 192.168.0.2:21 21
因为Internet用户是通过FreeBSD的NAT和防火墙来访问内网中的服务的,这使得Internet上的客户端只能以Port(主动)模式与内网中的FTP服务建立连接,而不能使用Passive(被动)模式。
2、加固服务器安全
对于一直连接在Internet上的FreeBSD服务器来说,在注重安全的同时也要考虑远程管理的需要。
(1)对外关闭不需要的服务
关闭Telnet、Finger和Sendmail这些有安全隐患的服务。Telnel、Finger服务的启用与关闭是由/etc/inetd.conf文件来控制的,而且默认设置下这些服务都没有启动。我们可以将inetd和Sendmail服务全停止,这需要在/etc/rc.conf文件中加入两行内容来实现:
inetd_enable="NO"
sendmail_enable=”NO”
(2)启用安全Shell(SSH)并改变服务器标识
为了能对FreeBSD服务器进行远程管理,需要启用SSH服务,在/etc/rc.conf中加入:
sshd_enable="YES"
黑客们在进行攻击前,会telnet到SSH服务的端口上获取版本信息,如果将SSH真正的版本信息进行隐藏和伪装,可以很好地迷惑对方。为了隐藏和伪装SSH服务的版本信息,需要修改OpenSSH的version.h头文件定义,将如下对版本的定义信息改成其他字符串。
#define SSH_VERSION "OpenSSH_3.6.1"
保存修改后,需要对OpenSSH重新进行编译。
(3)提高内核安全级别
将内核安全级别提升到2,是通过在/etc/rc.conf文件中添加如下两行内容实现的:
kern_securelevel_enable=”YES”
kern_securelevel=”2”
采用上述方案,使用FreeBSD成功构建了NAT及防火墙,在发布内网WWW、FTP服务的同时,保障了服务器和内网的安全。与基于Windows操作系统平台的软件实现相比较,本方案更加高效、稳定、安全。