常用的SELinux操作

文章目录

常用的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

参考文档

上一篇:linux入门(二)用户与用户组、权限管理、文件系统、selinux


下一篇:查看SELinux状态: