iptables 与 firewalld

iptables

一、主机型(包过滤防火墙)

1、简介:

包过滤型防火墙是一种网络安全设备或软件,它工作在 2、3、4 层,通过检查网络数据包的源地址、目标地址、协议、端口等信息,根据预定义的规则来决定是否允许数据包通过或拒绝它们。

2、缺点:

① 包过滤防火墙无法过滤内部网络的数据包;

② 所有互联网的数据包软件都应经过防火墙的过滤,可能造成网络流量的拥挤。

3、四表五链:

(1) 四个表:

iptables 使用四个主要表来组织和分类防火墙规则,分别是 filter 表、nat 表、mangle 表和 raw 表。

● filter 表:处理数据包的基本过滤和访问控制,用于确定是否允许或拒绝数据包通过防火墙;

● nat 表:用于网络地址转换,配置网络地址转换规则,在内部网络和外部网络之间进行 IP 地址转换;

● mangle 表:用于修改数据包的 IP 头信息;

● raw 表:用于配置规则以绕过连接跟踪机制。

(2) 五个链:

iptables 使用五个主要链来组织和分类规则,分别是 INPUT,OUTPUT, FORWARD,PREROUTING, POSTROUTING。

● INPUT 链: INPUT 链处理进入系统的数据包,即入站数据包;

● OUTPUT 链: OUTPUT 链处理从系统发送的数据包,即出站数据包;

● FORWARD 链: FORWARD 链处理系统用作路由器时转发的数据包;

● PREROUTING 链: PREROUTING 链用于在数据包进入系统之前修改目的地址;

● POSTROUTING 链: POSTROUTING 链用于在数据包离开系统之前修改源地址。

(3) 包过滤匹配流程:

① 入站数据流向:

从外网到达防火墙的数据包,先由 PREROUTING 链处理,再进行路由选择,判断该数据包应该发往何处,如果数据包的目标主机是本机,数据包将被传给INPUT 链进行处理,之后再交给本机的应用程序;

② 转发数据流向:

如果数据包的目标地址是其它外部地址,数据包将被传递给 FORWARD 链进行处理,然后再交给 POSTROUTING链;

③ 出站数据流向:

防火墙本机向外部地址发送的数据包,首先被OUTPUT 链处理,之后进行路由选择,然后传递给 POSTROUTING 链进行处理。

4、防火墙规则:

(1) 基本语法:

iptables -t 表名 管理选项 [链名] [匹配条件] [-j 控制类型]

● iptables: 配置防火墙规则的命令行工具 ;-t 表名: -t 用于指定要操作的表名称,不写表名则默认是 filter 表。

● 管理选项: 这是用于指定要执行的管理操作的选项:

① 添加规则:

-A:向规则链末尾添加规则(Append)

-I:在规则链的开头或指定位置插入规则(Insert)

② 查看规则:

-L:列出规则链中的规则(List)

-n:以数字形式显示地址、端口等信息

-v:以更详细的方式显示规则信息

③ 操作规则:

-D:从规则链删除规则(Delete)

-R:替换规则链中的规则(Replace)

-F:清除规则链中的所有规则(Flush)

-X:删除用户定义的链(Delete chain)

-P:为指定的链设置默认规则

● [链名]:指定要操作的规则链的名称。

● [匹配条件]:指定规则应该匹配的条件,例如源 IP 地址、目标 IP 地址、协议、端口等。

● -j 控制类型:指定匹配条件后执行的操作类型,常见的控制类型:

-j ACCEPT:接受数据包;

-j DROP:丢弃数据包;

-j REJECT:拒绝并发送拒绝消息给发送者;

-j LOG:记录数据包信息。

(2) 示例:

在 filter 表的 INPUT 链插入一个丢弃 icmp 的规则,禁止本机被 ping。

① 定义规则之前,其他主机能够 ping 通:

② 在 132 上定义规则:

iptables -t filter -I INPUT -p icmp -j REJECT

其他主机 ping 132,查看效果:

③ 删除规则:

iptables -t filter -D INPUT -p icmp -j REJECT

5、规则匹配条件:

(1) 通用匹配(协议、地址、接口):

① 协议通用匹配:匹配网络数据包中的传输协议

例:iptables -I INPUT -p icmp -j DROP

② 地址通用匹配:定义 IP 地址的匹配规则

例:iptables -I INPUT -s 192.168.198.133 -j REJECT(拒绝源 IP 地址为 192.168.198.133 的数据包)

③ 物理接口通用匹配:

例:iptables -I INPUT -i eth33 -j DROP(拒绝经过物理接口 eth33 的所有数据包进入系统)

(2) 隐含匹配:

① 端口匹配:匹配个别端口的控制类型:

● iptables -I INPUT -s 192.168.198.133 -p tcp --dport 80 -j ACCEPT

接受特定主机且目标端口为 80 TCP 数据包(允许133访问132的 http 资源)

● iptables -I INPUT -p tcp --dport 20:21 -j ACCEPT

在 INPUT 链中插入一条规则,允许FTP数据传输。

② ICMP 匹配:

--icmp-type 选项用于指定ICMP协议中不同类型的数据包。

--icmp-type 8 对应的是 ICMP Echo Request,表示发出一个请求来测试目标主机是否可达。

--icmp-type 0 对应的是 ICMP Echo Reply,表示目标主机已收到Echo Request 并成功响应。

● iptables -A INPUT -p icmp --icmp-type 8 -j DROP:阻止其他主机发送Ping请求给本机(自己可以ping别人,别人不可以ping自己)

● iptables -A INPUT -p icmp --icmp-type 0 -j DROP:阻止传入的 ICMP Echo Reply 数据包(自己不可以 ping 别人,别人可以 ping 自己)

(3) 显示匹配:

① 多端口匹配:

-m multiport --sports ; -m multiport --dports

● iptables -A INPUT -p tcp -m multiport --dport 80,20,21 -j DROP:

阻止传入目的端口为80、20或21的TCP数据包

② ip 地址匹配(可自定义匹配的 ip 地址范围):

iptables -I INPUT -p tcp -m iprange --src-range 192.168.198.130-192.168.198.140 -j ACCEPT

二、网络型

1、SNAT:

(1) 概念:

SNAT,即源网络地址转换(Source Network Address Translation),是一种网络地址转换技术,用于修改数据包的源 IP 地址。

(2) 示例:

① 配置环境:

A:192.168.198.129(VMnet10)网关:192.168.198.132

B:ens33:192.168.198.132(VMnet10);ens38:192.168.48.128(WMnet8)

C:192.168.48.50(WMnet8)网关:192.168.48.128

② 启动路由转发功能:

A、C 配置相应的网关

B 配置路由转发:

echo "net.ipv4.ip_forward = 1" >>/usr/lib/sysctl.d/50-default.conf

echo 1 > /proc/sys/net/ipv4/ip_forward (重启)

② 删除C的网关,在B上配置 SNAT:

iptables -t nat -A POSTROUTING -s 192.168.198.0/24 -o ens38 -j SNAT --to-source 192.168.48.128

这个命令的目的是将位于 192.168.198.0/24 子网中的数据包,通过名为 "ens38" 的网络接口发送到外部网络时,将它们的源地址替换为 192.168.48.128

③ 检验效果:

在 A 主机上登录 C 的网站:

在 C 上查看访问日志:cat /var/log/httpd/access_log

2、MASQUERADE:

MASQUERADE 是 iptables 中一种NAT操作,用于修改数据包的源地址。能够进行动态IP地址分配,无需配置静态NAT规则。

iptables -t nat -A POSTROUTING -s 192.168.198.0/24 -o ens38 -j MASQUERADE

3、DNAT:

DNAT用于修改传入数据包的目标IP地,DNAT将数据包的目标IP地址更改为预定义的目标地址。

iptables -t nat -A PREROUTING -i ens38 -d 192.168.48.128 -p tcp --dport 80 -j DNAT --to-destination 192.168.198.129

firewalld

1、概念:

firewalld 是一个用于配置和监控防火墙规则的系统守护进程,firewalld 支持划分区域 zone,每个 zone 可以设置独立的防火墙规则。

2、区域 zone:

● trusted: 信任区域,允许所有经过的流量通过,通常用于内部或受信任的网络环境;

● home/internal: 仅允许SSH流量通过,这个区域只允许SSH连接,用于加强内部或家庭网络的安全性;

● work: 仅允许SSH、ipp-client和dhcpv6-client流量通过,这个区域允许更多类型的流量,通常用于工作网络环境;

● public: 默认区域,仅允许SSH和dhcpv6-client流量通过,这个区域是系统的默认区域,通常用于公共网络环境;

● block: 拒绝所有经过的流量;

● drop: 拒绝所有经过的流量,且不进行ICMP错误回应。

3、firewalld 富规则:

富规则包含了更多的信息和条件,以更精细地定义允许或拒绝哪些网络连接。通过定义详细的规则,可以确保只有经过授权的流量能够通过防火墙,从而增加网络的安全性。

4、示例:

(1) 准备配置环境:

yum install -y httpd

echo web1 > /var/www/html/index.html

systemctl start httpd

systemctl start firewalld

firewall-cmd --get-default-zone(观察默认区域)

firewall-cmd --list-all-zone(列出所有区域)

(2) 将public默认区域,更改为trusted区域:

firewall-cmd --set-default-zone=trusted

firewall-cmd --reload

流量已经从默认的public区域,转移到trusted区域,该区域默认放行所有流量,再次访问网站,成功。

还原默认区域:firewall-cmd --set-default-zone=public

(3) 添加http规则进入默认区域 public:

firewall-cmd --permanent --add-service=http --zone=public

(--permanent标志用于将防火墙规则永久性地添加到防火墙配置中)

firewall-cmd --reload

查看默认区域:firewall-cmd --list-all --zone=public

删除规则: firewall-cmd --permanent --remove-service=http --zone=public

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

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

相关文章

ip划分与私公网ip、ip的传递

报文问路:1、不知道跳转默认路由器,2、知道路径,向对应路径发出报文,3、路口路由器,下一步就是目标主机在哪。 想要通信必须同在一个局域网,其实将公网就可以看作一个大型的局域网。 在同一个局域网内发送…

正点原子嵌入式linux驱动开发——Linux USB驱动

USB是很常用的接口,目前大多数的设备都是USB接口的,比如鼠标、键盘、USB摄像 头等,在实际开发中也常常遇到USB接口的设备,本章就来学习一下如何使能Linux内核自带的USB驱动。这里不会具体学习USB的驱动开发。 USB接口简介 什么是…

413 Request Entity Too Large(nginx/1.24.0)

报错内容 <html><head><title>413 Request Entity Too Large</title></head><body><center><h1>413 Request Entity Too Large</h1></center><hr><center>nginx/1.24.0</center></body>&…

Explaining and harnessing adversarial examples

Explaining and harnessing adversarial examples----《解释和利用对抗样本》 背景&#xff1a; 早期的研究工作认为神经网络容易受到对抗样本误导是由于其非线性特征和过拟合。 创新点&#xff1a; 该论文作者认为神经网络易受对抗性扰动影响的主要原因是它的线性本质&#xf…

精通Nginx(03)-配置简述

本文主要讲述Nginx配置文件结构及调试技巧 使用nginx版本为1.24.0。 目录 Nginx目录 nginx.conf内容结构 配置片段化 配置调试技巧 Nginx目录 Nginx编译安装目录如下&#xff1a; 安装指定目录为"/usr/local"。配置目录为/usr/local/nginx/conf。 目录说明&am…

用LibreOffice在excel中画折线图

数据表格如下。假设想以x列为横坐标&#xff0c;y1和y2列分别为纵坐标画折线图。 选择插入-》图表&#xff1a; 选择折线图-》点和线&#xff0c;然后点击“下一步”&#xff1a; 选择&#xff1a;列中包含数据序列&#xff0c;然后点击完成&#xff08;因为图挡住了数据…

浏览器哪家强——PC端篇

今天的分享将围绕一个大家再熟悉不过的名称展开——浏览器。 根据百科给出的解释&#xff1a;浏览器是用来检索、展示以及传递Web信息资源的应用程序。通俗的说&#xff0c;浏览器就是一种阅读工具&#xff0c;类似记事本、word、wps&#xff0c;只不过后者阅读的是文本文档&am…

记一次 logback 没有生成独立日志文件问题

背景 在新项目发布后发现日志文件并没有按照期望的方式独立开来&#xff0c;而是都写在了 application.log 文件中。 问题展示 日志文件&#xff1a; 项目引入展示&#xff1a; <include resource"paas/sendinfo/switch/client/sendinfo-paas-switch-client-log.…

初识JavaScript(一)

文章目录 一、JavaScript介绍二、JavaScript简介1.ECMAScript和JavaScript的关系2.ECMAScript的历史3.什么是Javascript&#xff1f;4.JavaScript的作用?5.JavaScript的特点 三、JavaScript基础1.注释语法2.JavaScript的使用 四、JavaScript变量与常量变量关键字var和let的区别…

npm install报错,解决记录

第一步&#xff1a;检查和安装 我这里建议检查 1.node.js版本是否和前使用版本一致 2.npm版本是否和前使用版本一致 3.vue版本是否和前使用版本一致 4.vue脚手架是否和前使用版本一致 5.npm镜像是否和前使用版本一致 1.检查版本 【node版本】 命令&#xff1a;node -v 结果&a…

删除排序链表中的重复节点II(C++解法)

题目 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5]示例 2&#xff1a; 输入&#xff1a;head [1…

SQLITE3 函数接口

简述 sqlite3 接口的核心元素: 两大对象&#xff0c;八大函数&#xff1b; 其中两个对象指的是: sqlite3 数据库连接对象 数据库的连接句柄(数据库的文件描述符) 代表你打开的那个 sqlite3 的数据库文件,后序对数据库的操作都需要用到这个对象 sqlite3_stmt SQL 语句对象…

【智能大数据分析】实验1 MapReduce实验:单词计数

【智能大数据分析】实验1 MapReduce实验&#xff1a;单词计数 文章目录 【智能大数据分析】实验1 MapReduce实验&#xff1a;单词计数一、实验目的二、实验要求三、实验原理1 MapReduce编程2 Java API解析 四、实验步骤1 启动Hadoop2 验证HDFS上没有wordcount的文件夹3 上传数据…

线程池--简单版本和复杂版本

目录 一、引言 二、线程池头文件介绍 三、简单版本线程池 1.创建线程池 2.添加任务到线程池 3.子线程执行回调函数 4.摧毁线程池 5.简单版线程池流程分析 四、复杂版本线程池 1.结构体介绍 2.主线程 3.子线程 4.管理线程 一、引言 多线程版服务器一个客户端就需要…

我做云原生的那几年

背景介绍 在2020年6月&#xff0c;我加入了一家拥有超过500人的企业。彼时&#xff0c;前端团队人数众多&#xff0c;有二三十名成员。在这样的大团队中&#xff0c;每个人都要寻找自己的独特之处和核心竞争力。否则&#xff0c;你可能会沉没于常规的增删改查工作中&#xff0…

Qt 使用Quazip解压缩、压缩文件

1.环境搭建 Quazip&#xff0c;是在zlib基础上进行了简单封装的开源库&#xff0c;适用于多种平台&#xff0c;利用它可以很方便将单个或多个文件打包为zip文件&#xff0c;且打包后的zip文件可以通过其它工具打开。 下载Quazip QuaZIP download | SourceForge.net 解压后&…

STM32:使用蓝牙模块

一、蓝牙概要 蓝牙是一种常见的无线通信协议&#xff0c;通常用于短距离通信。蓝牙分为经典蓝牙和低功耗蓝牙(BLE)。经典蓝牙通常用于需要持续传输数据的设备&#xff0c;比如蓝牙耳机等。低功耗蓝牙通常用于只需要间歇性传输数据的设备&#xff0c;比如运动手环。 蓝牙…

python脚本监听域名证书过期时间,并将通知消息到钉钉

版本一&#xff1a; 执行脚本带上 --dingtalk-webhook和–domains后指定钉钉token和域名 python3 ssl_spirtime.py --dingtalk-webhook https://oapi.dingtalk.com/robot/send?access_tokenavd345324 --domains www.abc1.com www.abc2.com www.abc3.com脚本如下 #!/usr/bin…

实现基于 Azure DevOps 的数据库 CI/CD 最佳实践

数据库变更一直是整个应用发布过程中效率最低、流程最复杂、风险最高的环节&#xff0c;也是 DevOps 流程中最难以攻克的阵地。那我们是否能在具体的 CI/CD 流程中&#xff0c;像处理代码那样处理数据库变更呢&#xff1f; DORA 调研报告 DORA&#xff08;DevOps Research &am…

Android studio进入手机调试状态

首先usb插入电脑手机打开开发者模式进入点击就会在你的页面显示了