摘 要 本文分析了安全免费的FreeBSD操作系统;由具体实例来讲述FreeBSD中NAT及防火墙的构建,在保障高度安全的基础上通过NAT来发布内网中的WWW和FTP服务。
关键词 FreeBSD NAT 防火墙 服务器安全
要将内网中的多台计算机通过只有一个公网IP地址的专线接入Internet,并让Internet用户可以访问到内网中的WWW和FTP服务,需要解决两个关键问题:一是由NAT服务器负责Internet连接的共享,并控制Internet的传入连接;二是构建安全可靠的防火墙,防止Internet上黑客的入侵。使用在网络安全界富有盛名的FreeBSD操作系统来构建NAT及防火墙,可以由低的硬件成本实现高的网络效率,这是Windows操作系统解决方案所无法比拟的。
一、FreeBSD简介
自从1969年AT&T Bell实验室研究人员创造了Unix之后,Unix就不断得到发展。虽然当前Windows操作系统占据了桌面计算机的大半领域,但在网络服务器领域中Unix仍然具有不可替代的地位。加州大学伯克利分校的BSD,是Unix发展历程中一个重要的分支,对现代网络技术的发展有相当大的影响。FreeBSD是起源于4.4BSD的一个免费版本,符合POSIX规范,硬件平台支持Intel-x86、SParc和A1pha。目前主要用作网络服务器的操作系统,许多ISP也选择FreeBSD在高端PC上为用户提供 WWW、FTP、Email、NewsGroup等网络服务。
选择FreeBSD构建网络服务器,主要考虑了以下特性:
(1)FreeBSD系统是经过检验了的很稳定的操作系统,特别适合用于网络环境,很多国际国内知名的大网站都使用它作为服务平台;
(2)FreeBSD是免费的和公开全部源代码的,不存在版权问题,可以从其网站http://www.freebsd.org免费下载,方便定制系统,避免内嵌未知的恶意代码;
(3)它对计算机的硬件配置要求不高,经测试,用一台奔腾166,128M内存,2G硬盘的计算机做代理网关让40台PC同时访问Internet(2M光纤接入)效果都非常好;
(4)大大减少病毒的困扰,Windows系列操作系统的病毒问题一直以来都令广大计算机用户感到非常头痛,特别是网络服务器,尽管采用了种种防病毒手段,仍然避免不了病毒的攻击;而UNIX系列操作系统相对来说病毒要少得多,用UNIX系列操作系统作服务器可以有效防止病毒对服务器的攻击;
(5)FreeBSD的功能非常强大,它不仅能架设代理服务器,还可以构建防火墙,本身就提供FTP、Telnet、Mail等服务,再安装免费的Apache软件就可以提供WWW服务,并且性能和稳定性要比Windows系统高得多。
二、NAT及防火墙的构建
1、修订内核
使用FreeBSD系统构建NAT及防火墙,首先要对内核进行修订。默认配置下安装的内核是GENERIC,为了达到最大的通用性内置了许多设备驱动的支持,也没有加入对NAT和防火墙的支持。作为服务器使用的系统应该尽量紧凑,在完成必要功能的同时,减少对硬件资源的占用,最大限度地提高服务效率。因此,需要修订内核配置文件:准确指定CPU和总线类型,只保留必要的设备驱动,删除对无关设备的支持,如CDROM、SCSI控制器等,同时要将NAT和防火墙的功能配置进内核。
以root身份登录,进行如下操作:
# cd /usr/src/sys/i386/conf
# cp GENERIC /root/MYKERNEL
# ln –s /root/MYKERNEL
# vi MYKERNEL
编辑MYKERNEL配置文件,加入如下4行内容:
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSE
编译并启用新的内核:
# cd /usr/src
# make buildkernel KERNCONF=MYKERNEL
# make installkernel KERNCONF=MYKERNEL
# reboot
2、功能配置
本实例的网络拓扑如图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操作系统平台的软件实现相比较,本方案更加高效、稳定、安全。