文章目录
常用的SELinux操作
前言
本文描述了在CentOS8上的常用SELinux操作。
查看SELinux状态
安装CentOS后,默认SELinux是开启状态。
# 查看SELinux状态
getenforce
# 查看SELinux状态的详细信息
sestatus
说明:
-
SELinux在命令中的缩写为
se
,通过man -k 'selinux'
搜索SELinux相关命令。 -
SELinux状态包括:
-
enforcing
- SELinux security policy is enforced. 强制模式 -
permissive
- SELinux prints warnings instead of enforcing. 许可模式 -
disabled
- No SELinux policy is loaded. 禁用模式
-
关闭SELinux
临时关闭SELinux:
# 临时关闭SELinux
setenforce 0
# 关闭SELinux后,查看SELinux状态是否为 Permissive
getenforce
# 临时关闭SELinux后,执行sestatus可以看到SELinux当前模式和配置文件的模式不同
Current mode: permissive
Mode from config file: enforcing
# 临时开启SELinux
setenforce 1
# 开启SELinux后,查看SELinux状态是否为 Enforcing
getenforce
永久关闭SELinux:
# 先关闭SELinux
setenforce 0
# 再编辑 /etc/selinux/config , 将 SELINUX=enforcing 改为 SELINUX=permissive
SELINUX=permissive
# 执行sestatus可以看到SELinux当前模式和配置文件的模式都为 permissive
# 下次重启后,SELinux状态的改动依然生效
Current mode: permissive
Mode from config file: permissive
注意不要将SELINUX
的模式设置为disabled
,避免以后重新开启SELinux后需要重新打SELinux标签。
重新打SELinux标签
创建/.autorelabel
文件:
touch /.autorelabel
重启系统:
reboot
在恢复root用户密码时需要重新打SELinux标签,参见CentOS8恢复root密码。
开启非常规端口
作为安全增强,SELinux对端口的使用也作了限制。
如果应用要开启非常规接口,需要在SELinux上先放通该接口,否则该应用无法启动。
示例:允许httpd侦听82端口
# 修改 /etc/httpd/conf/httpd.conf , 将 Listen 80 改为 Listen 82
Listen 82
# 重启httpd服务
systemctl restart httpd
# 重启httpd服务失败
# 查看服务日志发现无法绑定82端口
# Permission denied: AH00072: make_sock: could not bind to address [::]:82
systemctl status httpd -l
# 查看SELinux允许的http端口
# http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
semanage port -l | grep http
# 可见82端口不在允许的http端口范围内
# 添加82端口到SELinux允许的http端口中
# -a --add
# -t --type
semanage port -a -t http_port_t -p tcp 82
# 重启httpd服务
systemctl restart httpd
# 查看82端口是否工作正常
netstat -tunlp | grep 82
# 查看本地修改了哪些SELinux的默认端口设置
# -C 表示customization,定制化
semanage port -l -C
# 如果想从SELinux允许的http端口中删除82端口
# -d --delete
semanage port -d -t http_port_t -p tcp 82
开启或关闭安全特性开关
前面的开发或关闭SELinux像是总开关,SELinux boolean value (布尔值)像一个个独立的小开关,可用来开启或关闭细粒度的安全特性。
# 查看全部SELinux布尔值
getsebool -a
# 查看全部SELinux布尔值的详细信息
semanage boolean -l
# 查看某个安全特性开关
semanage boolean -l | grep http | grep home
# 打开安全特性开关
# -P 表示Persistent ,永久有效
setsebool -P httpd_enable_homedirs on
# 查看某个安全特性开关
getsebool httpd_enable_homedirs
# 查看本地修改了哪些SELinux布尔值
# -C 表示customization,定制化
semanage boolean -l -C
# 关闭安全特性开关
setsebool -P httpd_enable_homedirs off