[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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EXCEL一对多关系将结果合并到一个单元格

EXCEL一对多关联结果&#xff0c;合并到1个单元格&#xff0c;变成一对一 需求说明 举例说明 假设给出国家省和国家市的对应表&#xff0c;因为每个省都有很多个城市&#xff08;如图1&#xff0c;截取了部分&#xff09;&#xff0c;属于一对多的情况&#xff1b; 如何将同…

数据清洗和特征工程的关系是什么?有什么区别?

1.数据清洗独立于特征工程 数据清洗是独立于特征工程的&#xff1a;一方面&#xff0c;数据清洗不仅适用于机器学习项目&#xff0c;也适用于一般的数据统计分析过程&#xff0c;而特征工程仅适用于机器学习项目&#xff1b;另一方面&#xff0c;针对机器学习项目&#xff0c;…

小程序云开发中引入vant

首先看一下云开发中的小程序的目录结构 安装 vant 上面是官方的方法 具体到我们的项目是这样子的 最后&#xff0c;构建一下就可以了

Stable Video Diffusion(SVD)参数使用教程

Stable Video Diffusion&#xff08;SVD&#xff09;安装和测试 官网 github | https://github.com/Stability-AI/generative-modelsHugging Face | https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xtPaper | https://stability.ai/research/stable-vid…

今年全国收缴各类假章假证1200余万枚!契约锁为组织防范萝卜章

近期公安部召开新闻发布会并通报&#xff1a;今年以来&#xff0c;全国立案侦办假章假证犯罪案件7700余起&#xff0c;收缴各类假章假证1200余万枚。 &#xff08;截图自国家公安部官网&#xff09; 印章作为国家机关依法行政和企事业单位依法从事生产活动的重要信用凭证&…

ACM32F070 RTC 引脚做普通 GPIO 用法配置

有场景需要把带RTC引脚功能的IO当做普通的GPIO使用&#xff0c;但是按照正常的GPIO初始化却无法使用&#xff0c;该芯片手册中有给出介绍 现给出配置方法&#xff0c;参考官方SDK里面PC13的配置&#xff1a; // PC13 GPIOC_Handle.Pin GPIO_PIN_13; GPIOC_Handle.Mod…

C++基础 -21-多继承与多级继承

多继承 代码示例 #include "iostream"using namespace std;class base1 { public:base1() {}base1(int a, int b) : a(a), b(b) {}int a;protected:int b; };class base2 { public:base2() {}base2(int a, int b) : c(a), d(b) {}int c;protected:int d; };class …

springboot+netty化身Udp服务端,go化身客户端模拟设备实现指令联动

&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 springbootnetty化身Udp服务端&#xff0c;go化身客户端模拟设备实现指令联动 &#x1f517;涉及链接前言异步通信的优势异步通信的优势&#xff1a;异步通信的应用场景&…

SD-WAN是否将终结IPsec VPN?

在网络架构的演进历程中&#xff0c;IPsec VPN一直扮演着至关重要的技术角色。而近年来备受关注的SD-WAN技术日益成熟&#xff0c;各大服务供应商纷纷将其与IPsec VPN进行对比&#xff0c;似乎预示着SD-WAN必然替代传统的IPsec VPN。 然而事实究竟如何&#xff1f;SD-WAN等于IP…

Node.js 万字教程

0. 基础概念 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;使用了一个事件驱动、非阻塞式 I/O 模型&#xff0c;让 JavaScript 运行在服务端的开发平台。 官方地址&#xff1a;https://nodejs.org/en 中文地址&#xff1a;https://nodejs.org/zh-cn 代…

leetcode 18. 四数之和(优质解法)

代码&#xff1a; class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {List<List<Integer>> listsnew ArrayList<>();int lengthnums.length;Arrays.sort(nums);for(int i0;i<length-4;){for(int ji1;j<lengt…

【EasyExcel实践】万能导出,一个接口导出多张表以及任意字段(可指定字段顺序)

文章目录 前言正文一、POM依赖二、核心Java文件2.1 自定义表头注解 ExcelColumnTitle2.2 自定义标题头的映射接口2.3 自定义有序map存储表内数据2.4 表头工厂2.5 表flag和表头映射枚举2.6 测试用的实体2.6.1 NameAndFactoryDemo2.6.2 StudentDemo 2.7 启动类2.8 测试控制器 三、…

【Node.js】笔记整理 5 - Express框架

写在最前&#xff1a;跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识&#xff0c;需要格外注重实战和官方技术文档&#xff0c;文档建议作为手册使用 系列文章 【Node.js】笔记整理 1 - 基础知识【Node.js】笔记整理 2 - 常用模块【Node.js】笔记整理 3 - n…

阿里云崩溃了,为什么你没有收到补偿?【补偿领取方式放文末】

事情经过 北京时间11月27日&#xff0c;阿里云部分地域云数据库控制台访问出现异常。据悉&#xff0c;从当日09:16起&#xff0c;阿里云监控发现北京、上海、杭州、深圳、青岛、香港以及美东、美西地域的数据库产品(RDS、PolarDB、Redis等)的控制台和OpenAPI访问出现异常&…

从源代码出发,Jenkins 任务排队时间过长问题的解决过程

最近开发了一个部署相关的工具&#xff0c;使用 Jenkins 来构建应用。Jenkins 的任务从模板中创建而来。每次部署时&#xff0c;通过 Jenkins API 来触发构建任务。在线上运行时发现&#xff0c;通过 API 触发的 Jenkins 任务总是会时不时在队列中等待较长的时间。某些情况下的…

hash_hmac函数讲解

hash_hmac函数的概述 PHP中的hash_hmac函数是一种基于加密哈希算法的函数&#xff0c;用于计算消息的哈希值。它返回一个哈希值字符串&#xff0c;并且可以用于验证消息的完整性和认证。 哈希是一种将任意长度的消息映射到固定长度的值的算法。哈希函数可以将任意大小的数据转…

我若拿出这个,阁下该如何应对,整理常用的Python库!

Requests Requests是一个常用的Python第三方库&#xff0c;用于发送HTTP请求。它提供了简洁而直观的API&#xff0c;使得发送HTTP请求变得非常方便。 使用Requests库可以实现以下功能&#xff1a; 发送GET请求&#xff1a;使用requests.get(url, paramsNone, **kwargs)方法发…

Python基础语法之学习占位符

Python基础语法之学习占位符 一、代码二、效果 一、代码 name "张三" sex "男" age 10 money 12.5# 通过占位符完成拼接 print("姓名&#xff1a;%s" % name) print("姓名&#xff1a;%s,性别&#xff1a;%s" % (name, sex))text…

maven 常用命令解析

目录 maven 是什么 Maven 目录结构 maven 常用命令解析 mvn clean mvn validate mvn compile mvn test mvn package mvn verify mvn install mvn site mvn deploy maven 是什么 Maven 是一个流行的项目管理和构建工具&#xff0c;用于帮助开发人员管理 Java 项目的…
最新文章