SElinux简介 链接到标题
SElinux 阻止小白学习linux的一大拦路虎
这东西其实就是用来防止小白误操作的。
但是你学linux怎么能不误操作几次呢
哪有每个命令都敲对的,不错几次不是人。
这个东西,主要是在rwx这个限制上加上另一种限制
防止进程访问一些他不能访问的资源。有些意思的是
限制是加在inode上的,ntfs其实有可能不能用这个(我没调查过)
具体的机制我很难几句话说清楚,所以建议看鸟哥书。
SElinux工作模式 链接到标题
3个: disable:不工作 permissive:有问题只写写log enforcing:有问题直接禁止 SElinux的限制只发生在rwx这些权限后!!
SElinux某些概念 链接到标题
- 政策(策略比较合适其实)与规则:其实有点像默认配置,说默认那种那种什么什么限制,有多种政策。
- 安全本文(security context):另一种rwx权限罢了,但是设计的很闹心,每个不同对象(进程,文件,端口)含义不一样
对象 安全本文 含义 进程如chronyd守护进程 system_u:system_r:chronyd_t 他是system用户权限,可以使用system_r角色(system_u还可以使用其他的),他这个的作用域是chrony_t(这个角色还可以使用其他的域),chrony_t基本决定他可以碰那些文件 文件 如chronyd的2进制文件 system_u:object_r:chronyd_exec_t 第一个表示谁创建的,第2个表示他是文件,无意义,第3个表示他一般属于chronyd域(这个有默认命名规则的)
模式操作 链接到标题
getenforce # 看看是3种的哪一种模式
setenforce 0 # 调成permissive
setenforce 1 # 调成enforcing
sestatus # 详细设置,看策略
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
设置开机下的模式
vim /etc/selinux/config
SELINUX=enforcing
SELINUXTYPE=targeted
# 看看内核参数
cat /proc/cmdline # 这里看那看那有无selinux=的字眼
BOOT_IMAGE=(hd0,gpt2)/vmlinuz-6.12.0-124.56.1.el10_1.x86_64 root=/dev/mapper/rl_192-root ro crashkernel=2G-64G:256M,64G-:512M resume=UUID=c26327eb-59eb-4438-bae4-4f638bb45ee8 rd.lvm.lv=rl_192/root rd.lvm.lv=rl_192/swap
boolean的操作 链接到标题
boolean是细化的规则,就是说在安全上下文(本文)满足后,还有一些更细致的规则需要设置。
boolean查询
getsebool -a # 最好搭配grep
getsebool -a | grep home
boolean 修改
setsebool -P httpd_enable_homedirs 1 # 不加-P会导致开机后恢复默认的
SElinux的安全本文修改 链接到标题
chcon来改
chcon -t 第3个权限 文件
chcon --reference=文件 文件 # 这个会全部改
使用 semanage fcontext 查找目录/文件缺省的类型 链接到标题
semanage fcontext –list 是用于列出默认的安全本文设置的
semanage fcontext --list | head
/ directory system_u:object_r:root_t:s0
/.* all files system_u:object_r:default_t:s0
semanage fcontext --list | grep /etc/sysconfig # 列出sysconfig开头的默认安全文本
用semanage fcontext 设置自定义个默认模式 在/www这个目录。设置为和/var/www相同
semanage fcontext -a -t httpd_sys_content_t "/www(/.*)?"
# 设置好后,用
restorecon -Rv /www # 重置设定好的安全本文
# 可以代替.autolabel,这个auto太慢了
端口的安全本文看与修改?(这么说对吗) 链接到标题
semanage port --list | grep http #查看
semanage port -a -t TYPE -p [tcp|udp] port_range
#-a 添加一笔纪录
#-t 修改的端口口名称,例如 httpd_port_t
#-p 使用 tcp 或 udp 协定
#port_range 使用的端口口号码
semanage port -a -t http_port_t -p tcp 98 # 加入 port 98 的支持到 http 当中
setroubleshoot服务 链接到标题
这个是专门帮忙分析selinux日志的一个服务
就是说有selinux问题出现,他会自动提供修复建议
具体怎么用看看鸟哥的书吧,就是在/var/log/messages里
直接看就好
鸟哥书里的例子,涉及端口时,注意还有fire-wall要改!!
tip 纯复制鸟哥的 链接到标题
总之,你要记住,无法启动某个服务或者是某服务无法访问某个文件资源,先查看一下 rwx 是否正确?若正确, 先将 SELinux 变更为 permissive,然后『重复一次刚刚发生错误的动作』,看看有没有正常?若有正常, 那表示问题一定来自 SELinux 了!再将 SELinux 变更为 Enforcing,之后依据 sealert 提供的方式处理错误, 最终,一定要『再次的重复一次刚刚发生错误的动作』,确定在 Enforcing 的状态下也是正常启动处理的! 那就没问题了!