selinux的管理
1.基本SELINUX安全性概念
SELINUX ( 安全增强型 Linux ) 是可保护你系统安全性的额外机制。
在某种程度上 , 它可以被看作是与标准权限系统并行的权限系统。在常规模式中 , 以用户身份运行进程 , 并且系统上的文件和其他资源都设置了权限 ( 控制哪些用户对哪些文件具有哪些访问权SELINUX 的另一个不同之处在于 , 若要访问文件 ,你必须具有普通访问权限和 SELINUX 访问权限。因此 , 即使以超级用户身份root 运行进程 , 根据进程以及文件或资源的 SELinux 安全性上下文可能拒绝访问文件或资源限 ) 标签。
2.selinux 的开机状态
[[email protected] ~]# vim /etc/sysconfig/selinux
SELINUX=enforcing|permissive|disabled
enforcing ##开启状态下的强制状态
permissive ##开启状态下的警告状态
Disabled ##关闭状态
[[email protected] ~]# getenforce ##查看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/
[[email protected] ~]# lftp 172.25.254.216
[[email protected] ftp]# ls -Z ##查看文件标签,开启selinux之后的文件标签为mnt_t,开启之前的标签为public_content_t。
##因为安全上下文不同,所以无法显示文件名称。
[[email protected] ftp]# semanage fcontext -l | grep /var/ftp ##查看/var/ftp安全上下文
[[email protected] ftp]# chcon -t public_content_t westos3 ##修改westos3的文件标签为public_content_t
4.修改匿名用户登陆的家目录/westos/后给它修改标签
[[email protected] ~]# mkdir /westos/
[[email protected] ~]# touch /westos/westosfile
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
[[email protected] ~]# systemctl restart vsftpd
[[email protected] ~]# lftp 172.25.254.216
[[email protected] ~]# setenforce 0 ##开启状态下的警告状态
[[email protected] ~]# chcon -t public_content_t /westos
[[email protected] ~]# lftp 172.25.254.216
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/##修改完毕之后需要刷新一下
[[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
6.管理 SELinux 布尔值
##在强制状态下,客户端切换到student用户,是不可以上传文件的
##切换到警告状态可以上传文件
[[email protected] pub]# getsebool -a | grep ftp 查看布尔值开关
[email protected] pub]# setsebool -P ftp_home_dir 1 永久打开ftp_home_dir开关打开之后,在强制状态下,student用户可以上传文件
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文件
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
[[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
[[email protected] ftp]# semanage port -a -t http_port_t -p tcp 6666 ##添加6666端口到selinux
[[email protected] ftp]# semanage port -l | grep http ##查看是否添加成功
[[email protected] ftp]# setenforce 1
[[email protected] ftp]# systemctl restart httpd