如何用SELinux保护Apache Web服务器?

日期: 2011-09-19 作者:Sander van Vugt翻译:Mark 来源:TechTarget中国 英文

你的Web服务器确实有可能遭受攻击,但是SELinux可以用来确保你的网站不用承受真正的伤害。   你可以运用SELinux类型来创建一个确切定义:一个服务可以做什么和它在哪里完成要做的事情。默认情况下,httpd_sys_content类型被设为/var/www,它规定httpd进程可以在该目录中工作。如果攻击者破坏了Apache Web服务器并尝试在别处写入,就像红帽和Fedora以及CentOS等相似Linux版本的默认/tmp,你需要知道你正在处理什么。

如果你配置Apache来为/data目录中的内容服务,SELinux也会默认地防止这种情况。   由于这些默认设置可能造成复杂的情况,……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

你的Web服务器确实有可能遭受攻击,但是SELinux可以用来确保你的网站不用承受真正的伤害。

  你可以运用SELinux类型来创建一个确切定义:一个服务可以做什么和它在哪里完成要做的事情。默认情况下,httpd_sys_content类型被设为/var/www,它规定httpd进程可以在该目录中工作。如果攻击者破坏了Apache Web服务器并尝试在别处写入,就像红帽和Fedora以及CentOS等相似Linux版本的默认/tmp,你需要知道你正在处理什么。如果你配置Apache来为/data目录中的内容服务,SELinux也会默认地防止这种情况。

  由于这些默认设置可能造成复杂的情况,很多Linux管理员关闭SELinux。虽然关闭SELinux的确让你的服务器提供服务时更容易,但是它还是增加了安全风险。

  Apache管理SELinux设置

  为Apache等服务管理SELinux设置并不难。问题是并没有简单的图形工具可以让你快速安装。但只要用三条命令,你就可以配置它。

  为了在你想让服务访问到的目录上设置文件类型,你首先必须决定要使用的文件系统类型。要这么做,只需在服务使用的默认目录上输入ls –ldZ。

  对于Apache,你会使用ls –ldZ /var/www。你会注意到在这种情况下,–Z选项给出了额外的文件属性,而–t选项才是最关键的一个。这个进程规定现有的文件系统类型,这个系统类型是Apache设置的(httpd_sys_content_t)。这也是你需要按照新文件根设置的文件类型。

  你可以用两条命令设置你的内容形式:用chcon你可以做一次暂时的变更,它在重启后消失;用followed by紧跟着的semanage,你可以做永久的变更。

  semanage命令似乎有些复杂,但它实际上非常简单,因为你只需要改变你想要用的类型和目标目录。在下面的例子中,你只需要改变两个参数。

semanage fcontext -a -t httpd_sys_content_t /web(/.*)/?

  在运用semanage设置默认文件类型之后,运用restorecon命令来确保它得到应用了。在上面的例子中,针对目录/web的文件类型被变更来允许到那个目录上服务器文件的Apache,运行以下命令来应用该变更:

restorecon -R -v /web

  在这一点上,Apache将能服务于新的非默认文件根目录上的文件。

  SELinux管理布尔值

  你需要管理的SELinux的另一个方面是SELinux布尔值。这些都是开启或关闭某些功能的二进制值。布尔值可以在多种服务中获得。运用getsebool –a命令来概观整个现有的布尔值。该命令通常会将你能应用的设置列成一个长长的列表。

  要为你想配置的服务找到所有布尔值,通过grep传输所有getsebool –a的输出。举例来说,运用getsebool –a | grep http来找到所有与行http匹配的布尔值。即使你并不是对所有布尔值都有明确认识,你通常还是可以通过观察它们的名字和它们可能做的事情查明白。

  使用getsebool –a来找出哪个SELinux可以用来修改服务行为:

[root@bia Desktop]# getsebool -a | grep http
allow_httpd_anon_write --> off
allow_httpd_mod_auth_ntlm_winbind --> off
allow_httpd_mod_auth_pam --> off
allow_httpd_sys_script_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> on
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_read_user_content --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_tmp_exec --> off
httpd_tty_comm --> on
httpd_unified --> on
httpd_use_cifs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off

  学会了你想用哪个布尔值后,运用setsebool -P来应用它们。如果你想允许Apache运用nfs,在上面运用setsebool -P http_use_nfs。想要得到所有可用布尔值的完整列表,咨询一下httpd_selinux页面,这个页面解释了Apache特有的文件标签和布尔值。

相关推荐

  • 容器热潮:还在等什么?

    如今虚拟化已成为IT主流,因为它通过在系统硬件和软件之间提供抽象层来简化软件开发。但即使这种广泛采用的技术,也受到行业永远在追求更好的工具这一趋势的威胁。

  • 支招中小企业:如何搞定Web服务器选购与管理?

    保障Web服务器为网站提供安全稳定的网络应用环境是企业管理员需要实现的关键目标之一。首先,从选择入门硬件开始就需要了解Web服务器性能对硬件的要求。

  • 如何选择标准Web应用程序监视工具

    最可靠的Web应用监控程序是什么?我们应该用什么标准来比较呢?首先考虑你是否要解决以下其中一个或多个问题。

  • Linux管理员需要了解的SELinux命令

    SELinux经常给Linux管理员带来麻烦。通常,管理员的解决方法是放弃并关闭服务器上的SELinux。其实,不必完全关闭,SELinux审计信息不是那么难以理解。