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 image-20220504214626583

  • 查看文件的上下文

ll -Z file

image-20220504214636933

image-20220504214718999

管理安全上下文(标签值)

  • 语法:

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的布尔值

image-20220504215716051

  • semanage boolean -l 查看所有的布尔值,只有root可以执行

image-20220504215919021

  • getsebool -a 查看所有生效的布尔值

  • setsebool -P 规则 on|off 永久设置布尔值启用和禁用

    不加-P 只会当前生效

管理布尔值

image-20220504220249520

搭建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日志

image-20220504220455681

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 列出修改过的端口标签

修改端口标签案例

image-20220504221130174

selinux对系统保护方式

1.文件的标签

2.端口的标签

3.布尔值开关

标签管控 文件能否访问

布尔值 管理系统行为

selinux会看日志和服务的相关配置文件

排错的思路

1.文件本身的权限

2.共享权限

3.服务配置

4.selinux

posted @ 2023-05-09 16:36  loser_xu  阅读(183)  评论(0编辑  收藏  举报