SELinux
SELINUX
- SELinux的三种模式
- 控制SELinux文件上下文
- 使用布尔值调整SELinux策略
- 控制SELinux端口标记
- SElinux问题排错
SELinux的3种模式
- 强制模式
enforcing ,系统默认的模式,需要设置策略才可以访问
- 警告/许可模式
permissive,用于测试,排错调试,允许操作,但会记录日志
- 关闭模式
disabled,没有selinux,真正的关闭,可以操作,不会记录日志
更改selinux的模式
-
查看当前的模式:getenforce
-
强制模式切换为警告模式:setenforce 0
-
警告模式切换为强制模式: setenforce 1
-
关闭模式无法在线切换
-
设置selinux模式
修改配置文件 /etc/selinux/config, 修改后重启生效。
在启动时向内核传递参数来设置启动后的SELinux模式:
enforcing=0 许可模式启动
enforcing=1 强制模式启动
selinux=0 关闭模式启动
selinux=1 启动SELinux
文件的安全上下文
- 查看进程的上下文
ps axZ
- 查看文件的上下文
ll -Z file
管理安全上下文(标签值)
- 语法:
chcon -t TYPE file/dir 修改文件或者目录的标签值
-t 指定文件的标签值类型
chcon 修改的标签值重启不会失效,只有重打标签,或者手动恢复才会变为默认的标签值
semanage fcontext -a -t tmp_t /root/file.txt 定义文件的默认标签值
-a :添加
-d :删除
-t: 指定标签值类型
-l: 列出文件的标签值
restorecon -v file 还原文件的默认标签值
-v 查看详细信息
semanage fcontext -a -t admin_home_t "/data(/.*)?" 定义目录的默认标签值
restorecon -Rv dir 递归还原目录的默认标签值
/etc/selinux/targeted/contexts/files/file_contexts 系统默认的文件标签值
设置文件当前标签值,立即生效,重打标签后失效
chcon -t passwd_file_t passwd
设置文件标签规则,重打标签时生效
semanage fcontext -a -t passwd_file_t /root/passwd
semanage fcontext -a -t httpd_sys_content_t '/mydata/html(/.*)?' 设置目录以及目录下的文件的标签值
重打标签,立即生效
restorecon -vR passwd
标签值
/etc/selinux/targeted/contexts/files/file_contexts 系统自带的规则
/etc/selinux/targeted/contexts/files/file_contexts.local 手动添加的规则
修改端口号的标签值
semanage port -a -t http_port_t -p tcp 8899
semanage port -l
查帮助
man semanage-port
SElinux的布尔值
- semanage boolean -l 查看所有的布尔值,只有root可以执行
-
getsebool -a 查看所有生效的布尔值
-
setsebool -P 规则 on|off 永久设置布尔值启用和禁用
不加-P 只会当前生效
管理布尔值
搭建ftp
yum install vsftpd
systemctl enable vsftpd
systemctl start vsftpd
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES 允许匿名访问
anon_upload_enable=YES 允许匿名上传文件
anon_mkdir_write_enable=YES 允许匿名创建文件夹
systemctl restart vsftpd
setsebool -P ftpd_full_access 1
客户端
ftp servera
user ftp ------> 匿名访问对应服务端的ftp账号
pwd
/ ---->对应服务端的/var/ftp目录,注意ftp用户的权限
SELinux日志
sealert -l UUID用于生成时间报告
sealert -a /var/log/audit/audit.log 生成日志文件中所有的事件报告
控制SELinux端口标签值
如果服务的端口运行在非常规端口,selinux会拦截,服务无法正常运行
- 列出所有端口的标签 semanage port -l
- semanage port [option..] PORTNUMBER
常用选项:
选项 | 解释 |
---|---|
-a | 添加端口标签 |
-d | 删除端口标签 |
-m | 修改端口标签 |
-t | 指定端口标签类型 |
-p | 指定协议 |
-l | 列出所有端口标签 |
-C | 列出修改过的端口标签 |
修改端口标签案例
selinux对系统保护方式
1.文件的标签
2.端口的标签
3.布尔值开关
标签管控 文件能否访问
布尔值 管理系统行为
selinux会看日志和服务的相关配置文件
排错的思路
1.文件本身的权限
2.共享权限
3.服务配置
4.selinux