您的web服务器可能会受到攻击,但是可以使用SELinux来确保您的网站不会受到真正的伤害。
您可以使用SELinux类型来创建一个精确的定义:服务可以做什么以及它在哪里完成它想要做的事情。默认情况下,httpd_sys_content类型设置为/var/www。
它规定httpd进程可以在这个目录中工作。如果攻击者破坏Apache Web服务器,并试图在其他地方写入,如Red Hat和Fedora和centos等Linux版本的default /tmp,您需要知道自己在对付什么。
如果您将Apache配置为提供/data目录中的内容,SELinux在默认情况下也会阻止这种情况。
因为这些默认设置可能会导致复杂的情况,所以许多Linux管理员关闭了SELinux。虽然关闭SELinux确实使您的服务器更容易提供服务,但它仍然增加了安全风险。
管理Apache的SELinux设置
管理Apache等服务的SELinux设置并不困难。问题是没有简单的图形工具可以快速安装。但是通过三个命令,您可以对其进行配置。
为了在您希望服务访问的目录中设置文件类型,您必须首先决定要使用的文件系统类型。为此,只需在服务使用的默认目录中输入ls -ldZ。
对于Apache,您将使用lsldz/var/www。您会注意到,在这种情况下,z选项提供了额外的文件属性,而t选项是最重要的选项。该过程指定现有的文件系统类型,
这个系统类型是由Apache (httpd_sys_content_t)设置的。这也是您需要根据新文件根目录设置的文件类型。
你可以用两个命令设置你的内容表单:用chcon,你可以做一个临时的改变,重启后就消失了;通过semanage后跟follow by,您可以进行永久性的更改。
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特有的文件标签和布尔值。