selinux
一、简单了解selinux
- selinux内核级加强型火墙
起到限制服务功能,限制服务访问两个功能(在使用lftp访问时体现)
CONTEXT 安全上下文
程序安全上下文和文件安全上下文匹配时访问被允许
程序安全上下文和文件安全上下文不匹配时访问不被允许
getsebool 功能开关
对服务 功能开关
对文件 安全标签 - 查看selinux的状态
执行getenforce
修改状态编辑vim /etc/sysconfig/selinux
SELINUX=enforcing开启
reboot重新启动虚拟机
再次查看
- selinux分为三个级别:分别是开启(Enforing也就是强制),警告(Permissive),和关闭(disable)。由前两个级别向第三个级别相互转换时,在配置文件里改变后要重启机器才能生效,而前两个级别可以在线做转换,如下图:
getebforce可以查看selinux的状态,setenforce改变selinux的状态,跟0转换到警告状态,跟1转换到强制状态
[root@localhost ~]# touch /mnt/westosfile1 在mnt下建立文件
[root@localhost ~]# mv /mnt/westosfile1 /var/ftp/ 移动是重命名的过程权限不会改变
[root@localhost ~]# lftp 172.25.254.203
lftp 172.25.254.203:~> ls
drwxr-xr-x 3 0 0 54 Aug 03 2015 pub 远程登陆后不能看到文件
lftp 172.25.254.203:/> quit
[root@localhost ~]# cd /var/ftp/ 退出后进入该目录下查看确实存在该文件
[root@localhost ftp]# ls
pub westosfile1
[root@localhost ftp]# cd
[root@localhost ~]# setenforce 0 警告模式,不会被拒绝
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]# lftp 172.25.254.203
lftp 172.25.254.203:~> ls
drwxr-xr-x 3 0 0 54 Aug 03 2015 pub
-rw-r--r-- 1 0 0 0 Nov 06 12:22 westosfile1 警告模式下可以看到文件
lftp 172.25.254.203:/> quit
[root@localhost ~]# setenforce 1 切换到强制模式下
[root@localhost ~]# getenforce
Enforcing
[root@localhost ~]# lftp 172.25.254.203
lftp 172.25.254.203:~> ls
drwxr-xr-x 3 0 0 54 Aug 03 2015 pub 强制模式下无法查看文件
lftp 172.25.254.203:/> quit
[root@localhost ~]#
当切换到警告模式下查看警告日志
查看警告日志cat /var/log/audit/audit.log
清空日志 > /var/log/audit/audit.log
二、安全上下文
一、临时设置安全上下文
实验步骤:
cd /mnt进入mnt
touch westosfile1 建立新的文件
mv /mnt/westosfile1 /var/ftp 移动文件到/var/ftp目录下
lftp 172.2.5.254.203 远程登陆
ls 查看不会显示文件
当cd /var/ftp该目录下查看
ls 有文件
查看ls -Zd /var/ftp目录下的安全上下文
chcon -t public_content_t westosfile1 临时设置安全上下文对应
ls -Z 查看临时设置是否对应
lftp 172.25.254.103远程登陆
ls查看
出现westosfile1文件临时设置成功
注意:将/etc/sysconfig/selinux改为disable后重启,重启后再改为enforcing再次重启,表示将selinux重启。临时改的文件安全上下文就没有了。
二、永久设置安全上下文
设置步骤:
编辑配置文件vim /etc/vsftpd/vsftpd.conf
anon_root=/ftphome 添加
重新启动服务
ls -Zd /ftphome 查看/ftphome的默认安全上下文
chcon -t public_content_t /ftphome/ -R 修改该目录临时上下文
ls -Zd /ftphome/ 查看是否修改成功
ls -Zd /var/ftp/ 查看/var/ftp进行对比
semanage fcontext -a -t public_content_t '/ftphome(/.*)?' -a 添加;-t 类型;(/ 本身内容;.* 所有隐藏文件;)
semanage fcontext -l | grep /ftphome 查看默认 /ftphome安全上下文列表
restorecon -RvvF /ftphome 刷新修改的/ftphome -R递归
reboot 重新启动
测试:lftp 172.25.254.203
ls查看 出现文件
永久设置安全上下文成功
三、管理selinux的布尔值
-
selinux匿名文件的上传
首先touch /etc/123在etc下建立文件
在 setenforce 0 警告状态下匿名文件的上传
setenforce 0
[root@localhost ~]# getenforce 查看
Permissive
getsebool -a | grep ftp 查看ftp的功能状态
setsebool -P ftp_home_dir on开启建立目录功能(默认OFF)
vim /etc/vsftpd/vsftpd.conf编辑配置文件
anon_upload_enable=YES
systemctl restart vsftpd重新启动服务
chgrp ftp /var/ftp/pub/匿名用户默认身份ftp 更改组
chmod 775 /var/ftp/pub/更改权限
测试:
-
当setenforce 1匿名用户强制状态下文件上传
touch /etc/456
setsebool -P ftpd_anon_write on 开启匿名用户写功能
ls -Zd /var/ftp/pub/ 查看
chcon -t public_content_rw_t /var/ftp/pub/给上下文加rw权限
ls -Zd /var/ftp/pub/查看是否生效
测试:
四、selinux的日志文件
selinux日志文件保存在 /var/log/audit/audit.log
cat /var/log/audit/audit.log 查看selinux的日志
selinux的问题解决方案被采集在 /var/log/messages
cat /var/log/messages 查看selinux的问题解决方案
rpm -qa | grep setroubleshoot 查看所有setroubleshoot的包
setroubleshoot-server.x86_64 软件将selinux的问题解决方案采集到/var/log/messages
当系统有setroubleshoot-server.x86_64 软件就会采集selinux问题解决方案到/var/log/messages里
当系统没有setroubleshoot-server.x86_64 软件就不会采集selinux问题解决方案到/var/log/messages里
当卸载setroubleshoot-server.x86_64 该软件不会采集selinux问题解决方案到/var/log/messages里
当再次安装setroubleshoot-server.x86_64 软件系统就会采集selinux问题解决方案到/var/log/messages里