SELinux
查看 SELinux 状态
getenforce修改 SELinux
临时关闭
setenforce 0临时启用
setenforce 1永久生效(重启后生效,要立即生效需要重启系统或临时启用或临时关闭)
vim /etc/selinux/config
# enforcing
# permissive
# disabled若系统启动时 SELinux 的状态就是 disabled ,在此状态下修改 SELinux 状态后需要重启系统,让系统重新打标签
修改文件 SELinux context 标签
chcon 命令修改文件 context 标签
chcon -t httpd_sys_content_t test.htmlls -Z test.html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 test.htmlrestorecon test.htmlls -Z test.html
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 test.htmlsemanage fcontext 修改 SELinux 数据库的规则,并还原生效
# 修改 /myapp/ 目录下所有文件的 SELinux context 默认规则
# -a添加,-t上下文标签
semanage fcontext -a -t httpd_sys_content_t '/myapp(/.*)?'# 规则还原,-v可视化,-R递归
restorecon -vR /myapp/# 查看
ls -Zd /myapp/
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /myapp/
ls -Z /myapp/
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 test.html系统自带 SELinux boolean value
查看 SELinux 布尔值
getsebool -a
getsebool -a | grep httpd_use_nfs
# httpd_use_nfs --> off修改 SELinux 布尔值
setsebool httpd_use_nfs=on# 永久生效加 -P 选项即可
setsebool -P httpd_use_nfs=ongetsebool -a | grep httpd_use_nfs
# httpd_use_nfs --> onSELinux 常用故障处理方法
sealert 命令
sealert -a /var/log/audit/audit.log根据上方命令执行后生成的报告中给出的建议执行相关命令,此案例为 httpd 服务,报告给出的建议如下
Do allow this access for now by executing:
# ausearch -c 'httpd' --raw | audit2allow -M my-httpd
# semodule -i my-httpd.pp此方法可以解决绝大多数问题,挨个执行报告中给出的建议命令即可
SELinux 端口安全
此处用修改 ssh 服务默认端口为例做演示
修改 ssh 默认的端口
vim /etc/ssh/sshd_config
# Port 22222重启服务
systemctl restart sshd
# 重启服务报错
Job for sshd.service failed because the control process exited with error code.
See "systemctl status sshd.service" and "journalctl -xe" for details.增加 ssh 服务的 SELinux 策略端口
semanage port -l | grep ssh
# ssh_port_t tcp 22semanage port -a -t ssh_port_t -p tcp 22222semanage port -l | grep ssh
# ssh_port_t tcp 22222, 22systemctl restart sshd拓展:常用 SELinux 命令
查询
getsebool -a
semanage boolean -lsemanage port -lsemanage fcontext -l修改
chcon -t <context> <file>semanage fcontext -a -t <context> <file>restorecon <file>setsebool -P <sebool_name>=on
setsebool -P <sebool_name>=offsemanage port -a -t <name_port_t> -p tcp <port>
semanage port -d -p tcp <port>万能解决方案
sealert -a /var/log/audit/audit.logLast updated