零點 2007-09-30
在我们使用Web服务器的时候,大家可能会一致认为使用Linux+Mysql+Apache+PHP整个开源的系统是比较好的选择,但是要根据应用来决定使用什么服务。对于一个网站来讲,稳定安全是第一位的,否则网站什么时候被人修改了都不知道,或者被黑客入侵,把数据修改或者删除。当然,不是说Linux不安全,但是在Linux下集成了很多不安全的程序,导致了它的不安全,如果设置的好,Linux一样可以很安全。从中国网络应急响应中心这几个月的数据来看,每个月被入侵成功最高的是Linux系统,占百分之六十多,然后过来是Windows系统,占百分之三十多,而FreeBSD的入侵比例是百分之几。
任何系统都可以很安全,也可以很不安全,关键是看管理员如何处理,世界上没有最安全的系统,只有更安全的系统。以下就是如何在FreeBSD平台上构建一个比较安全的Web服务器,希望对网管和网络安全爱好者能有一些启发。
一、系统和服务程序的安装
1. 系统安装
为了保证系统的安全,我们系统准备采用最新的FreeBSD版本,首先是安全,系统兼容性也比较好,这个主要是个人习惯和需求,为了简单起见,这里我们选用了最新的FreeBSd5.3版本进行安装。整个安装过程我就不讲了,如果不清楚的朋友可以参考FreeBSD中文手册, 整个过程不是很复杂,虽然没有Windows/Linux的系统安全简单,但是比起有些Unix的安装来讲是人性许多的。安装中必须把基本包和内核源代码都装上,为了以后编译内核方便,如果另外,如果喜欢使用ports安装软件的话,还要把ports装上,但是尽量一些没有必要的程序不要装。如果要安装Webmin等,还要把perl等包装上。系统文件拷贝完以后,会要求配置一些设置,比如把IP地址、名字服务器等设好,不要打开IPv6,不需要DHCP等服务,不要系统默认的FTP服务,配置 /etc/inetd.conf 时把SSH服务打开,方便我们进行远程管理,如果不想使用inetd这个超级服务来管理的话,可以关闭它,在/etc/rc.conf中添加inetd_enable="NO",然后设置sshd_enable="YES"一样可以打开SSH服务,后面我们会详细谈到SSH的设置。
系统装完后,在 /etc/inetd.conf 中把除了ssh之外的服务全部关闭,特别是telnet和rlogin等服务,一定要慎重,否则很可能每几天系统就被入侵了。安装完系统后,建议对系统进行升级,比如使用 make world 或 cvsup 把系统内核和ports进行升级。这个步骤和Windows装完后打补丁差不多。
2. 服务程序安装
系统装完以后,就开始安装我们的应用软件,我们的方针还是最新的软件是最安全的,比如能够防止一些老版本中的溢出等等。我们基本就是要让我们的系统有数据库,同时能够处理Web服务,同时能够远程对网站进行文件管理的FTP服务。我们基本选择的程序都是比较通常的程序。另外,为了有个可视化的管理工具,我们同时也可以安装一个基于浏览器的管理工具Webmin,方便没有ssh客户端等等的时候进行管理。
首先我们选用的Web服务是Apache httpd 2.0.53,这是目前的最新版本,当然你也可以考虑1.3的版本,主要是看个人习惯。我们网站是PHP程序编写,所以要安装PHP,版本是4.3.11,也是最新的版本,如果你的网站程序需要PHP5的支持,那么可以下载php5.0.4。数据库还是最快速的Mysql,选择的版本是最新的 4.0.23,如果你需要外键、事务、子查询、存储过程等的支持,那么你可以考虑4.1和5.0的版本。最后我们的FTP选择最安全的vsFTPd,因为它是最安全快速的,我在局域网中测试它的最高创数速率能够达到10MB/S,proFTPd只有8MB/S,vsFTPd针对小型FTP服务器支持非常好,毕竟我用户不多,几个更新网站而已,当然,如果你喜欢简单方便,也可以考虑使用FreeBSD自带的FTPd,功能和易用性也是不错的。如果你用户比较多,并且功能要求比较高,建议使用proFTPd、pure-FTPd、wu-FTPd等,但有些FTPd不是非常安全,选择时候一定要慎重考虑。
服务器程序列表:
Apache 2.0.53
PHP 4.3.11
Mysql 4.0.23 vsFTPd 2.0.2
最少的服务+最少的端口+安全的设置 = 最大的安全,尽量能够不需要使用的服务就不要安装,比如telnetd、rlogind等,那么相反会对服务器安全构成威胁。
我们直接指定到一个大空间去存储mysql数据。在CONFIGURE_ARGS=后面增加--with-charset=gb2312 \和--with-xcharset=all \ 两行才能支持中文字符。