SELinux介绍
SELinux概念
安全加强的Linux,早期的Linux系统安全由系统管理员控制.SELinux就是一些安全规则的集合,类似于人类生活中的法律.
DAC: 自由访问控制(以前的linux版本)
DAC环境下的进程是无束缚的
MAC: 强制访问控制(即使是root用户也会受到MAC的控制)
MAC环境下策略的规则决定控制的严格程度
MAC环境下进程可以被限制的
策略用来定义被限制的进程能够使用哪些资源(文件和端口)
默认情况下,没有被明确允许的行为会被拒绝
SELinux工作类型
SELinux有四种工作类型:
strict: centos5,每个进程都受到selinux的控制
targeted: 用来保护常见的网络服务,仅有限进程受到selinux控制,只监控容易 被入侵的进程,centos4只保护13个服务,centos5保护88个服务
minimum:centos7,修改的targeted,只对选择的网络服务
mls:提供MLS(多级安全)机制的安全性
targeted为默认类型,minimum和mls稳定性不足,未加以应用,strict已不再使用
SELinux安全上下文
所有的文件和端口资源和进程都具有安全标签: 安全上下文(security context)
规定每个进程只能访问哪些文件和端口
chcon -t var_log_t /var/log/messages
restorecon /var/log/messages
semanage fcontext -l | grep /var/log/messages
semanage fcontext -a -t httpd_sys_content_t "/data/html(/.*)?"
semanage命令需要安装软件包 policycoreutils-python
启用和禁用SELinux
查看当前系统是否启用了SELinux 查看文件或者进程信息加 -Z 选项,如果LABEL信息不为空则表示已经启动了SELinux,如果为空则表示禁用了SELinux.
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 [root@centos7 ~]# ll -Z guess.sh 2 -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 guess.sh 3 [root@centos7 ~]# ps auxZ 4 LABEL USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 5 system_u:system_r:init_t:s0 root 1 0.0 0.3 193704 6844 ? Ss 15:55 0:04 /usr/lib/systemd/ 6 system_u:system_r:kernel_t:s0 root 2 0.0 0.0 0 0 ? S 15:55 0:00 [kthreadd] 7 system_u:system_r:kernel_t:s0 root 3 0.0 0.0 0 0 ? S 15:55 0:00 [ksoftirqd/0] 8 system_u:system_r:kernel_t:s0 root 4 0.1 0.0 0 0 ? S 15:55 0:18 [kworker/0:0] 9 system_u:system_r:kernel_t:s0 root 5 0.0 0.0 0 0 ? S< 15:55 0:00 [kworker/0:0H] 10 system_u:system_r:kernel_t:s0 root 7 0.0 0.0 0 0 ? S 15:55 0:00 [migration/0]
临时切换成enforcing setenforce 1 启用所有规则
临时切换成permissive setenforce 0 提示告警信息,但不会真正阻止程序执行
永久启用(enforcing)或者禁用(disabled) vim /etc/selinux/config
SELinux中(enforcing和permissive)两者和disabled无法直接相互切换.如果需要进行切换,必须修改配置文件,重启机器才能生效.
管理端口标签
一个服务不能够随意使用任何一个端口,它的端口使用范围收到SELinux的策略限制.
查看端口标签 semanage port –l
添加端口
semanage port -a -t port_label -p tcp|udp PORT
semanage port -a -t http_port_t -p tcp 9527
删除端口
semanage port -d -t port_label -p tcp|udp PORT
semanage port -d -t http_port_t -p tcp 9527
修改现有端口为新标签
semanage port -m -t port_label -p tcp|udp PORT
semanage port -m -t http_port_t -p tcp 9527
管理SELinux布尔值的开关
布尔型规则: getsebool setsebool
查看bool命令: getsebool [-a] [boolean] semanage boolean –l semanage boolean -l –C 查看修改过的布尔值
设置bool值命令: setsebool [-P] boolean value(on,off) setsebool [-P] Boolean=value(0,1)
管理日志
SELinux会把日志信息写入到/var/log/messages中,通过查看分析日志来判定某个服务不能正常运行是不是由于SELinux设置的策略不对导致的.
SElinux会把告警信息全部写入日志 grep setroubleshoot /var/log/messages
sealert -l UUID 列出具体的SELinux的详细问题信息包括解决方法
本文来自博客园,作者:不懂123,转载请注明原文链接:https://www.cnblogs.com/yxh168/p/9040350.html