selinux的管理

1.基本SELINUX安全性概念

SELINUX ( 安全增强型 Linux ) 是可保护你系统安全性的额外机制。

在某种程度上 , 它可以被看作是与标准权限系统并行的权限系统。在常规模式中 , 以用户身份运行进程 , 并且系统上的文件和其他资源都设置了权限 ( 控制哪些用户对哪些文件具有哪些访问权SELINUX 的另一个不同之处在于 , 若要访问文件 ,你必须具有普通访问权限和 SELINUX 访问权限。因此 , 即使以超级用户身份root 运行进程 , 根据进程以及文件或资源的 SELinux 安全性上下文可能拒绝访问文件或资源限 ) 标签。

2.selinux 的开机状态

[[email protected] ~]# vim /etc/sysconfig/selinux

SELINUX=enforcing|permissive|disabled

enforcing              ##开启状态下的强制状态
permissive           ##开启状态下的警告状态
Disabled              ##关闭状态

selinux的管理

[[email protected] ~]# getenforce            ##查看selinux状态

更改selinux开机状态

selinux的管理

selinux的管理

selinux的管理

selinux的管理

3.selinux 安全上下文访问规则

[[email protected] ~]# yum install vsftpd lftp -y

[[email protected] ~]# systemctl start vsftpd

[[email protected] ~]# systemctl stop firewalld

[[email protected] ~]# touch /mnt/westos3

[[email protected] ~]# mv /mnt/westos3 /var/ftp/

[[email protected] ~]# ls /var/ftp/

selinux的管理

[[email protected] ~]# lftp 172.25.254.216

selinux的管理

[[email protected] ftp]# ls -Z ##查看文件标签,开启selinux之后的文件标签为mnt_t,开启之前的标签为public_content_t。

                                             ##因为安全上下文不同,所以无法显示文件名称。

selinux的管理

[[email protected] ftp]# semanage fcontext -l | grep /var/ftp ##查看/var/ftp安全上下文

[[email protected] ftp]# chcon -t public_content_t westos3 ##修改westos3的文件标签为public_content_t

selinux的管理

selinux的管理

4.修改匿名用户登陆的家目录/westos/后给它修改标签

[[email protected] ~]# mkdir /westos/

[[email protected] ~]# touch /westos/westosfile

[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf

selinux的管理

[[email protected] ~]# systemctl restart vsftpd

[[email protected] ~]# lftp 172.25.254.216

selinux的管理

[[email protected] ~]# setenforce 0 ##开启状态下的警告状态

[[email protected] ~]# chcon -t public_content_t /westos

[[email protected] ~]# lftp 172.25.254.216

selinux的管理

5.永久修改标签

[[email protected] ~]# semanage fcontext -l | grep /westos##给westos目录修改永久标签

[[email protected] ~]# semanage fcontext -a -t public_content_t '/westos(/.*)?'##永久修改westos目录标签

[[email protected] ~]# semanage fcontext -l | grep /westos

/westos(/.*)?                                      all files          system_u:object_r:public_content_t:s0

[[email protected] ~]# restorecon -FvvR /westos/##修改完毕之后需要刷新一下

selinux的管理

[[email protected] ~]# systemctl start vsftpd

[[email protected] ~]# systemctl stop firewalld

[[email protected] ~]# systemctl enable vsftpd

ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service'

[[email protected] ~]# systemctl disable firewalld

rm '/etc/systemd/system/basic.target.wants/firewalld.service'

rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'

[[email protected] ~]# lftp 172.25.254.216

selinux的管理

6.管理 SELinux 布尔值

##在强制状态下,客户端切换到student用户,是不可以上传文件的

selinux的管理

##切换到警告状态可以上传文件

selinux的管理

[[email protected] pub]# getsebool  -a | grep ftp   查看布尔值开关

selinux的管理

[email protected] pub]# setsebool -P ftp_home_dir 1   永久打开ftp_home_dir开关打开之后,在强制状态下,student用户可以上传文件

selinux的管理

7.监控selinux冲突

[[email protected] ~]# rm -fr /var/ftp/*

[[email protected] ~]# touch /mnt/westos

[[email protected] ~]# mv /mnt/westos /var/ftp/

[[email protected] ~]# > /var/log/messages ##

[[email protected] ~]# cat /var/log/messages ##查看日志解决方案

网页浏览ftp://172.25.254.216

[[email protected] ~]# restorecon -v /var/ftp/*

网页浏览ftp://172.25.254.216 ##可以看到westos文件

selinux的管理

setroubleshoot是查看selinux日志报错命令

[[email protected] pub]# rpm -qa | grep setroubleshoot  ##查找排错工具安装包

[[email protected] pub]# yum remove setroubleshoot-server-3.2.17-2.el7.x86_64##卸载

[[email protected] pub]# > /var/log/messages

[[email protected] pub]# > /var/log/audit/audit.log##清空日志  

[[email protected] pub]# cat /var/log/messages ##没有出错工具提示

[[email protected] pub]# cat /var/log/audit/audit.log    ##查看效果没有出错提示

[[email protected] pub]# yum install  setroubleshoot-server-3.2.17-2.el7.x86_64  安装排错包

[[email protected] pub]# > /var/log/messages

[[email protected] pub]# > /var/log/audit/audit.log

[[email protected] pub]# cat /var/log/messages##有排错提示

[[email protected] pub]# cat /var/log/audit/audit.log ##可以看到日志

8.更改selinux端口

[[email protected] ftp]# yum install httpd

[[email protected] ftp]# vim /etc/httpd/conf/httpd.conf

selinux的管理

[[email protected] ftp]# systemctl restart httpd
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

[[email protected] ftp]# setenforce 0

[[email protected] ftp]# systemctl restart httpd

[[email protected] ftp]# semanage port -l | grep http
selinux的管理
[[email protected] ftp]# semanage port -a -t http_port_t -p tcp 6666 ##添加6666端口到selinux

[[email protected] ftp]# semanage port -l | grep http ##查看是否添加成功

selinux的管理

[[email protected] ftp]# setenforce 1

[[email protected] ftp]# systemctl restart httpd