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

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

你的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特有的文件标签和布尔值。

责任编辑:张玉 来源: TechTarget中国
相关推荐

2012-05-21 10:16:53

2018-05-04 12:22:47

2018-04-02 15:07:01

LinuxApacheWeb服务器

2017-12-27 10:18:09

ApacheNginx服务器

2009-12-30 10:09:08

Ubuntu Apac

2011-09-20 09:51:13

2018-10-26 11:30:40

Apache Web服务器站点

2014-07-15 09:44:07

Linux Web服务Nginx

2009-10-14 10:16:45

2009-02-28 14:23:02

2017-08-03 10:36:08

UbuntuCertbotNGINX

2011-03-21 14:41:04

LAMPapacheweb

2009-12-30 10:41:27

Ubuntu Apac

2011-09-09 09:35:28

2010-10-08 11:12:50

2010-10-09 21:51:30

2011-11-21 16:32:19

2023-06-26 14:19:35

2017-09-13 07:23:03

2015-01-06 09:03:18

点赞
收藏

51CTO技术栈公众号