RHCE之seLinux和防火墙

目录

SELinux:

SELinux工作原理:

常用的SELinux的几种文件类型:

1、文件类型(file type):用于限制文件的访问。

2、进程类型(process type):用于限制进程的行为。常见的类型包括:

3、端口类型(port type):用于限制网络端口的访问。常见的类型包括:

SELinux的三种模式:

修改安全上下文:

1、chcon命令

例子:使用nginx服务演示安全上下文值的设定

2、semanage 命令

例子:使用nginx服务端口的改变来演示端口的设定

iptables防火墙:

iptables服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类,具体如下:

注意:

iptables 链规则:

实验

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

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

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

Firewalld防火墙

Firewalld和iptables 不同之处

firewalld配置模式

实验

实验一:禁止ssh默认的22端口

实验二:设置其他主机禁止ping本机

富规则

实验三:将8080端口转发到本机的http80端口

SELinux:

SELinux是Security-Enhanced Linux的缩写,意思是安全强化的linux。

SELinux工作原理:

SELinux是通过MAC的方式来控制管理进程,它控制的主体是进程,而目标则是该进程能否读取的文件资源。

常用的SELinux的几种文件类型:

1、文件类型(file type):用于限制文件的访问。

  • all files:适用于所有文件。
  • httpd_sys_content_t:用于 HTTP 服务内容。
  • user_home_t:用于用户主目录。

2、进程类型(process type):用于限制进程的行为。常见的类型包括:

  • init_t:用于系统的 init 进程,它会在系统启动时启动。
  • httpd_t:用于 Apache HTTP 服务器进程,控制其与系统的交互行为。
  • ssh_t:用于 SSH 进程,限制它能否与网络或其他进程进行通信。

3、端口类型(port type):用于限制网络端口的访问。常见的类型包括:

  • http_port_t:用于 Web 服务的 HTTP 端口。
  • smtp_port_t:用于邮件服务的 SMTP 端口。
  • dns_port_t:用于 DNS 服务的 UDP 和 TCP 端口。

SELinux的三种模式:

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

修改安全上下文:

1、chcon命令

chcon [-R] [-t type] [-u user] [-r role] 文件

-R:连同该目录下的子目录也同时修改;

-t:后面接安全上下文的类型字段;

-u:后面接身份识别;

-r:后面接角色

例子:使用nginx服务演示安全上下文值的设定
[root@server ~]# vim /etc/nginx/conf.d/vhost2.conf  #写一个nginx配置文件
server {listen 192.168.182.100:80;server_name _;root /web/selinux;location / {}
}
[root@server ~]# mkdir -pv /web/selinux
mkdir: 已创建目录 '/web'
mkdir: 已创建目录 '/web/selinux'
[root@server ~]# echo this is selinux > /web/selinux/index.html 
以上搭建了一个web服务[root@server ~]# ll -Z /web/
总用量 0
drwxr-xr-x. 2 root root unconfined_u:object_r:default_t:s0 24  7月 26 23:21 selinux
[root@server ~]# chcon -R -t httpd_sys_content_t /web/  #修改web目录下所有文件的类型
[root@server ~]# ll -Z /web/
总用量 0
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 24  7月 26 23:21 selinux
[root@server ~]# ll -Z /web/selinux/
总用量 4
-rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 16  7月 26 23:21 index.html
[root@server ~]# systemctl restart nginx.service  #修改后启动nginx成功
[root@server ~]# curl 192.168.182.100   #访问到内容
this is selinux

2、semanage 命令

{login|user|port|interface|fcontext|translation} -l

semanage fcontext -{a|d|m} [-frst] file_spec

  • -l为查询;
  • -a:增加一些目录的默认安全上下文的设置;
  • -m:修改;
  • -d:删除。
  • -t 是一个选项,用于指定对象的类型
  • -p 指定端口和协议
例子:使用nginx服务端口的改变来演示端口的设定
[root@server ~]# vim /etc/nginx/conf.d/vhost2.conf
server {listen 192.168.182.100:80;server_name _;root /web/selinux;location / {}
}
#添加了一个端口为1000的一个server模块
server {listen 192.168.182.100:1000;server_name _;root /web/port;location / {}
}
[root@server ~]# semanage port -l | grep -w 80  #HTTP端口类型中没有1000端口的服务
http_port_t                    tcp      10000, 80, 81, 443, 488, 8008, 8009, 8443, 9000
[root@server ~]# semanage port -a -t http_port_t -p tcp 1000  #添加HTTP1000端口的服务
[root@server ~]# semanage port -l | grep -w 1000
http_port_t                    tcp      1000, 10000, 80, 81, 443, 488, 8008, 8009, 8443, 9000
[root@server ~]# mkdir -pv /web/port
mkdir: 已创建目录 '/web/port'
[root@server ~]# echo this is 1000 port > /web/port/index.html
[root@server ~]# systemctl restart nginx.service   #重启
[root@server ~]# curl 192.168.182.100:1000  #可访问到内容
this is 1000 port
[root@server ~]#通过添加端口服务来实现nginx服务的启动

iptables防火墙:

iptables服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类,具体如下:

  • 在进行路由选择前处理数据包,用于目标地址转换(PREROUTING);
  • 处理流入的数据包(INPUT);
  • 处理流出的数据包(OUTPUT);
  • 处理转发的数据包(FORWARD);
  • 在进行路由选择后处理数据包,用于源地址转换(POSTROUTING)。
注意:
  • 防火墙规则的顺序默认为从前到后依次执行,遇到匹配的规则就不在继续向下查,如果遇到不匹配的规则则会继续向下进行。
  • 重点:匹配上了拒绝规则也是匹配。因此,不在继续向下进行。
  • 例如:同时执行以下规则
[root@server ~]# iptables -A INPUT -p tcp --dport 3306 -j DROP
-A:添加到链路规则中的末尾
-p:指定端口协议
-j:指定后面的动作
--dport:表示目标端口
DROP:拒绝
ACCEPT:接受
[root@server ~]# iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

此时,第一条规则匹配,检查3306端口是不通的。

iptables 链规则:

  1. INPUT 链规则:用于处理传入的数据包。
  2. OUTPUT 链规则:用于处理传出的数据包。
  3. FORWARD 链规则:用于处理转发的数据包,即网络中通过 Linux 系统进行的数据包转发。
  4. PREROUTING 链规则:在数据包进入路由之前进行处理,常用于对数据包进行 NAT 转换。
  5. POSTROUTING 链规则:在数据包离开路由之后进行处理,同样常用于对数据包进行 NAT 转换。
  6. NAT 链规则:用于处理网络地址转换 (NAT) 相关的规则,包括源地址转换 (SNAT) 和目标地址转换 (DNAT) 等。

实验

实验一:搭建web服务,设置任何人能够通过80端口访问。
[root@server ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@server ~]# iptables -L --line-numbers
[root@server ~]# iptables -D INPUT 1
-I:指定加入规则链并插入在首行
实验二:禁止所有人ssh远程登录该服务器
[root@server ~]# iptables -I INPUT -p tcp --dport 22 -j REJECT
#删除设置的拒绝ssh连接:
[root@server Desktop]# iptables -D INPUT 1
实验三:禁止某个主机地址ssh远程登录该服务器,允许该主机访问服务器的web服务。服务器地址为
172.24.8.128
拒绝172.24.8.129通过ssh远程连接服务器:
[root@server ~]# iptables -I INPUT -p tcp -s 172.24.8.129 --dport 22 -j
REJECT
允许172.24.8.129访问服务器的web服务:
[root@server ~]# iptables -I INPUT -p tcp -s 172.24.8.129 --dport 80 -j
ACCEPT

Firewalld防火墙

Firewalld和iptables 不同之处

    • iptables service 在 /etc/sysconfig/iptables 中储存配置,而 firewalld将配置储存在/usr/lib/firewalld/ 和/etc/firewalld/ 中的各种XML文件里.
    • 使用 iptables service每一个单独更改意味着清除所有旧有的规则和从/etc/sysconfig/iptables里读取所有新的规则,然而使用 firewalld却不会再创建任何新的规则;仅仅运行规则中的不同之处。因此,firewalld可以在运行时间内,改变设置而不丢失现行连接。
    • iptables通过控制端口来控制服务,而firewalld则是通过控制协议来控制端口

firewalld配置模式

运行时模式:表示当前内存中运行的防火墙配置,在系统或firewalld服务重启、停止时将失效;

永久模式:表示重启防火墙或重新加载防火墙时的规则配置,是永久存储在配置文件中的。

  • firewall-cmd命令工具与配置模式相关的选项有三个:
    • --reload:重新加载防火墙规则并保持状态信息,即将永久配置应用为运行时配置;
    • --permanent:带有此选项的命令用于设置永久性规则这些规则只有在重新启动或重新加载防火墙规则时才会生效;若不带此项,表示用于设置运行时规则。
    • --runtime-to-permanent:将当前运行时的配置写入规则配置文件中,使当前内存中的规则称为永久性配置

实验

实验一:禁止ssh默认的22端口

执行此命令后,终端无法ssh连接,需要先放行本地的ssh连接,先添加下面命令
[root@server ~]# iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT 
#放行已经建立连接的和ESTABLISHED,RELATED有关联的放行
[root@server ~]# iptables -A INPUT -p tcp --dport 22 -j REJECT  #-A INPUT:将规则添加到 INPUT 链,即输入流量链。
-p tcp:指定协议为 TCP。
--dport 22:匹配目标端口为 22,也就是 SSH 默认端口。
-j REJECT:使用 REJECT 动作,拒绝匹配的数据包并发送拒绝响应给源地址。[root@server ~]# iptables -L -n            #查看默认规则,必须按顺序写,先放行在写策略
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
#0.0.0.0/0:匹配任何源 IP 地址。 0.0.0.0/0:匹配任何目标 IP 地址。state RELATED,ESTABLISHED:匹配与已建立或相关的 TCP 连接相关的数据包。比如,如果你已经       与目标主机建立了 SSH 连接,那么后续的数据包可以通过这条规则。REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22 reject-with icmp-port-unreachable
#0.0.0.0/0:匹配任何源 IP 地址。0.0.0.0/0:匹配任何目标 IP 地址。tcp dpt:22:匹配目标端口是 22 的 TCP 数据包,也就是 SSH 默认端口。reject-with icmp-port-unreachable:使用 ICMP unreachable 响应拒绝匹配的数据包。
[root@server ~]# iptables -D INPUT 2             #删除INPUT 2规则链
[root@server ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
[root@server ~]# iptables -I INPUT 2 -p tcp --dport 22 -s 192.168.110.0/24 -j ACCEPT    
#允许本网段访问,-I是在INPUT 2 规则前插入
[root@server ~]# iptables -n -L --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
2    ACCEPT     tcp  --  192.168.110.0/24     0.0.0.0/0            tcp dpt:22
3    REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22 reject-with icmp-port-unreachable

实验二:设置其他主机禁止ping本机

限制192.168.182.151这台主机ping本机,--icmp-type 8为icmp为请求,0为回复
[root@server ~]# iptables -I INPUT -p icmp --icmp-type 8 -s 192.168.182.151 -j DROP
!为取反,意思为允许192.168.182.151这台主机ping本机
[root@server ~]# iptables -I INPUT -p icmp --icmp-type 8 ! -s 192.168.182.100 -j DROP
[root@server ~]# iptables -n -L --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       icmp -- !192.168.182.151      0.0.0.0/0            icmptype 8
2    ACCEPT     tcp  --  192.168.182.0/24     0.0.0.0/0            tcp dpt:22
3    REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22 reject-with icmp-port-unreachable

实验三:添加、删除服务;基于端口号规则添加端口号

[root@server ~]# firewall-cmd --permanent --zone=public --add-service=http   #放行http服务
success
[root@server ~]# firewall-cmd --permanent --zone=public --remove-service=http    
#移除http服务
success[root@server ~]# firewall-cmd --permanent --zone=public --add-port=8080/tcp
success
#连续的端口可以写81-85

富规则

富规则(rich rules)是针对 firewalld 防火墙软件的一种高级配置方式,允许用户定义更复杂的防火墙规则。它可以使用更为灵活的匹配条件,如 IP 段、端口范围等,并支持高级的动作(如重定向、源地址 NAT 等)。

实验三:将8080端口转发到本机的http80端口

[root@server ~]# firewall-cmd  --add-rich-rule='rule family="ipv4" source address="192.168.182.151/32" forward-port port=8080 to-port=80 protocol=tcp to-addr="192.168.182.100"'      #目标端口为 8080 的 TCP 流量转发到端口号为 80 的服务上。
successforward-port:指定转发端口的规则        
port=80 to-port=8080:转发规则将源端口80的数据包转发到目标端口8080
protocol=tcp:端口转发规则的协议为 TCP
to-addr:指定是由哪个IP来转发[root@server ~]# firewall-cmd --reload                         #重新加载配置
success[root@server ~]# firewall-cmd --list-rich-rules         #查看富规则内容
rule family="ipv4" source address="192.168.110.134/32" forward-port port="80" protocol="tcp" to-port="8080"[root@client ~]# curl 192.168.182.100:8080    #客户端可以访问但访问的8080端口会转到80端口
欢迎来到梁浩东的站点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/876243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试面试宝典(三十二)—— 你是怎么测试接口的?

首先,在测试接口之前,我会仔细分析接口的需求文档和技术规格,明确接口的功能、输入输出参数、预期的返回结果以及可能的异常情况。 然后,我会使用工具如 Postman 或 Jmeter 来发送请求对接口进行测试。对于常见的 HTTP 接口&…

实现共模噪声电流相互抵消的方法

共模传导路径中噪声电流相互抵消,从而使总的共模电流减小, 终达到降噪的目的。目前为实现共模噪声电流相互抵消,主要是采用动点电容抵消法。 动点电容抵消法原理 动点电容抵消法就是选取合适的动点,添加原副边跨接电容&#xff0c…

如何判断应该设计类、子类、抽象类或接口?

如何判断应该设计类、子类、抽象类或接口? 1、设计新类1.1 原则1.2 解释1.3 示例 2、设计子类2.1 原则2.2 解释2.3 示例 3、设计抽象类额3.1 原则3.2 解释3.3 示例 4、设计接口4.1 原则4.2 解释4.3 示例 来源:《Head First Java》第二版:227 …

tof系统标定流程之四相位深度计算详解

1、芯片介绍 S5K33DX是一款高度集成的间接飞行时间(tof)传感器,旨在实现3d深度传感。S5K33DX具有VGA分辨率和7um像素。相机集成在tof系统中,该tof系统还包括由S5K33DX控制的红外(IR)波段调制光源。S5K33DX芯片包括解调tof像素阵列、模拟/混合信号处理电路,包括调制信号生…

黑马头条Day10-定时计算热点文章、xxl-job

一、今日内容 1. 需求分析 目前实现的思路:从数据库直接按照发布时间倒序查询 问题: 如果访问量比较大,直接查询数据库,压力较大新发布的文章会展示在前面,并不是热点文章 2. 实现思路 解决方案:把热点…

关于三星机玩游戏长时间不操作锁屏的解决办法

com.samsung.android.game.gametools 三星游戏助推器 主版机 问题描述: 在玩游戏是长时间不点击就会出现屏幕锁 经过测试抓取发现是三星的应用 三星系统的应用:三星游戏助推器 解决方案: 通过ADB命令停用系统应用 直接在adb命令中输入 adb shell pm di…

CCS(Code Composer Studio 10.4.0)编译软件中文乱码怎么解决

如果是所有文件都出现了中文乱码这时建议直接在窗口首选项中修改:选择"Window" -> "Preferences",找到"General" -> "Workspace",将"Text file encoding"选项设置为"Other&quo…

深度解析Linux-C——函数和内存管理

目录 函数指针: 指针函数: 参数为指针的函数: 参数为数组的函数: C语言内存管理 stdlib.h头文件常用函数介绍 1、局部变量 2、全局变量 3、 堆空间变量 4、静态变量 5、常量 函数指针: 指向函数的指针&#…

Linux文件与相关函数的知识点3

main函数参数 int main(int argc,char *argv[]) { return 0; } C语言规定了main函数的参数只能有两个,一个是argc,一个是argv并且,argc只能是整数,第二个必须是指向字符 串的指针数组。 argc: 参数表示命令行中参数的个数&#xff0…

Java实现七大排序(二)

一.交换排序 1.冒泡排序 这个太经典了&#xff0c;每个学编程都绕不开的。原理跟选择排序差不多&#xff0c;不过冒泡排序是直接交换。 public static void bubbleSort(int[] array){for (int i 0; i < array.length - 1; i) {for (int j 0; j < array.length-1-i; j…

域内攻击手法——AS-REP Roasting攻击和Kerberoasting攻击

一、AS-REP Roasting攻击 1、AS-REP Roasting攻击原理 AS-REP Roasting是一种对用户账户进行离线爆破的攻击方式。但是该攻击方式使用上比较受限&#xff0c;因为其需要用户账户设置不要求Kerberos 预身份验证选项&#xff0c;而该选项默认是没有勾选的。Kerberos 预身份验证…

20240727 每日AI必读资讯

&#x1f310;OpenAI向Google宣战&#xff0c;重磅推出AI搜索引擎SearchGPT &#xff01; - 将 AI 与实时网络信息结合 提供生成式UI结果 - SearchGPT 结合网络最新信息可以直接回答问题&#xff0c;同时注明相关来源链接。 - 还可以像与人对话一样提出后续问题&#xff0c;…

进程概念(三)----- fork 初识

目录 前言1. pid && ppid2. forka. 为什么 fork 要给子进程返回 0&#xff0c; 给父进程返回子进程的 pid &#xff1f;b. 一个函数是如何做到两次的&#xff1f;c. fork 函数在干什么&#xff1f;d. 一个变量怎么做到拥有不同的内容的&#xff1f;e. 拓展&#xff1a;…

SpringBoot Vue使用Jwt实现简单的权限管理

为实现Jwt简单的权限管理&#xff0c;我们需要用Jwt工具来生成token&#xff0c;也需要用Jwt来解码token&#xff0c;同时需要添加Jwt拦截器来决定放行还是拦截。下面来实现&#xff1a; 1、gradle引入Jwt、hutool插件 implementation com.auth0:java-jwt:3.10.3implementatio…

小红书电商首提“生活方式电商”定义,个性化需求也能做成好生意

近日&#xff0c;小红书发布COO柯南与经济学者薛兆丰的对谈视频。对谈中柯南首次对外定义&#xff0c;小红书电商是“生活方式电商”。 柯南表示&#xff0c;生活方式电商是让用户在小红书买到的&#xff0c;不仅是好产品&#xff0c;也是一种向往的生活。 随着生活方式的多元…

人工智能算法工程师(高级)课程5-图像生成项目之对抗生成模型与代码详解

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(高级)课程5-图像生成项目之对抗生成模型与代码详解。本文将介绍对抗生成模型(GAN)及其变体CGAN、DCGAN的数学原理,并通过PyTorch框架搭建完整可运行的代码,帮助读者掌握图像生成的原理和技术。 文章目录 一、GA…

【初阶数据结构】9.二叉树(4)

文章目录 5.二叉树算法题5.1 单值二叉树5.2 相同的树5.3 另一棵树的子树5.4 二叉树遍历5.5 二叉树的构建及遍历 6.二叉树选择题 5.二叉树算法题 5.1 单值二叉树 点击链接做题 代码&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* …

PID 控制实验 - 整定实验

Arduino PID Arduino-PID-LibraryArduino-PID-AutoTune-Library PID控制实验 – 制作测试台 PID Control Experiment – Making the Testing Rig PID (Proportional, Integral, Derivative) control is a classic control algorithm that I have used for a few projects,…

Java面试还看传统八股文?快来看看这个场景题合集吧【附PDF】

以下就是这份面试场景文档↓ 这里有什么&#xff1f; ↓↓ 1.针对 2024 年面试行情的变化设计的面试场景题以及回答思路 2. 如何快速通过面试的详细攻略 3. 简历优化技巧 1.知己知彼才能百战百胜&#xff0c;如何做好面试前的准备工作 场景题答案以及更多场景题八股文一线大…

java学习--枚举

问题引入&#xff1a; 当需要解决一个季节类的问题&#xff0c;我们使用学到的类与对象&#xff0c;创建一个季节的类然后添加构造器在进行分装就可以实现&#xff0c;但问题也随之而来&#xff0c;这样不仅可以有正常的四季还可以添加其他不存在的四季以及可以更改四季的属性…