SELinux介绍
1.端口防护
2.文件防护
3.服务防护
4.相关命令 sestatus getenforce setenforce semanage sesearch setsebool getsebool
4.selinux性能影响
selinux启用或关闭
临时开启或关闭 - 立即生效
[root@localhost ~]# setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
永久开启或关闭 - 重启生效
修改SELinux配置文件 /etc/selinux/config
selinux状态查看
[root@centos ~]# sestatus -v
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: 31
selinux端口控制
如果没有semanage命令,则需要手动安装
# yum provides semanage
# yum -y install policycoreutils-python.x86_64
查看默认开放端口
# semanage port -l | grep http_port_t
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
示例:新增非标准HTTP端口
# semanage port -a -t http_port_t -p tcp 8090
selinux服务控制
setsebool命令是用来修改SElinux策略内各项规则的布尔值。setsebool命令和getsebool命令是SELinux修改和查询布尔值的一套工具组。
selinux文件安全上下文
安全上下文是一组和进程或对象有关的安全属性,每一个进程或对象都会记录一条安全上下文,
将其作为SELinux判断进程(或服务)是否能够读取对象的依据。
USER字段
USER字段用来记录登录系统后所属的SELinux身份。
-
- user_u 真实用户类型的使用者
- system_u 系统账户类型的使用者
- root 超级用户的使用者
- unconfiged_u 未设置类型
ROLE字段
ROLE字段用来存储进程、领域或对象所扮演的角色信息。
-
- staff_r 内部的用户角色
- user_r 其他或不分类的用户角色
- object_r 文件、设备或其他无法分类的角色
- secadm_r 允许做安全管理的用户角色
TYPE字段
TYPE字段用来定义该对象的类别
-
- default_t 默认类别
- httpd_t 作为HTTP服务器文件的类别
- java_exec_t JAVA相关的执行文件
LEVEL和CATEGORY字段
用来定义其隶属的安全等级和分类。LEVEL字段定义为s0~S15,共16个,s0机密等级最低,s15机密等级最高。
CATEGORY字段定义为c0~c1023,共1024个。
查看安全上下文
id -Z 查看当前用户安全上下文
pa -aux -Z 查看当前进程安全上下文
ls -Z /var/www/ 查看指定文件安全上下文
修改安全上下文
chcon -t default_t /var/www/index.html 设置文件或目录安全上下文
-R, --recursive:递归处理所有的文件及子目录。
-v, --verbose:为处理的所有文件显示诊断信息。
-u, --user=用户:设置指定用户的目标安全环境。
-r, --role=角色:设置指定角色的目标安全环境。
-t, --type=类型:设置指定类型的目标安全环境。
-l, --range=范围:设置指定范围的目标安全环境。
semanage fcontext -a -t default_t /var/www/index.html 设置文件或目录安全上下文,可以使用正则进行文件匹配,建议使用 fcontext
restorecon -Rv /var/www 恢复默认目录下所有文件安全上下文