如何加强Apache Web服务器的安全防范?(1)
2013-06-06 08:10:08 点击:

【51CTO.com 独家译稿】在Linux上安装安全的Web服务器并加以维护并非易事。这需要深入了解Linux、Apache和PHP服务器端的选项。主要问题之...

【51CTO.com 独家译稿】在Linux上安装安全的Web服务器并加以维护并非易事。这需要深入了解Linux、Apache和PHP服务器端的选项。主要问题之一是,如何在安全性、生产力和易用性三者之间求得平衡。最好的解决办法取决于项目的具体需求,但是安装的所有服务器都有某些共同的特点。下面是为LAMP服务器保驾护航的一些最佳实践,涵盖服务器配置到PHP设置微调的诸多方面。

为Web服务器保驾护航的任务应从加固Linux操作系统入手。加固Linux这个话题本身就可以写整整一篇文章,但是某些概念在提供Web内容方面显得特别重要:

◆Linux内核加固。内核是最经常被攻击者盯上的目标。要提升用户的权限,对内核获得访问权是最容易的方法。视操作系统而定,Apache在默认情况下以有限用户nobody(在CentOS等基于红帽的发行版上)或www-data用户(在基于Debian的发行版上,包括Ubuntu)来运行。每个攻击者企图突破有限用户的身份,利用内核存在的某个漏洞来获得访问root的权限。用grsecurity(http://olex.openlogic.com/packages/grsecurity)给内核打上补丁可以确保,你处于被保护状态,甚至可以防范零日漏洞。此外,Ksplice(http://www.ksplice.com/)可以确保你及时打上了所有的内核更新版,最大限度地减小安全风险。

◆强制性访问控制(MAC)。在正常的Web服务器部署环境下,普通用户不需要访问编译器(gcc)、系统配置文件或者像find这样的实用工具。基于红帽的发行版可以使用名为SELinux(http://olex.openlogic.com/packages/selinux)的MAC策略软件;Ubuntu管理员可以使用类似的AppArmor(http://olex.openlogic.com/packages/apparmor)。尽管这些MAC工具的功能特性各不一样,但它们都能帮你限制攻击者的破坏行动。说到不利因素,配置不当的MAC工具会削弱Web服务器的功能。这就是为什么所有MAC工具都有非执行模式,那样你就可以跟踪误报,并且针对你的特定环境来重新配置工具。不过,要是你觉得MAC工具太过复杂,只要将一些可执行文件的权限改成700,只允许root可以使用它们。

◆防火墙。你必须限制入站流量和出站流量,那样才能防止恶意连接进出服务器。对于各种类型的服务器来说,保护入站流量的安全是一种常见做法。然而对于Web服务器来说,限制出站连接以便限制恶意脚本在本地执行所带来的影响,这一点特别重要。为此,最可靠的办法就是将默认iptables链的策略设置成DROP。此外,你明确允许所需的入站连接和出站连接。不过在限制出站流量时一定要小心,因为许多Web脚本需要外部资源(RSS和外部应用编程接口)。如果你觉得iptables防火墙工具用起来不习惯,可以使用脚本来帮助生成和维护必要的规则,比如Shorewall和Firestarter。

Apache最佳安全实践

一旦你确保了Linux操作系统的安全,就可以开始处理Apache Web服务器的安全问题了。下列指示专门针对Apache,但可能也适用于其他Web服务器,比如LiteSpeed和nginx。它们之间的差异常常就体现在模块名称或者配置指令上。

要加固Apache,就要完成这些步骤:

◆安装mod_security,这个Apache模块起到了应用防火墙的作用。它可以过滤Web请求的所有部分,并终结恶意代码。它在Web服务器进行任何实际处理之前发挥作用,因而与Web应用程序无关。Mod_security适用于过滤从SQL注入到XSS攻击的任何恶意流量。它也是保护易受攻击的Web应用程序的最快速、最容易的方法。该软件有众多随时可以使用的规则,但你也很容易自行编写规则。比如设想一下:你有一个过时的Joomla版本,担心会遭到SQL注入攻击。这个简单规则可以过滤含有jos_ (Joomla表的默认前缀): SecFilter "jos_"的任何POST和GET内容。

◆安装mod_evasive,这是另一个重要的Apache模块,可以保护Web应用程序远离拒绝服务(DOS)请求。它的效果受制于这个现实:它是在应用程序层面工作的,这意味着Apache无论如何都接受连接,因而耗用带宽和系统资源。不过,如果是源自少量远程主机的比较弱的DOS攻击,该模块能有所帮助。一旦mod_evasive装入,你需要这样来配置它:

  1. DOSPageCount 2  
  2. DOSSiteCount 30  
  3. DOSBlockingPeriod 120 

这指示服务器阻止(默认情况下返回HTTP error 403 Forbidden)两次访问同一页面,或者在一秒内(默认的时间间隔)共有30次请求的任何主机。入侵者会在外面被阻挡120秒。

◆过滤访客的IP地址。这可能被认为是很极端的措施,但结果很好。首先,考虑安装mod_httpbl,这是用Apache实现的Project Honeypot。一旦该模块安装并被启用,它可以阻止有恶意活动"前科"的IP地址。另一个办法是使用mod_geoip,它可以用来允许只有来自某些国家的访客才可以访问接受留言、注册和登录信息等输入内容的页面。它甚至可以阻止和允许来自某些国家的服务器端访客。

其他推荐的Apache选项包括将Timeout(超时)选项设置得低些,比如15秒。这缩短了Web服务器等待某些事件的时间,从而限制了DOS攻击的影响。值得进一步阅读的是官方的Apache说明文档及安全提示(http://httpd.apache.org/docs/2.3/misc/security_tips.html)。



相关热词搜索:

上一篇:安全登陆企业Windows服务器如何实现?(1)
下一篇:应用SELinux中的目标策略限制进程运行(1)