#1.selinux 内核级加强型防火墙 1)针对文件,会对系统中每个文件添加安全上下文(context) 2)针对进程,会对系统中的每个进程添加安全上下文(context) 3)会在系统服务上设定sebool开关 4)当进程安全上下文和文件的安全上下文不匹配时,那么进程无法访问此文件 5)sebool会限制服务的不安全功能,如果需要用此功能,必须调整sebool值

#2.管理selinux 1)selinux的开关 vim /etc/sysconfig/selinux SELINUX=enforcing ##selinux开启,并且级别为强制 SELINUX=permissive ##selinux开启,并且级别为警告 SELINUX=disabled ##selinux关闭

注意:当linux从关到开,或者从开到关,需要重启系统

2)selinux中对文件安全上下文的设定

[root@localhost ~]# touch /mnt/file [root@localhost ~]# mv /mnt/file /var/ftp [root@localhost ~]# touch /mnt/file1 [root@localhost ~]# cp /mnt/file1 /var/ftp/

[kiosk@foundation30 Desktop]$ lftp 172.25.254.130 lftp 172.25.254.130:~> ls ##file1是复制过来的,ftp服务的可以访问安全上下文public_content_t,file是移动过来的,ftp服务不能访问安全上文mnt_t,将他的安全上下文改为public_content_t就可以访问了,用chcon修改安全上下文public_content_t

-rw-r--r-- 1 0 0 0 Nov 11 03:49 file1 drwxr-xr-x 2 0 0 6 Aug 03 2015 pub lftp 172.25.254.130:/> quit

[root@localhost ~]# ls /var/ftp/ -Z ##列出/var/ftp的安全上下文(由于file是移动过来的他的安全上下文还是原来的) -rw-r--r--. root root unconfined_u:object_r:mnt_t:s0 file -rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 file1 drwxr-xr-x. root root system_u:object_r:public_content_t:s0 pub [root@localhost ~]# chcon -t public_content_t /var/ftp/file ##修改/var/ftp/file 的安全上下文为public_content_t,ftp就可以访问到了

[kiosk@foundation30 Desktop]$ lftp 172.25.254.130 lftp 172.25.254.130:~> ls -rw-r--r-- 1 0 0 0 Nov 11 03:48 file ##fpt可以访问 -rw-r--r-- 1 0 0 0 Nov 11 03:49 file1 drwxr-xr-x 2 0 0 6 Aug 03 2015 pub lftp 172.25.254.130:/> quit

##临时更改适用于更改文件 修改selinux的安全上下文 chcon -t 一次性定制安全上下文,执行restorecon刷新后还原 文件

[root@localhost ~]# mkdir /qq [root@localhost ~]# touch /qq/qq{1..10} [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

[root@localhost ~]# systemctl restart vsftpd.service

[root@localhost ~]# chcon -t public_content_t /qq/ [root@localhost ~]# chcon -R -t public_content_t /qq/ reboot

内核级的安全上下文,用semanage fcontext -l查看 #永久修改更改安全上下文 semanage fcontext

[root@localhost ~]# semanage fcontext -a -t public_content_t

a:添加 t:类型 [root@localhost ~]# semanage fcontext -a -t public_content_t '/qq(/.)?' #更改此目录内核级的安全上下文 [root@localhost ~]# semanage fcontext -l | grep qq /qq(/.)? all files system_u:object_r:public_content_t:s0 [root@localhost ~]# ls -Zd /qq/ #列出目录的安全上下文 drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 /qq/ [root@localhost ~]# restorecon -RvvF /qq/ #刷新安全上下文

[kiosk@foundation30 Desktop]$ lftp 172.25.254.130 lftp 172.25.254.130:~> ls
-rw-r--r-- 1 0 0 0 Nov 11 05:41 qq1 -rw-r--r-- 1 0 0 0 Nov 11 05:41 qq10 -rw-r--r-- 1 0 0 0 Nov 11 05:41 qq2 -rw-r--r-- 1 0 0 0 Nov 11 05:41 qq3 -rw-r--r-- 1 0 0 0 Nov 11 05:41 qq4 -rw-r--r-- 1 0 0 0 Nov 11 05:41 qq5 -rw-r--r-- 1 0 0 0 Nov 11 05:41 qq6 -rw-r--r-- 1 0 0 0 Nov 11 05:41 qq7 -rw-r--r-- 1 0 0 0 Nov 11 05:41 qq8 -rw-r--r-- 1 0 0 0 Nov 11 05:41 qq9 lftp 172.25.254.130:/> quit

#selinux的bool值的设定 管理selinux布尔值 selinux布尔值是更改selinux策略行为的开关。selinux是可以启用或禁用的规则。安全管理员可以使用selinux来调整策略,以有选择地进行调整。许多软件包都具有man page *_selinux(8),其中详细说明了所使用的一些布尔最值;man -k '_selinux' 可以轻松的找到这些手册 getsebool 用于显示布尔值 sebool值是控制服务功能开关,用于修改布尔值

getsebool -a | grep 服务名称

setsebool -P bool值 on|off

[root@localhost ~]# getsebool -a | grep ftp ftp_home_dir --> off

[root@localhost ~]# setsebool -P ftp_home_dir on

p:永久 [root@localhost ~]# getenforce Enforcing [kiosk@foundation30 Desktop]$ lftp 172.25.254.130 -u student Password: lftp student@172.25.254.130:~> ls
lftp student@172.25.254.130:~> put /etc/passwd 2367 bytes transferred lftp student@172.25.254.130:~> ls -rw-r--r-- 1 1000 1000 2367 Nov 11 06:02 passwd lftp student@172.25.254.130:~> quit

#selinux排错

监控selinux冲突 必须安装setroubleshoot-server软件包,才能将selliunx消息发送至/var/log/messages setroubleshoot-server侦听/var/log/audit/audit.log中的审核信息并将简短摘要发送至/var/log/messages /var/log/audit/audit.log 用于在该文件中生成所有事件的报告