iptables 与 firewalld

news2024/11/29 11:54:59

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.coloradmin.cn/o/1159862.html

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

相关文章

垃圾回收GC

为什么要有垃圾回收? JVM之所以要有垃圾回收,是因为它能够自动管理内存,避免内存泄漏和内存溢出的问题,垃圾回收机制会自动检测和清理不再使用的对象,释放内存空间,使得开发者不需要手动管理内存,降低了开发难度和错误风险,同时,垃圾回收还可以优化内存分配,提高程序性能和响…

1985-2020年我国30m土地利用覆盖数据介绍

土地覆盖(LC)决定了地球各圈层之间的能量交换、水和碳循环。准确的 LC 信息是环境和气候研究的基本参数。考虑到在过去几十年中,随着经济建设的发展,中国发生了巨大的变化,连续和精细的 LC 监测是迫切需要的。然而,目前&#xff0…

File类、方法递归

File:代表文本 IO流:读写数据 1、 File 类构建对象的方式是什么样的? File 的对象可以代表哪些东西? 注意 File 对象既可以代表文件、也可以代表文件夹。 ● File 封装的对象仅仅是一个路径名,这个路径可以是存在的&#xff0c…

JavaScript从入门到精通系列第二十七篇:详解JavaScript中的包装类

大神引荐:作者有幸结识技术大神孙哥为好友获益匪浅,现在把孙哥视频分享给大家 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻JavaS…

uniapp 查看安卓第三方插件抛出的异常

0.安装好andriod studio 和hbuilder 1.配置环境变量 鼠标右键此电脑-》设置》关于》高级系统设置》环境变量》系统变量》path中加入 具体的hbuildr adb目录看个人 2.在cmd中输入命令adb version 查看是否配置成功 出现版本号就是配置成功了 3.去hbuilder中,导航栏运…

04.Oracle的体系架构

Oracle的体系架构 一、主要组件 一、主要组件 下面是一张网图,大家可以了解一下oracle的体系架构 Oracle数据库的体系架构可以分为以下几个主要组件:实例(Instance)、数据库(Database)、表空间&#xff…

Kafka保证百万级数据写入和重发问题

Kafka作为当下流行的高并发消息中间件,大量用于数据采集,实时处理等场景, 那么它如何做到百万级写入速度呢?我们在享受它带来的高并发,高可靠等便利时,同时不得不面对可能存在的问题,项目中最常见的就是丢…

【KMP算法,数组】

文章目录 KMP算法数组数组的抽象类型定义数组的顺序存储三维数组 KMP算法 KMP算法设计思想: 利用已经部分匹配的结果而加快模式串的滑行速度,且主串S的指针i不必回溯,可提速到O(nm); 定义next[j]函数,表明当模式中第j…

【ArcGIS微课1000例】0077:ArcGIS生成经纬网(shp格式)

使用ArcGIS制图的时候,可以很方便的生成经纬网、方里网及参考格网,但是在需要shp格式的经纬网,进一步在南方cass中使用经纬网的时候,就需要单独生成了。 如下图所示为全球大陆矢量数据,我们基于该数据来生成全球指定间距的经纬网数据。 在ArcGIS中,生成经纬网和方里网均…

Qwt 使用QwtDial绘制汽车仪表盘

1.概述 QwtDial是Qwt库中的一个类,用于绘制一个可旋转的仪表盘。 以下是类继承关系: 2.常用方法 void setOrigin(double origin) 设置仪表盘的原点角度,以度为单位,默认为0度,正值为逆时针旋转,负值为顺时…

两个字符串的删除操作

题目描述 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。每步可以删除任意一个字符串中的一个字符。 示例 思路 其实这道题的思路和最长公共子序列的思路一致,本题让我们求word1 和 word2 相同所需的最小步数&#xff0…

【QT】事件过滤器

事件过滤器1、给控件安装过滤器 2、重写过滤器事件bool eventFilter(两个参数); 基于上一个项目:【QT】事件分发器-CSDN博客 我的代码有问题,不能实现事件过滤器的功能,先记录下来 在头文件中要声明该函数。 #include "widget.h"…

单链表练习

单链表练习 相关内容: 1.再理解:LNode、*LinkList 2.单链表的整表创建(头插法和尾插法) 3.单链表的读取、插入、删除 4.单链表的整表删除 //单链表的初始化、创建、插入、删除、查找 //结点的结构体:数据域、指针域 …

Android应用程序的核心组件Activity

Activity组件 Activity组件是Android应用程序的核心组件之一,它提供了一个用户界面,用于与用户进行交互。每个Activity都是一个独立的屏幕,它可以包含用户界面元素(如按钮、文本框等)和逻辑代码,用于响应用…

玩了一下 Jenkins,最新版本 + JDK11

背景 今年五月的时候玩了一下 Jenkins,最新版本 2.414.3 ,JDK 11 。本机有两个 JDK,只放到 Tomcat 里面了,看到了一个启动页面,后面有其他事情就忘记了。最近又想起来,觉得还是应该玩一下这么有技术含量的…

K8S的pod创建过程

创建流程图 用户发起请求创建deployment;apiserver收到创建资源的请求,apiserver对客户端操作进行身份认证,认证完成后接受该请求,并把相关的信息保存到etcd中,然后返回确认信息给客户端;apiserver向etcd…

【Python3】【力扣题】217. 存在重复元素

【力扣题】题目描述: 【Python3】代码: 1、解题思路:遍历每个元素,判断元素个数是否大于1。(此方法不适用。超出时间限制) class Solution:def containsDuplicate(self, nums: List[int]) -> bool:# 超…

优先队列----数据结构

概念 不知道你玩过英雄联盟吗?英雄联盟里面的防御塔会攻击离自己最近的小兵,但是如果有炮车兵在塔内,防御塔会优先攻击炮车(因为炮车的威胁性更大),只有没有兵线在塔内时,防御塔才会攻击英雄。…

关于嵌入式rtthread系统与单片机芯片

简介 我估计已经有很久没更新了,近一年都在某个国企里工作,我做的就是嵌入式工程师的岗位,最近才刚刚退出来,想来说说自己的工作使用的软件和系统。 本身进公司的时候,其实做的就是写单片机的板子的程序的工作&#x…

8. 一文快速学懂常用工具——Linux命令(上)

本章讲解知识点 引言 指令学习 本专栏适合于软件开发刚入职的学生或人士,有一定的编程基础,帮助大家快速掌握工作中必会的工具和指令。本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。如专栏内容有错漏,欢迎在评论区指…