当前位置: 首页 > java >正文

SElinux和iptables介绍

目录

实验要求

 思路总结

实验步骤

启用httpd修改安全上下文标签

SElinux补充

实验一:搭建web服务,设置任何人能够通过80端口访问。

实验二:禁止所有人ssh远程登录该服务器

实验三:禁止某个主机地址ssh远程登录该服务器,允许该主机访问服务器的web服务。

 iptables补充


实验要求

要求使用SELinux 

1、启用httpd服务,打开对应端口:80,并在其对应目录下创建文件,查看其安全上下文标签。

要求使用iptables

1、建web服务,设置任何人能够通过80端口访问。

2、禁止所有人ssh远程登录该服务器。

3、禁止某个主机地址ssh远程登录该服务器,允许该主机访问服务器的web服务。
服务器地址为172.24.8.128。

SELinux工作原理

 SELinux是通过MAC的方式来控制管理进程,
它控制的主体是进程,而目标则是该进程能否读取的文件资源。
最终文件的成功访问还是与文件系统的rwx权限设置有关 。
主体(subject):就是进程
目标(object):被主体访问的资源,可以是文件、目录、端口等。
策略(policy):SELinux会依据某些服务来制定基本 的访问安全策略。
安全上下文(security context):主体与目标的安全上下文必须一致才能够顺利访问。

iptables四表五链

 

 思路总结

SELinux 思路​

  1. 安装并启动 httpd 服务,通过 firewall-cmd 放行 80 端口并重启防火墙,确保 web 服务基础运行环境就绪。​
  2. 在 /var/www/html/ 目录下创建 test.html 文件并写入内容,重启 httpd 服务后,用浏览器验证 web 访问是否正常。​
  3. 查看文件安全上下文标签,通过关闭 SELinux、更改标签再开启的操作,观察浏览器访问状态变化,最后恢复默认标签使访问恢复,以此验证 SELinux 安全上下文的作用。​

iptables 思路​

  1. 搭建 web 服务时,关闭 firewalld 并启动 iptables,配置规则允许任何人通过 80 端口访问,完成后进行网页访问测试;删除规则可使用相应删除命令。​
  2. 禁止所有人 ssh 远程登录,通过 iptables 写入拒绝规则,用 xshell 测试连接是否失败,需删除规则时执行对应删除操作。​
  3. 针对特定主机(如 192.168.48.128),设置 iptables 规则禁止其 ssh 远程登录,同时允许其访问 web 服务,精准控制该主机的访问权限。

实验步骤

启用httpd修改安全上下文标签

安装httpd服务启用并且放行

[root@stoki ~]# yum -y install httpd                       #安装httpd
[root@stoki ~]# systemctl start httpd		               #打开httpd	
[root@stoki ~]# firewall-cmd --add-port=80/tcp --permanent #放行端口80
[root@stoki ~]# firewall-cmd --reload                      #重启防火墙  
[root@stoki ~]# firewall-cmd --list-ports                  #查看放行端口列表

编辑http访问文件并且重启

[root@stoki ~]# cd /var/www/html/       #切换目录
[root@stoki html]# vim test.html        #编辑web文件<h1>testing</h1>                    #写入内容<div id="datetime"><script>setInterval("document.getElementById('datetime').innerHTML =new Date().toLocaleString();", 1000);</script></div>[root@stoki html]# systemctl  restart  httpd  #重启服务

浏览器访问验证

查看其上下文

 关闭selinux,更改其安全标签,再打开selinux,此时已经浏览器无法访问页面

 测试

最后恢复其默认标签可以访问

[root@stoki html]# chcon -t httpd_sys_content_t test.html 

SElinux补充

安全上下文用冒号分为四个字段:Identify :role:type:MLS
身份标识(Identify):相当于账号方面的身份标识,主要有以下三种常见的类型:
root:表示root的账号身份;
system_u:表示程序方面的标识,通常就是进程;
unconfined_u:代表的是一般用户账号相关的身份。


角色(role):通过角色字段,可知道这个数据是属于程序、文件资源还是代表用户。一般角色有:
object_r:代表的是文件或目录等文件资源;
system_r:代表的是进程。


类型(type):在默认的targeted策略中,Identify与role字段基本上是不重要的,重要的在于
这个类型字段。而类型字段在文件与进程的定义不太相同,分别是:
type:在文件资源上面称为类型。
domain:在主体程序中则称为域。
domain需要与type搭配,则该程序才能够顺利读取文件资源。


最后一个字段是和MLS和MCS相关的东西,代表灵敏度,
一般用s0、s1、s2来命名,数字代表灵敏度的分级。数值越大、灵敏度越高。

 SELinux三种模式
- enforcing: 强制模式,代表SELinux正在运行中,开始限制domain/type。
- permissive:宽容模式,代表SELinux正在运行中,不过仅会有警告信息并
不会实际限制domain/type的访问。
- disabled:关闭,SELinux并没有实际运行。

实验一:搭建web服务,设置任何人能够通过80端口访问。

关闭firewalld启动iptables,并且写入规则(启动iptables后,不写入默认是拒绝的)

网页测试 

 

删除规则使用

[root@localhost ~]# iptables -D INPUT 1   #删除编号为1的input规则

实验二:禁止所有人ssh远程登录该服务器

使用iptables写入规则

测试使用xshell连接失败

 删除规则

实验三:禁止某个主机地址ssh远程登录该服务器,允许该主机访问服务器的web服务。

服务地址(192.168.48.130)   主机地址(192.168.48.128)

拒绝192.168.48.128通过ssh远程连接服务器:

[root@localhost ~]# iptables -I INPUT -p tcp -s 192.168.48.128 --dport 22 -j DROP

允许192.168.48.128访问服务器的web服务:

[root@localhost ~]# iptables -I INPUT -p tcp -s 192.168.48.128 --dport 80 -j ACCEPT

 iptables补充

让iptables规则永久生效
默认iptables的规则在重启后会失效,所以需要将规则持久化。
iptables-save > /etc/iptables.rules
将 iptables 规则保存到 /etc/iptables.rules 文件中,可以使用以下命令来加载。
iptables-restore < /etc/iptables.rules
为了在系统启动时自动加载 iptables 规则,可以将上述命令添加到 /etc/rc.local 文件中。
该文件中的命令将在每次系统启动时自动执行。

http://www.xdnf.cn/news/15787.html

相关文章:

  • Kafka——Java生产者是如何管理TCP连接的?
  • MCP 协议详细分析一 initialize ping tools/list tools/call
  • C++数据结构————集合
  • 暑期训练8
  • 读书笔记:最好使用C++转型操作符
  • MCP 协议详细分析 二 Sampling
  • NX二次开发常用函数——从一个坐标系到另一个坐标系的转换(UF_MTX4_csys_to_csys )相同体坐标转化
  • Supertest(Node.js)接口测试
  • NJU 凸优化导论(9) 对偶(II)KKT条件+变形重构
  • 笔试强训——第一周
  • 阿里云服务器 CentOS 7 安装 MySQL 8.4 超详细指南
  • 2025年医疗人工智能发展现状
  • 网络基础DAY14-可靠性概念及要求+链路聚合
  • 机器学习漫画小抄 - 彩图版
  • 『 C++ 入门到放弃 』- AVL树
  • 了解.NET Core状态管理:优化技巧与常见问题解决方案
  • 暑假--作业3
  • Linux 自旋锁
  • 13.4 Meta LLaMA开源模型家族全面解析:从Alpaca到Vicuna的技术内幕
  • 笛卡尔积规避:JOIN条件完整性检查要点
  • React生命周期
  • 【Bluedroid】btif_av_sink_execute_service之服务器启用源码流程解析
  • 一动一静皆消耗——IC设计之低功耗技术(Low Power Design)
  • install_arm_docker.sh
  • Redis性能测试全攻略:工具实操与性能优化指南
  • 安装单机版本Redis
  • 2025第15届上海国际生物发酵展:聚焦合成生物与绿色制造,共启生物经济新时代
  • 在 .NET Core 中创建 Web Socket API
  • Spring AI 1.0版本 + 千问大模型之文本对话
  • FPGA自学——二选一多路选择器