为ApacheWeb服务器保驾护航的8个简易方法

Apache可以是当今互联网上使用最广泛的Web服务器。它天生是在Unix环境下工作的,不过已移植到了其他服务器操作系统,比如Windows。Apache Web服务器为数百万的网站和互联网应用系统提供服务。一大批的验证方案、支持众多的语言接口以及安全功能特性,让它成为全球各地成千上万用户青睐有加的Web服务器。
Apache的这种明星地位、这种爆棚人气,也让它支撑的网站成为黑客们偏爱的下手目标。Apache支撑的网站之所以沦为黑客攻击的牺牲品,常常倒不是由于Apache本身存在安全风险和漏洞,主要是由于编写糟糕的代码以及与数据库有关的其他安全问题。Apache和Linux这对黄金搭档提供了良好的安全性,但是如果你不采取必要的防范措施,还是有可能出岔子。你需要采取几个做法,为Apache保驾护航。为此,我们整理了你应该采取的几个简单易学的措施,确保Web服务器安全。
第一件事:更新
每一个Apache版本里面都存在安全漏洞和潜在风险,不过及时得到了修补。开发社区不断努力解决新的安全问题,更新的重要性再怎么强调都不为过。
良好的更新策略和安全策略相辅相成。你不仅在重大版本发布后时更新Apache,还应该安装所有的补丁。你在更新Apache时,一并更新PHP(如果你使用PHP)也是明智之举。
你只要使用下面这个命令,就可以检查Apache的当前版本。
# http -v
Server version: Apache/2.*.** (Unix)
Server built: Mar 12 2014 13:20:23
如果结果表明你当前运行的Apache不是最新版本,就要赶紧更新。
Apache版本和操作系统
如果出现某个错误,服务器可能会返回关于该错误的信息以及Apache版本和操作系统方面的细节信息。简单的404错误页面可以泄露关于Web服务器和操作系统的关键信息。在一些情况下,它甚至可能会返回同时安装在服务器中的Apache模块方面的细节信息。
想关闭该功能,使用文本编辑工具打开配置文件(httpd.conf),找到字符串:“ServerSignature On”。它在默认情况下应该是“On”。想关闭它,只要将“On”换成“Off”即可。
现在,HTTP站点标题和错误页面只会显示它运行Apache,而不会显示版本。
禁用目录列表
要是根目录下没有索引文件,Apache在默认情况下会列出根目录下的所有文件。有几个办法可以防止Apache列出根文件夹中的文件。你又需要将几行添加到配置文件。为此,有两种方法。或者将Option Directive设成“-Indexes”或“None”。如果你不知道我们在谈论什么,只将下面几行添加到配置文件。
Options -Indexes
Order allow,deny
Allow from all
或者使用下列代码。
Options None
Order allow,deny
Allow from all
在一些发行版中,这些命令早已到位,但最好还是检查一下,稳妥点总归是好事。
保护配置文件
如果你是个新手,又一直在采取上述步骤,那么就应该想到:httpd.conf配置文件对于确保服务器安全起到了很重要的作用。所以,最好将配置文件隐藏起来。你总是可以在需要时让配置文件显露出来。
使用下面这个命令,即可将配置文件隐藏起来。
chattr +i /httpd/conf/httpd.conf
下面这段文字来自chattr参考手册页:
“带有‘i’属性的文件无法被修改:它无法被删除或重命名;无法为该文件建立链接;无法将数据写入到该文件。只有超级用户或拥有CAP_LINUX_IMMUTABLE功能的进程才能设置或清空这个属性。”
限制请求大小,以防范DoS攻击
如果禁止大请求,就可以预防大多数拒绝服务(DoS)攻击。默认情况下,LimitRequestBody被设成不受限制。你可以更改大小,具体取决于你网站的实际需求。还可以限制对更容易受到攻击的目录(比如上传文件夹)进行请求。
禁用不需要的模块
通过禁用几个对你来说毫无用处的模块,就能减少服务器面临的安全漏洞。想详细列出你Web服务器中的所有模块,可以使用下面这个命令。
# grep LoadModule /etc/httpd/conf/httpd.conf
分析输出列表中的所有模块,弄清楚哪些模块毫无必要。你甚至没必要删除一行行代码。只要在开头添加“#”,那么重启服务后,它就会变成停用。
别以root身份运行Apache
Apache不应该以root身份运行。以另一个用户的身份运行Apache始终是个好主意。它在默认情况下会以守护程序或无任何用户的身份来运行。设立一个专门用于Apache的非特权帐户。千万别将Apache用户或用户组设成root。
# vi httpd.conf
Group apache
User apache