S2-P6-1 管理SELinux安全
约 1528 字大约 5 分钟
2025-03-31
任务一:手动修改文件的上下文标签并恢复
在
/root
下创建两个文件file1
、file2
,观察其上下文标签touch file1 file2 ll -Z file*
命令解析:
-Z
:查看文件安全上下文将
file1
复制到/opt
下,将file2
移动到/opt
下,再查看其上下文标签cp file1 /opt mv file2 /opt
观察发现:
通过 复制 的文件,将继承目标位置的安全上下文
通过 移动 的文件,将携带原有的安全上下文去到目标位置
/opt
下,用chcon
命令修改file1
的上下文标签为etc_t
chcon -t etc_t file1
命令解析:
临时修改上下文,用于调测,可以被恢复
-t
:修改安全上下文的类型字段-R
:递归,当前目录和目录下的所有子文件同时设置/opt
下,用restorecon
命令恢复file1
的上下文标签restorecon -v file1
命令解析:
恢复默认上下文
-R
:递归,当前目录和目录下所有的子文件同时恢复-v
:显示细节
任务二:设置目录的默认上下文并递归到目录下所有文件
查看下系统所有目录以及指定目录的默认上下文
安装工具包
在不清楚命令
semanage
是属于哪个软件包时,可以使用yum provides
查询:yum provides semanage
根据查询结果,安装软件包:
yum install policycoreutils* -y
查询
semanage fcontext -l
命令解析:
semanage fcontext [选项] "目录(/.*)?"
:查询、修改默认上下文semanage port [选项] 端口号
:查询、修改端口标签-a
:添加默认安全上下文配置。-d
:删除指定的默认安全上下文。-m
:修改指定的默认安全上下文。-t
:设定默认安全上下文的类型-l
:查询上下文-p
:协议注意:目录后面不加尾斜线
查询结果:
在
/root
下创建一个文件夹selinux
,查看其继承的上下文以及默认上下文(目前应没有默认上下文)mkdir selinux ll -Zd selinux/ semanage fcontext -l | grep "/root/selinux"
注意:
在查询默认上下文时,目录后不能加尾斜线
修改
selinux
的默认上下文为ftpd_exec_t
# 设置默认上下文 semanage fcontext -a -t ftpd_exec_t "/root/selinux(/.*)?"
ls –Zd
查询发现当前上下文仍然是admin_home_t
,用restorecon
恢复其默认值# 恢复默认上下文(也就是变为上面设置的上下文,永久配置重启后才会生效) restorecon -R selinux/ # 查看设置的默认上下文 semanage fcontext -l | grep "/root/selinux"
进入
selinux
目录,新建2个文件,查询是否继承默认上下文
任务三:修改httpd文件上下文,selinux为enforcing模式下,站点能正常访问
配置本地yum源(注意镜像位置正确,连接,挂载;编写repo文件;yum repolist验证)
安装
httpd
并启动httpd
服务# 安装httpd服务 yum install httpd # 启动服务 systemctl start httpd # 查看状态 systemctl status httpd
关闭防火墙
systemctl stop firewalld
到
/var/www/html
目录下创建index1.html
文件,写入内容,查看其上下文cd /var/www/html/ echo "21LST-text-01" > index1.html ll -Z index1.html
在电脑端用浏览器访问
index1.html
,正常虚拟机IP信息:
在
root
根下创建index2.html
,并移动到/var/www/html
,查看其上下文echo "21LST-text from root" > /root/index2.html mv /root/index2.html ./
在电脑端用浏览器访问
index2.html
,无法访问将selinux设置为
permissive
模式,再次访问站点正常setenforce 0
修改
index2.html
文件上下文为httpd_sys_content_t
chcon -t httpd_sys_content_t index2.html
设置selinux为enforcing,再次访问站点,可正常访问
拓展:在根 /
下创建站点,配置其selinux的默认安全上下文,selinux为enforcing模式下,站点可以正常访问
在根
/
下创建目录myweb
,该目录下创建文件myweb.html
,并写入内容hello zxl building 7
mkdir /myweb echo "hello zxl building 7" > /myweb/myweb.html
确保
httpd
启动和确保关闭防火墙systemctl status httpd firewalld
打开
httpd
配置文件/etc/httpd/conf/httpd.conf
,将其中两处/var/www/html
替换为/myweb
vim /etc/httpd/conf/httpd.conf
重启下
httpd
服务systemctl restart httpd systemctl status httpd
在电脑端用浏览器访问
myweb.html
,此时应无法访问将selinux设置为
permissive
模式,再次访问后正常访问,分析是selinux问题setenforce 0
检查
/myweb
目录的上下文是否正确,设默认值为httpd_sys_content_t
并同步恢复semanage fcontext -a -t httpd_sys_content_t "/myweb(/.*)?" restorecon -R /myweb/
设置selinux为
enforcing
,再次访问站点,可正常访问setenforce 1
在目录
/myweb
下再建一个文件myweb2.html
,写入内容hello zxl building 7 again
,直接通过站点就可以正常访问cd /myweb/ echo "hello zxl building 7 again" > myweb2.html
版权所有
版权归属:DDoS_LING