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

[Linux] linux防火墙

 一、防火墙是什么

防火墙(FireWall):隔离功能,工作在网络或主机的边缘,数据包的匹配规则与由一组功能定义的操作组件处理的规则相匹配,根据特定规则检查网络或主机的入口和出口 当要这样做时,基本上默认情况下执行的是关闭所有通过访问类型的访问,只开放允许访问的策略,外网访问的主机希望位于网络中的 DMZ(非军事区)。

1.1 防火墙的分类

按网络协议划分:

网络层防火墙:OSI模型下四层

应用层防火墙/代理服务器

按保护范围划分:

主机防火墙:服务范围为当前一台主机

网络防火墙:服务范围为防火墙一侧的局域网

按实现方式划分:

硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如:华为, 山石hillstone,天融信,启明星辰,绿盟,深信服, PaloAlto , fortinet, Cisco, Checkpoint, NetScreen

软件防火墙:运行于通用硬件平台之上的防火墙的应用软件

 1.2 Linux防火墙

1.2.1 基本认识

Linux防火墙是由netfilter提供,集成在Linux内核中

1.2.2 防火墙工具

1. firewalld

从CentOS 7 版开始引入了新的前端管理工具

软件包:

firewalld

firewalld-config

管理工具:

firewall-cmd 命令行工具

firewall-config 图形工作

2. iptables

由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告

诉内核如何去处理信息包

3.nftables

nftables 是新的数据包分类框架旨在替代现存的 {ip,ip6,arp,eb}_tables

         简而言之

  • 它在 Linux 内核版本高于 3.13 时可用。
  • 它有一个新的命令行工具 ntf,它的语法与 iptables 不同。
  • 它也包含了一个兼容层,让你在新的 nftables 内核框架之上运行 iptables 命令。
  • 它提供了通用的集合基础允许你建立映射和关联。你可以使用这个新特性把你的规则集分类到多维树中,这大大地减少了找到包最终的行为之前需要检查的规则的数量。
1.2.3 netfilter 的钩子函数

内核中的 Netfilter 会选择五个位置放置五个钩子(hook)函数(INPUT、OUTPUT、FORWARD、 PEROUTING、POSTROUTING),这五个钩子函数暴露给用户,用户可以使用命令工具(iptables) (iptables)编写规则。 iptables 由一个信息过滤器表组成,其中包含控制 IP 数据包处理的规则,规则以链的形式分组。 提示:自 Linux 内核 4.2 版起,Netfilter 在预路由前增加了入口钩子功能。可以使用 这个新的入口钩子早于预路由,基本上取代了 tc 命令(流量控制工具)。 这个新的钩子早于预路由,基本上取代了 tc 命令(流量控制工具)。

四表五链

四表:

RAW表:跟踪数据包

MAGLE表:标记优先级 

NAT表:地址转换

FILTER表:流量过滤,筛选哪些数据包可以通过哪些数据包不可以

五链:

INPUT:进入本机的流量

OUTPUT:出去本机的流量

FORWARD:转发数据包

PREROUTING:路由选择前

POSTROUTING:路由选择后

链的作用是:控制流量的时机

表的作用是:如何控制流量

表中有链,链中有规则

二、iptables

2.1 iptables的组成

iptables 是 Linux 中用于配置和管理防火墙规则的工具。它由一系列表、链和规则组成,以实现网络数据包的过滤和转发。

  1. 表 (Tables):

    • filter 表:默认表,用于过滤数据包。大多数防火墙规则都是在这个表上配置的。
    • nat 表:用于网络地址转换 (NAT)。它用于修改数据包的源或目标地址,通常用于实现网络地址转换。
    • mangle 表:用于修改数据包的特定字段。可以用于修改 TOS (Type of Service) 字段等。
  2. 链 (Chains):

    • INPUT:处理到达本地系统的数据包。
    • OUTPUT:处理从本地系统发出的数据包。
    • FORWARD:处理通过系统的路由功能转发的数据包。
    • PREROUTING:在数据包进入本地系统之前应用的规则(仅适用于 nat 表和 mangle 表)。
    • POSTROUTING:在数据包离开本地系统之前应用的规则(仅适用于 nat 表和 mangle 表)。
  3. 规则 (Rules):

    • iptables 规则是用户定义的规则,用于指定数据包的处理方式。
    • 规则通常包括匹配条件和动作。例如,匹配源 IP 地址并拒绝或允许数据包。
  4. 匹配条件 (Matches):

    iptables 允许您在规则中使用匹配条件,以确定是否应用该规则。常见的匹配条件包括源 IP 地址、目标 IP 地址、端口号等。
  5. 动作 (Targets):

    当规则匹配时,可以指定要执行的动作。常见的动作包括 ACCEPT(接受数据包)、DROP(丢弃数据包)、REJECT(拒绝数据包并发送拒绝通知)等。

 ​​​​​​

2.2 配置操作及语法

iptables防火墙的配置方法:
1、使用iptables命令行。
2、使用firewalld
语法:
iptables [选项] 命令 [链名] 规则规范

选项:用于指定一些额外的配置参数。

命令:表示对 iptables 进行的操作,如 -A(追加规则)、-D(删除规则)、-I(插入规则)等。链名:表示要操作的防火墙链的名称,如 INPUT、OUTPUT、FORWARD 等。

规则规范:定义要添加或操作的规则的规范。

iptables 规则规范:

规则规范由匹配条件和动作两部分组成。

匹配条件:

-p:指定协议,如 tcp、udp、icmp 等。

--sport--dport:指定源端口和目标端口。

-s-d:指定源地址和目标地址。

-i-o:指定进入和离开的网络接口。

动作:

-j:指定动作,如 ACCEPT(允许数据包通过。)、DROP(直接丢弃数据包,不给出任何回 应信息)、REJECT(拒绝数据包通过,必要时会给数据发送端一个响应信息)、LOG(在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则) 等。

常见的 iptables 命令:

指令作用
-A追加
-I插入
-D删除
-P修改默认策略
-F清空策略
-R替换策略

iptables语法总结:

 2.3 添加新的防火墙规则

添加新的防火墙规则时,使用管理选项“-A”、“-I”,前者用来追加规则,后者用来插入规则。

这条规则的含义是:禁止66主机ping通自己

 2.4 查看规则表

格式:
iptables [-t表名] -n -L [链名] |[-- line-numbers]
或
iptables - [vn]L

2.5 删除、清空、替换规则

格式:
删除:iptables -D INPUT 序号 -s -j
清空:iptables -F 
替换:iptables -I INPUT 序号 -s -j

主意:
1.若规则列表中有多条相同的规则时,按内容匹配只删除的序号最小的一条
2.按号码匹配删除时,确保规则号码小于等于已有规则数,否则报错
3.按内容匹配删数时,确保规则存在,否则报错 

2.6 设置默认策略

格式:
iptables [-t表名] -P <链名> <控制类型>

2.7 通用匹配

直接使用,不依赖于其他条件或扩展,如网络协议、IP 地址或网络接口。
协议匹配:-p 协议名称
地址匹配:-s 源地址,-d 目标地址
#IP、网段、域名、NULL(任意地址)。
接口匹配:-i 入站网卡,-o 出站网卡  

白名单的创建

可以ping通真机和自己 

 不可以让其他人png自己

2.8 隐含扩展

iptables 在使用-p选项指明了特定的协议时,无需再用-m选项指明扩展模块的扩展机制,不需要手动加载扩展模块要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类型等条件。
端口匹配: --sport 源端口、--dport 目的端口
#可以是个别端口、端口范围

要求:主机cxk可以ping通cxk2,cxk2不可以ping通cxk

有点不符合要求,可以稍加改进一下,在后面指定ip地址即可 

 2.9 显示 扩展模块

显示扩展即必须使用-m选项指明要调用的扩展模块名称,需要手动加载扩展模块
格式:
[-m matchname [per-match-options]]
2.9.1 multiport扩展

以离散方式定义多端口匹配,最多指定15个端口

[!] --source-ports,--sports port[,port|,port:port]...
#指定多个源端口 逗号隔开
[!] --destination-ports,--dports port[,port|,port:port]...
# 指定多个目标端口 逗号隔开
[!] --ports port[,port|,port:port]...
#多个源或目标端

例子:

 2.9.2 iprange扩展

指明连续的(但一般不是整个网络)ip地址范围

[!] --src-range from[-to] 源IP地址范围
[!] --dst-range from[-to] 目标IP地址范围

例子:

 

2.9.3 time模块

 根据将报文到达的时间与指定的时间范围进行匹配

--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 日期
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--timestart hh:mm[:ss]       时间
--timestop hh:mm[:ss]
[!] --monthdays day[,day...]   每个月的几号
[!] --weekdays day[,day...]   星期几,1 – 7 分别表示星期一到星期日
--kerneltz:内核时区(当地时间),不建议使用,CentOS 7版本以上系统默认为 UTC
注意: centos6 不支持kerneltz ,--localtz指定本地时区(默认)

例子:

 按下确认键就失效了,解决办法就是把时间改掉,注意要关掉时间同步,不然一会又失效了

 xshell恢复正常

 2.9.4 connlimit扩展

根据每客户端IP做并发连接数数量匹配

可防止Dos(Denial of Service,拒绝服务)攻击

--connlimit-upto N #连接的数量小于等于N时匹配
--connlimit-above N #连接的数量大于N时匹配

2.9.5 state

 状态类型

NEW:新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求
ESTABLISHED:NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态
RELATED:新发起的但与已有连接相关联的连接,如:ftp协议中的数据连接与命令连接之间的关系
INVALID:无效的连接,如flag标记不正确
UNTRACKED:未进行追踪的连接,如:raw表中关闭追踪
格式:--state state

例子:

ipatables  -A INPUT -m state --state   NEW            -j  REJECT
ipatables  -A INPUT  -m state --state  ESTABLISHED    -j   ACCEPT

要求:服务器维护,需要禁止新访问,已经在访问的用户无影响

 

相关文章:

[Linux] linux防火墙

一、防火墙是什么 防火墙&#xff08;FireWall&#xff09;&#xff1a;隔离功能&#xff0c;工作在网络或主机的边缘&#xff0c;数据包的匹配规则与由一组功能定义的操作组件处理的规则相匹配&#xff0c;根据特定规则检查网络或主机的入口和出口 当要这样做时&#xff0c;基…...

【开源】基于JAVA的音乐偏好度推荐系统

项目编号&#xff1a; S 012 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S012&#xff0c;文末获取源码。} 项目编号&#xff1a;S012&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.1.1 音乐档案模块2.1…...

架构图是什么,该怎么制作?

架构图是指可视化展示软件、系统、应用程序、网络等各种体系结构的一类图表或图形&#xff0c;它能够形象地展示体系结构中各个组成部分和它们之间的关系。 架构图的类型 架构图的种类比较多&#xff0c;逐一列举不太合适&#xff0c;这里只列举一些常见的架构图类型&#…...

信号类型(通信)——最小频移键控(MSK)

系列文章目录 《信号类型&#xff08;通信&#xff09;——仿真》 《信号类型&#xff08;通信&#xff09;——QAM调制信号》 《信号类型&#xff08;通信&#xff09;——QPSK、OQPSK、IJF_OQPSK调制信号》 目录 前言 一、MSK信号特点 1.1、最小频移 1.2、相位连续 二…...

滴滴打车崩了!全过程

滴滴发布致歉10元补偿券&#xff0c;文末可领取 。 事情发生于 2023年11月27日晚~28日中午&#xff0c;滴滴打车服务出现大面积故障&#xff0c;登上微博热搜。 许多用户在使用滴滴出行时遇到了无法叫车、订单异常等问题&#xff0c;导致大量用户滞留在外&#xff0c;出行受阻…...

【刷题】DFS

DFS 递归&#xff1a; 1.判断是否失败终止 2.判断是否成功终止&#xff0c;如果成功的&#xff0c;记录一个成果 3.遍历各种选择&#xff0c;在这部分可以进行剪枝 4.在每种情况下进行DFS&#xff0c;并进行回退。 199. 二叉树的右视图 给定一个二叉树的 根节点 root&#x…...

Gin投票系统(2)

投票系统 数据库的建立 先分析需求&#xff0c;在sql中建立数据库&#xff0c;关于项目数据库如何建立可以在“goweb项目创建流程分析中看如何去建表” 成功后目前有四个表&#xff1a; vote&#xff0c;user&#xff0c;vote_opt,vote_opt_user 建立数据库&#xff0c;可以…...

docker (简介、dcoker详细安装步骤、容器常用命令)一站打包- day01

一、 为什么出现 Docker是基于Go语言实现的云开源项目。 Docker的主要目标是“Build&#xff0c;Ship and Run Any App,Anywhere”&#xff0c;也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理&#xff0c;使用户的APP&#xff08;可以是一个WEB应用或数据库应…...

请简要说明 Mysql 中 MyISAM 和 InnoDB 引擎的区别

“请简要说明 Mysql 中 MyISAM 和 InnoDB 引擎的区别”。 屏幕前有多少同学在面试过程与遇到过类似问题&#xff0c; 可以在评论区留言&#xff1a;遇到过。 考察目的 对于 xxxx 技术的区别&#xff0c;在面试中是很常见的一个问题 一般情况下&#xff0c;面试官会通过这类…...

Nginx漏洞复现与分析

Nginx如何处理PHP请求 Nginx本身不支持直接解析和执行PHP代码,但可以通过与PHP解释器的集成来处理PHP请求。一种常见的方法是使用PHP-FPM(FastCGI Process Manager)作为PHP解释器。 原理图: Step 1 Step 2 +---------------------+ …...

Go 中切片(Slice)的长度与容量

切片长度与容量在 Go 中很常见。切片长度是切片中可用元素的数量&#xff0c;而切片容量是从切片中第一个元素开始计算的底层数组中的元素数量。 Go 中的开发者经常混淆切片长度和容量&#xff0c;或者对它们不够了解。理解这两个概念对于高效处理切片的核心操作&#xff0c;比…...

顶级大厂Quora如何优化数据库性能?

Quora 的流量涉及大量阅读而非写入&#xff0c;一直致力于优化读和数据量而非写。 0 数据库负载的主要部分 读取数据量写入 1 优化读取 1.1 不同类型的读需要不同优化 ① 复杂查询&#xff0c;如连接、聚合等 在查询计数已成为问题的情况下&#xff0c;它们在另一个表中构…...

Java第二十章多线程

一、线程简介 线程是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程之中&#xff0c;是进程中的实际运作单位。一个进程可以包含多个线程&#xff0c;这些线程可以并发执行。线程拥有自己的栈和局部变量&#xff0c;但是它们共享进程的其他资源&#xff0c;如…...

家庭教育,培养娃什么最重要?

家庭教育&#xff0c;培养娃什么最重要&#xff1f; 培养能力最重要 &#xff08;我这么认为的&#xff09; 时代巨变&#xff0c;技术变革的非常快&#xff0c;所以总的来说 年轻一代接触的新东西慢慢比老一代的要多&#xff0c;年轻一代的工作会比老一代的多而且多很多&…...

Linux 进程(一)

1 操作系统 概念&#xff1a;任何计算机系统都包含一个基本的程序集合&#xff0c;称为操作系统(OS)。笼统的理解&#xff0c;操作系统包括 内核&#xff08;进程管理&#xff0c;内存管理&#xff0c;文件管理&#xff0c;驱动管理&#xff09; 其他程序&#xff08;例…...

vue中的keep-alive详解与应用场景

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue-keep-alive 目录 一、Keep-alive 是什么 二、使用场景 三、原理分析 四、案例实现 activa…...

软件设计师——程序设计语言基础(一)

&#x1f4d1;前言 本文主要是【程序设计语言基础】——程序设计语言基础的相关题目&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#…...

Apache简介与安装

先导概念: 静态网站: 最早的建站方式,每个页面都是一个独立的文件,需要手动上传或编辑。网页内容固定不变。例如,个人博客、静态企业官网等。 动态网站: 网站内容可根据不同情况动态变更,一般通过数据库进行架构。包含服务器端脚本,可以实现更丰富的功能。例如,社…...

set与map

set与map 一、序列式容器与关联式容器二、pair1、键值对2、作用3、构造函数4、make_pair&#xff08;1&#xff09;构造函数&#xff08;2&#xff09;作用 5、代码6、运行结果 三、set1、概念2、代码3、运行结果4、说明 四、multiset1、与set的关系2、代码3、运行结果 五、map…...

基于单片机智能液位水位监测控制系统

**单片机设计介绍&#xff0c; 基于单片机智能液位水位监测控制系统 文章目录 一 概要特点应用场景工作原理实现方式 系统功能实时监测控制调节报警功能数据记录与分析 总结 二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 ## 系统介绍 基于单片机…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...