Linux是一种自由和开放源码的类Unix操作系统。目前存在着许多不同的Linux,但它们都使用了Linux内核。而在服务器的">应用领域,Linux所占的市场份额是远远超过Windows服务器的,特别是一些大的并发应用方面,所以Linux的Web应用性能更能得到充分的体现。
在Linux服务器中提供Web服务,一般是使用Apache,当然也有很多平台在使用Nginx,当然Nginx的安全设置技术,不在本文的讨论范围之内,大家如果对Nginx安全设置感兴趣的话,可以搜索风信网中相关的信息。
在Apache安装好之后,如何进行安全的设置,对于新手来说是一个比较头痛的问题,任何不当的设置都可能会对Linux的安全构成威胁,所以充分了解Apache的设置,是非常重要的,下面我们就此问题展开讨论,希望对于刚刚入门的新手能提供一个指导性的启示,让你能更安全的使用Web服务。
Apache安全设置,涉及到Apache的配置文件、Apache的目录访问控制、在Apache上运行CGI等安全方面的设置。
Apache的配置文件
对于RedHat Linux系统,Apache的配置文件放在/etc/httpd/conf/目录下。如果是自行编译安装的Apache,则视编译时指定的目录路径而定,默认是/usr/local/apache/conf。
在conf目录下有3个Apache的配置文件:
httpd.conf
access.conf
srm.conf
Apache 启动时先调用httpd.conf,然后调用srm.conf,最后调用access.conf。但现代版本的Apache为避免管理和维护的混乱,已经 改为将所有Apache的相关配置命令放在httpd.conf文件中,不再使用srm.conf和access.conf文件。虽然这两个文件仍然存 在,但内容中没有任何配置命令,形同虚设。
httpd.conf文件分为以下3部分:
Global Environment
Main' server configuration
Virtual Hosts
下面将讲述这3部分的用法和与安全相关的注意点。
4.5.1.1 Global Environment
ServerType standalone
用来指定Apache的启动方式:standalone和inetd。standalone模式是Apache独立运行,也是默认的启动方式。inetd模式是守护进程监听http的连接请求才启动httpd进程,请求完毕后就结束httpd进程,这样服务器负担很重。
ServerRoot "/etc/httpd"
Apache的目录,此处是存放配置、出错记录、日志文件的根目录。目录后面不要加“/”字符。
LockFile /var/lock/httpd.lock
保留默认值,不要更改。
PidFile /var/run/httpd.pid
指定记录Apache的父进程id的文件名及路径。
ScoreBoard /var/run/httpd.scoreboard指定用于储存服务器进程处理信息的文件名和路径。
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
在标准的配置中,服务器启动时会处理这两个文件。因为现在的Apache只使用httpd.conf文件,摒弃了srm.conf和access.conf文件,所以这两行用“#”注释掉。
Timeout 300
设置超时时间。如果远程客户端超过300秒还没连上Apache Server,或者Apache Server超过300秒没有传送字节给客户端,就立即断开连接。
KeepAlive On
KeepAlive允许客户端的每个连接有多个请求,设为Off时此项无效。
MaxKeepAliveRequests 100
设置每次连接期间所允许的最大请求数目。设为0时表示允许无限制数目。设置数字越大,则服务器性能越高。
KeepAliveTimeout 15
设置等待同一个客户端的同一个连接发出下一个连接请求超过一定的时间就断线。
MinSpareServers 5
MaxSpareServers 20
设置最小的闲置服务处理程序的数目和最大的闲置服务处理程序的数目。如果实际数目少于MinSpareServers,则将增加处理程序;反之,如果实际数目超过MaxSpareServers,一些多余的处理程序将被杀掉。
StartServers 8
设置启动并初始化后启动服务进程的数目。
MaxClient 150
设置服务运行的总数量。一旦达到此数目,新来的客户端就被拒绝,所以该限制数目不能设得太小。
MaxRequestsPerChild 100
设置每个子程序处理结果前的要求数目,设为0表示不限制。
#Listen 3000
#Listen 12.34.56.78:80
Listen 80
设置Apache监听的连接端口或IP地址及端口,默认是80。
#BindAddress *
该选项用来支持虚拟主机,并告知服务器监听哪个IP地址。可以使用“*”,或具体的IP地址和完整的域名。
#LoadModule foo_module libexec/mod_foo.so
DSO(Dynamic Shared Object)支持。DSO模块的概念和作用与Windows的DLL文件极其相似。
#ExtendedStatus On
当“server-status”管理程序被执行时,检查Apache的运行状态信息。默认是Off。