RHCSA-A3.配置调试SELinux
Posted 白-胖-子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RHCSA-A3.配置调试SELinux相关的知识,希望对你有一定的参考价值。
红帽RHCE考试上午-RHCSA(RH134)
servera.example.com 任务
3. 调试SELinux
- 非标准端口82上运行的web服务器在提供内容时遇到问题,
- 根据需要调试并解决问题,并使其满足这些条件
注意:考试的时候全程开启SELinux,不能关闭SELinux
任务要求
- 系统上的Web 服务器能够提供/var/www/html 中所有现有的HTML 文件(注:不要删除或以其他方式改动现有的文件内容)
- Web 服务器在端口82 上提供此内容
- Web 服务器在系统启动时自动启动
注意事项
- 考试时/var/www/html会有文件,做实验如果没有自己创建
echo a1 > file1
echo a2 > file2
echo a3 > file3
echo `hostname -I` > web.html
完成步骤
1.1 检查httpd服务状态,没装给装上
yum -y install httpd # 考试的时候已经安装好了的
1.2 进入网页目录中检查文件
- 恢复SELinux文件属性即恢复文件的安全上下文
cd /var/www/html
ll -Z
restorecon -Rv /var/www/html/
- 使用restorecon恢复权限以后,httpd就可以访问目录下的文件了
- web服务通过82端口访问
- 更改httpd配置文件修改端口号
vim /etc/httpd/conf/httpd.conf
Listen 82 #修改监听端口为82
- selinux上开放端口
semanage port -a -t http_port_t -p tcp 82
- httpd服务开机启动
systemctl start httpd
systemctl enable httpd
- 检查文件是否可访问
curl http://servera:82/web.html
详情介绍
解决httpd服务问题
- 确认httpd是否已安装
考试时默认是装好的,但服务是没有启动的
systemctl status httpd
- 先确认httpd的端口号是否时82
- 如果不是,修改配置文件改成82
cat /etc/httpd/conf/httpd.conf | grep 82
- 查看semanager port
- 82在semanager中是非标准端口
semanage port --list | grep 82
- 尝试重启httpd服务
- 重启服务发现报错
systemctl restart httpd
- 通过系统日志朝朝错误原因
- 报错没关系,我们去查看系统日志
tail /var/log/messages
- 提取系统日之内配置命令和参数
- 系统日志详细记述了httpd起不了的原因,并提供了解决方法
you want to allow httpd to bind to network port 82
semanag port -a -t PORT_TYPE -p tcp 82
- 选择修改正确的PORT_TYPE并执行命令
semanage port -a -t http_port_t -p tcp 82
- 再次重启httpd服务成功,并设为开机启动
systemctl restart httpd
systemctl enable httpd
解决web服务文件访问
- 考试的时候/var/www/html目录中已经有web文件,但是curl访问不了
curl http://servera:82/web.html
- 查看系统日志寻找错误原因
tail /var/log/messages
- 系统日志记录了错误的原因
SELinux is preventing httpd from detattr access on the file /var/www/html/web.html
- 系统日志提示需要给文件设置标签
/sbin/restorecon -v /var/www/html/web.html
我们用同样的方法对整个目录进行递归授权
restorecon -Rv /var/www/html
- 再次检查,就管用了
curl http://servera:82/web.html # 检查管不管用
systemctl start httpd
tail /var/log/messages
semanage port -a -t http_port_t -p tcp 82
restorecon -Rv /var/www/html/
systemctl start httpd
systemctl status httpd
systemctl enable httpd
curl http://servera:82/web.html # 检查管不管用
- 下面这个作为参考
semanage port -a -t http_port_t -p tcp 82
ls -l /var/www/html/ -Z
semanage fcontext -a -t httpd_sys_content_t "/var/www/html/file1"
semanage fcontext -m -t httpd_sys_content_t "/var/www/html/file1"
restorecon -v /var/www/html/file1
systemctl restart httpd
systemctl enabled httpd
firewall-cmd --permanent --add-port 82/tcp
firewall-cmd --reload
考察的知识点
-
每个文件都是有标签的,使用ll -Z可以看到
-
getenforce可以查看SELinux状态
-
关闭后新建文件没有标签
-
标签就是说明文件的用途,如果改变用途,则会导致出现问题
-
在开启SELinux的情况下,修改httpd.conf文件中的监端口
-
重启服务使httpd无法启动,观察日志,发现记录着安全策略禁止
以上是关于RHCSA-A3.配置调试SELinux的主要内容,如果未能解决你的问题,请参考以下文章