了解selinux,设置给文件selinux的安全上下文件,复制、移动对selinux规则的影响,设置apache、vsftpd的selinux规则

1.了解selinux

1)DAC:指用户访问资源的控制,即权限

MAC:selinux标签,限制进程访问资源,进程归用户所有;当用户调用进程去访问资源(file)时,检查selinux安全标签,匹配了才能访问。

selinux使用selinux用户、角色、类型和级别控制进程访问资源。

selinux属性的格式:user:role:type:level

ls -Z install.log

-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log

lqc_selinux的安全控制_第1张图片

2)selinux用户:不同于系统用户,selinux用户使用selinux策略的一部分,和系统用户有映射关系,一个系统用户对应一个selinux映射。semange查看关系。

需要安装软件:

yum -y install policycoreutils-python

lqc_selinux的安全控制_第2张图片

semanage user -l

lqc_selinux的安全控制_第3张图片

3)角色role:用户空间,进程的访问范围标记,如object_r

4)类型或者安全上下文,资源的标记,admin_home_t

5)安全级别:s0最常用

查看:进程、用户、文件的selinux属性

ps -eZ |grep http ##查看http进程的selinux

lqc_selinux的安全控制_第4张图片

id -Z ##当前用户的selinux设置

lqc_selinux的安全控制_第5张图片

ls -ldZ /var/www/html ##查看http网页跟目录的selinux属性

lqc_selinux的安全控制_第6张图片

2.设置文件的selinux属性中安全上下文(type)

1.临时设置

echo 123123 >/var/www/html/index.html

cd /var/www/html

lqc_selinux的安全控制_第7张图片

ls -Z index.html ##TYPE:httpd_sys_content_t,只允许apache的进程访问,访问测试

lqc_selinux的安全控制_第8张图片

lqc_selinux的安全控制_第9张图片

chcon -t admin_home_t index.html ##访问测试,无法访问到文件

lqc_selinux的安全控制_第10张图片

lqc_selinux的安全控制_第11张图片

restorecon -F -v index.html ##还原selinux属性,-F表示强制,-v详细

lqc_selinux的安全控制_第12张图片

lqc_selinux的安全控制_第13张图片

目录的selinux设置,在文件的基础上加“-R”选项即可。

2.永久生效

语法:semanage fcontext -{a|d|m} 文件 ##-a表示增加,-d删除,-l显示,-m修改

注意文件、目录使用绝对路径

文件:

semanage fcontext -a -t httpd_sys_content_t /web/a.file ##添加

lqc_selinux的安全控制_第14张图片

cat /etc/selinux/targeted/contexts/files/file_contexts.local ##发现a.file的selinux属性

lqc_selinux的安全控制_第15张图片

restorecon -v /web/a.file ##立即生效,restorecon恢复的依据就是file_contexts.local文件中的规则。

lqc_selinux的安全控制_第16张图片

semanage fcontext -d -t httpd_sys_content_t /web/a.file ##删除a.file的selinux属性,相当于删除了file_contexts.local中的规则,不能使用vi等删除。

lqc_selinux的安全控制_第17张图片

restorecon -F -v /web/a.file ##立即生效

lqc_selinux的安全控制_第18张图片

目录:

semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?" ##如果只写目录,目录下的内容的selinux属性不会被修改,使用正则匹配目录下的所有内容,"/web(/.*)"

lqc_selinux的安全控制_第19张图片

restorecon -R -F -v /web/ ##立即生效

lqc_selinux的安全控制_第20张图片

semanage fcontext -d -t httpd_sys_content_t "/web(/.*)?" ##删除

restorecon -R -F -v /web/

lqc_selinux的安全控制_第21张图片

3.复制、移动对selinux规则的影响

移动:selinux不变,覆盖时会覆盖selinux属性

lqc_selinux的安全控制_第22张图片

mv /root/index.html /var/www/html/

ls -Z /var/www/html/index.html ##selinux未发生变化

lqc_selinux的安全控制_第23张图片

cd /home/

touch index.html

ls -Z /home/index.html ##文件的type:home_root_t

lqc_selinux的安全控制_第24张图片

mv /home/index.html /var/www/html/

ls -Z /var/www/html/index.html ##selinux被覆盖,type变为home_root_t

lqc_selinux的安全控制_第25张图片

复制:使用目标selinux的属性,覆盖时selinux属性不变

cp /root/install.log /var/www/html

ls -Z /var/www/html/install.log ##selinux的type:httpd_sys_content_t

lqc_selinux的安全控制_第26张图片

cp /root/install.log /var/www/html/ ##覆盖,selinux属性不变

lqc_selinux的安全控制_第27张图片

注意:对比移动和复制,复制更有利于保持selinux属性、推荐使用。

4.tar打包备份与selinux;特殊selinux type:file_t,default_t,user_tmp_t

1)tar打包时默认selinux丢失,使用“--selinux|--xattrs”可以保持selinux属性。

tar -zcvf /tmp/test-sel.tar.gz /var/www/html/ --selinux

lqc_selinux的安全控制_第28张图片

2)特殊type:

file_t:文件没有selinux属性

default_t:文件或目录的selinux与file-context配置文件定义模式不匹配。

两种类型文件,设置了selinux属性的进程都不能访问。

user_tmp_t:用户临时文件的,所有的进程都可以访问。

5.vsftpd/apache

vsftpd:允许匿名:

lqc_selinux的安全控制_第29张图片

getsebool -a |grep httpd |grep on$ ##查看sebool

lqc_selinux的安全控制_第30张图片

setsebool allow_ftpd_anon_write=on

lqc_selinux的安全控制_第31张图片

chcon -R -t public_content_rw_t /var/ftp/pub

chmod 777 /var/ftp/pub/

lqc_selinux的安全控制_第32张图片

http:设置

setsebool httpd_enable_cgi=off

semanage fcontext -a -t httpd_sys_content_t "/usr/local/httpd/htdocs(/.*)?"

lqc_selinux的安全控制_第33张图片

restorecon -R -v /usr/local/httpd/htdocs

lqc_selinux的安全控制_第34张图片