文章目录
主要内容
- 将servera系统配置在非标准端口上允许HTTP访问。
本次实验案例用到的命令
命令 | 说明 |
---|---|
httpd | 用于托管网站和提供Web服务 |
sealert | 用于分析和解释SELinux(Security-Enhanced Linux)日志的工具 |
semanage | 用于管理SELinux策略的命令行工具 |
curl | 用于发送和接收HTTP请求 |
预备知识
SELinux使用端口标签来管理网络服务的访问控制。每个网络服务都被分配了一个特定的端口标签,用于定义其允许的网络访问规则。SELinux根据这些标签来决定是否允许或拒绝进程对特定端口的访问。
管理端口标签可以使用semanage命令。以下是一些常用的semanage命令和示例:
-
查看已定义的端口标签:
semanage port -l
-
添加一个新的端口标签:
semanage port -a -t <标签名> -p <协议> <端口号>
-
删除一个已定义的端口标签:
semanage port -d -t <标签名> -p <协议> <端口号>
-
修改一个已定义的端口标签:
semanage port -m -t <标签名> -p <协议> <端口号>
例如,要为HTTP服务添加一个新的端口标签,可以使用以下命令:
semanage port -a -t http_port_t -p tcp 80
这将为TCP端口80分配http_port_t标签。
要删除一个已定义的端口标签,可以使用以下命令:
semanage port -d -t http_port_t -p tcp 80
这将从TCP端口80中删除http_port_t标签。
需要注意的是,对于一些常见的网络服务,如HTTP(80端口)、HTTPS(443端口)、FTP(21端口)等,通常已经预定义了对应的端口标签,无需手动添加或删除。
通过semanage命令,管理员可以灵活地管理SELinux的端口标签,以确保网络服务的安全访问控制。
一.控制SELinux端口标记
- 在servera上运行Web服务器,以便成功在非标准端口上提供内容。
1.尝试通过重启httpd服务来修复Web内容的问题。
代码如下(示例):
systemctl restart httpd.service //此命令预计失败
systemctl status -l httpd.service //显示httpd服务状态
2.使用sealert命令检查SELinux是否在阻止httpd绑定到端口82/TCP。
代码如下(示例):
sudo sealert -a /var/log/audit/audit.log
3.将SELinux配置为允许httpd绑定的端口82/TCP,然后重新启动httpd.service服务。
代码如下(示例):
semanage port -l | grep http //查找适合的端口类型
semanage port -a -t http_port_t -p tcp 82 //分配类型
systemctl restart httpd.service
http_port_t 中包含默认HTTP端口80/TCP和443/TCP。这是Web服务器的正确端口类型。
4.检查您现在是否可以访问在端口82/TCP上运行Web服务器。
代码如下(示例):
curl http://servera.lab.example.com:82
5.在另一个终端窗口中,检查是否可以从workstation访问新的Web服务。
代码如下(示例):
curl http://servera.lab.example.com:82
6.在servera上,打开防火墙上的端口82/TCP。
代码如下(示例):
firewall-cmd --permanent --add-port=82/tcp //在servera上的防火墙默认区域的永久配置中打开端口82/TCP。
firewall-cmd --reload //激活防火墙更改
7.使用curl 命令从workstation访问Web服务。
代码如下(示例):
curl http://servera.lab.example.com:82
总结
以上是今天要讲的内容,学到了控制SELinux端口标记。