防火墙:网络防御的第一道防线

news2024/11/18 0:46:01

目录

引言

一、安全技术与防火墙

(一)安全技术

(二)防火墙的主要功能与分类

1.防火墙的主要功能

2.防火墙的分类

二、Linux防火墙的基本认识

(一)Netfilter

(二)防火墙工具介绍

1.iptables

2.firewalld

3.nftables

三、iptables工具

(一)iptables的组成概述

(二)规则链与策略

(三)安装iptables与语法

1.安装iptables

2.基本语法

(四)管理选项基本操作

1.添加规则

2.删除规则

3.替换规则

4.设置默认规则

5.自定义链

6.删除自定义链

7.清空链的计数器

(五)规则基本操作

1.指定协议

2.指定网卡

3.指定IP地址

4.指定端口号

(六)显示扩展

1.多端口匹配 (multiport)

2.多IP匹配(iprange)

3.字符串匹配 (string)

4.time模块

5.connlimit扩展

6.limit模块

7.状态匹配 (state)

(七)保存规则与优化

1.规则保存

2.规则优化


引言

在数字化世界中,网络安全已成为企业和个人无法忽视的重要议题。而防火墙,作为网络安全体系中的关键一环,扮演着保护计算机系统和网络免受未经授权访问的守门员角色。本文将深入探讨防火墙的基本概念、功能、分类以及如何有效配置与使用防火墙以提升整体网络安全水平。

一、安全技术与防火墙

(一)安全技术

入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,类 似于监控系统一般采用旁路部署(默默的看着你)方式。

入侵防御系统(Intrusion Prevention System):以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以 阻断,主动而有效的保护网络的安全,一般采用在线部署方式。(必经之路)

防火墙( FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默 认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ (demilitarized zone)网络中.

(二)防火墙的主要功能与分类

1.防火墙的主要功能

访问控制:防火墙能够基于IP地址、端口号、协议类型等参数制定规则,决定哪些流量可以进入或离开网络。

数据包过滤:通过分析数据包头信息(如源地址、目标地址、协议类型等),对数据包进行筛选和丢弃。

状态检查:现代防火墙具备状态检测功能,能够追踪连接状态,只允许合法会话的数据包通过,进一步增强安全性。

应用层过滤:深度包检测(DPI)技术使防火墙能解析到应用层,针对HTTP、FTP等应用协议内容进行安全检查。

NAT转换:网络地址转换功能,隐藏内部网络结构,提高网络匿名性和安全性。

2.防火墙的分类

按保护范围划分

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

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

按实现方式划分:

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

软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront

按网络协议划分:

网络层防火墙:OSI模型下四层,又称为包过滤防火墙

应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层

包过滤防火墙

网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,被称为访问控制列表(ACL),通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议状态等因素,或他们的组合来确定是否 允许该数据包通过

优点:对用户来说透明,处理速度快且易于维护

缺点:无法检查应用层数据,如病毒等

应用层防火墙

应用层防火墙/代理服务型防火墙,也称为代理服务器(Proxy Server)

将所有跨越防火墙的网络通信链路分为两段

内外网用户的访问都是通过代理服务器上的“链接”来实现优点:在应用层对数据进行检查,比较安全

缺点:增加防火墙的负载

提示:现实生产环境中所使用的防火墙一般都是二者结合体,即先检查网络数据,通过之后再送到应用 层去检查

二、Linux防火墙的基本认识

在红帽 RHEL7 系统中 firewalld 服务取代了 iptables 服务,但依然可以使用 iptables 命令来管理内核的 netfilter。但其实Iptables服务与Firewalld 服务都不是真正的防火墙,它们都只是用来定义防火墙规则功能的“防火墙管理工具”,将定义好的规则交由内核中的netfilter 即网络过滤器来读取,从而真正实现防火墙功能,所以其实在配置规则的思路上是完全一致的

(一)Netfilter

Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在linux内核中

Netfilter 是Linux 2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作

Netfilter官网文档:https://netfilter.org/documentation/

(二)防火墙工具介绍

1.iptables

由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包

2.firewalld

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

软件包:

firewalld

firewalld-config

管理工具:

firewall-cmd 命令行工具

firewall-config 图形工作

3.nftables

此软件是CentOS 8 新特性,Nftables最初在法国巴黎的Netfilter Workshop 2008上发表,然后由长期的netfilter核心团队成员和项目负责人Patrick McHardy于2009年3月发布。它在2013年末合并到Linux内核中,自2014年以来已在内核3.13中可用。它重用了netfilter框架的许多部分,例如连接跟踪和NAT功能。它还保留了命名法和基本iptables设计的几个部分,例如表,链和规则。就像iptables一样,表充当链的容器,并且链包含单独的规则,这些规则可以执行操作,例如丢弃数据包,移至下一个规则或跳至新链。

从用户的角度来看,nftables添加了一个名为nft的新工具,该工具替代了iptables,arptables和ebtables中的所有其他工具。从体系结构的角度来看,它还替换了内核中处理数据包过滤规则集运行时评估的那些部分。

三、iptables工具

(一)iptables的组成概述

Linux 的防火墙体系主要工作在网络层,针对 TCP/IP 数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux 系统的防火墙体系基于内核编码实现, 具有非常稳定的性能和高效率,也因此获得广泛的应用。

netfilter/iptables:IP 信息包过滤系统,它实际上由两个组件 netfilter 和 iptables组成。 主要工作在网络层,针对IP数据包,体现在对包内的IP地址、端口等信息的处理。

-netfilter/iptables关系: netfilter:

属于“内核态”又称内核空间(kernel space)的防火墙功能体系。linux 好多东西都是内核态 用户态,那我们运维人员关注的是用户态, 内核我们关注不是很多,内核基本是我们开发人员关心的事情是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

iptables :

属于“用户态”(User Space, 又称为用户空间)的防火墙管理体系。是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables目录下。 netfilter/iptables后期简称为iptables。iptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。表中所有规则配置后,立即生效,不需要重启服务。

iptables 命令用于创建数据过滤与 NAT 规则,主流的 Linux 系统都会默认启用 iptables 命令,但其参数较多且规则策略相对比较复杂。

(二)规则链与策略

在 iptables命令中设置数据过滤或处理数据包的策略叫做规则,将多个规则合成一个链。

举例来说:

小区门卫有两条的规则,将这两个规则可以合成一个规则链:

遇到外来车辆需要登记。

严禁快递小哥进入社区。

但是光有策略还不能保证社区的安全,需要告诉门卫 (iptables)这个策略(规则链)是作用于哪里的,并赋予安保人员可“登记”,’,对应到iptables命令中则常见的控制类型有:能的操作有这些,如:“允许”“拒绝”,“不理他”

ACCEPT:允许通过.

LOG:记录日志信息,然后传给下一条规则继续匹配.

REJECT:拒绝通过,必要时会给出提示,

DROP:直接丢弃,不给出任何回应

其中 REJECT和 DROP 的操作都是将数据包拒绝,但REJECT 会再回复一条“您的信息我已收到,但被扔掉了”

可以简单看一下,通过ping命令测试REHECT的情况

而DROP则是不予响应

而规则链则依据处理数据包的位置不同而进行分类:

PREROUTING在进行路由选择前处理数据包
INPUT处理入站的数据包
OUTPUT处理出站的数据包
FORWARD处理转发的数据包
POSTROUTING在进行路由选择后处理数据包

Iptables 中的规则表是用于容纳规则链,规则表默认是允许状态的,那么规则链就是设置被禁止的规则,而反之如果规则表是禁止状态的,那么规则链就是设置被允许的规则。

raw表确定是否对该数据包进行状态跟踪
mangle表为数据包设置标记
nat表修改数据包中的源、目标IP地址或端口
filter表确定是否放行该数据包(过滤)

内核中数据包的传输过程

当一个数据包进入网卡可能是直接访问自己,或者是由本机转发,那么就会有两种数据流向

主要就是区分在INPUT与FORWARD阶段

#PREROUTING阶段
'当数据包到达网络接口卡(NIC)时,首先会经过PREROUTING链。
在这个阶段,如果数据包的目的地址是本地主机上的其他IP地址(例如,通过NAT转换),它会被重定
向到正确的网络接口或者目的端口。'

#INPUT阶段
'如果数据包是要被本机接收的(即目的地是本机IP地址),则数据包会继续流经INPUT链。
INPUT链上设置的规则可以决定是否允许数据包进入系统的本地进程,例如接受来自外部网络的服务请求'

#FORWARD阶段
'若数据包既不是发送给本地系统也不是由本地系统发出,而是需要转发至其他网络(比如路由器功能),
数据包会通过FORWARD链。
在这个环节,可以根据策略来控制哪些数据包可以通过本机转发至其他网段。'

#OUTPUT阶段
'当本地系统生成一个要发送到外部网络的数据包时,该数据包会在离开本机之前经过OUTPUT链。
这里可以应用规则以影响所有从本地产生的出站流量。'

#POSTROUTING阶段
'最后,不论是本地生成的还是转发的数据包,在实际离开主机并进入网络之前都会经历POSTROUTING链。
此链主要用于NAT转换(源地址转换SNAT或目标地址转换DNAT)和其他输出前的数据包修改操作'

数据报文一共有三种流向

流入本机:PREROUTING --> INPUT-->用户空间进程(上层次协议栈)

流出本机:用户空间进程 -->OUTPUT--> POSTROUTING

转发:PREROUTING --> FORWARD --> POSTROUTING

(三)安装iptables与语法

1.安装iptables

CentOS7默认使用firewalld防火墙,没有安装iptables,若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装iptables-services,安装时注意软件包名称

systemctl stop firewalld

#关闭防火墙

yum  install iptables-services  -y

#下载iptables

systemctl  enable --now  iptables-services

#启动iptables并设置开机自启动

2.基本语法

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

例如:iptables  -t  filter -A INPUT  -p  imcp  -j  ACCEPT

有三点需要注意:

1.没有指定规则表则默认指 filter 表。
2.不指定规则链则指表内所有的规则链。
3.在规则链中匹配规则时会依次检查,匹配即停止(LOG规则例外),若没匹配项则按链的默认状态处理。

语法总结

管理选项

管理选项用法示例
-A在指定链末尾追加一条 iptables -A INPUT (操作)
-I在指定链中插入一条新的,未指定序号默认作为第一条 iptables -I INPUT (操作)
-P指定默认规则 iptables -P OUTPUT ACCEPT (操作)
-D删除 iptables -t nat -D INPUT 2 (操作)
-R修改、替换某一条规则 iptables -t nat -R INPUT (操作)
-L查看 iptables -L (查看)
-n所有字段以数字形式显示(比如任意ip地址是0.0.0.0而不是anywhere,比如显示协议端口号而不是服务名) iptables -L -n,iptables -nL,iptables -vnL (查看)
-v查看时显示更详细信息,常跟-L一起使用 (查看)
--line-number规则带编号 iptables -t nat -L -n --line-number /iptables -t nat -L --line-number
-F清除链中所有规则 iptables -F (操作)
-N新加自定义链
-X清空自定义链的规则,不影响其他链 iptables -X
-Z清空链的计数器(匹配到的数据包的大小和总和)iptables -Z
-S看链的所有规则或者某个链的规则/某个具体规则后面跟编号

匹配选项

管理选项用法示例
-p匹配服务名称 icmp tcp
-s匹配来源地址IP/MASK,加叹号"!"表示除这个 IP外。
-d匹配目标地址
-i 网卡名称匹配从这块网卡流入的数据
-o 网卡名称匹配从这块网卡流出的数据
--dport num匹配目标端口号
--sport num匹配来源端口号

#控制方式
ACCEPT:允许数据包通过。 
DROP:直接丢弃数据包,不给出任何回 应信息。 
REJECT:拒绝数据包通过,必要时会给数据发送端一个响应信息。 
LOG:在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则。 
SNAT:修改数据包的源地址。
DNAT:修改数据包的目的地址。
MASQUERADE:伪装成一个非固定公网IP地址。

在开始操作之前需要输入iptables  -F清空规则列表,默认是清空filter表

查看规则列表,并清空默认规则

如果向查看nat表,就使用-t nat 

(四)管理选项基本操作

首先指定防火墙服务器与客户机

防火墙服务器192.168.83.30
客户端182.168.83.40

1.添加规则

先来做一个简单的iptables规则

这条规则的意思是丢弃所有来自于192.168.83.40的数据包,这是时候,不论是使用任何协议去访问本机,都会将数据包丢弃。

也可以指定网段:192.168.83.0/24:指定对该网段的防火墙规则

可以看到,使用客户端访问的时候,都是一直在连接,直到超时,这是因为一直在向服务端发送请求,但是没有回包,导致超时。

iptables规则的匹配是从上往下匹配,如果在该规则链的下方去添加允许该地址访问还是会失败

使用客户端访问依然失败

可以使用-I在最上方添加一条规则,这样就可以实现访问了

指定完协议之后,只能接受指定的协议数据包,并返回数据包,其它协议的访问,依然会将数据包丢弃,导致访问失败

2.删除规则

除了使用-F清空规则外,还可以使用-D选项指定删除某一条规则

语法为 iptables  -D 规则链 规则编号

可以使用 --line-number 查看规则编号

看到编号后,就可以指定删除某一条规则了

除了按编号删除规则外,也可按指定的内容进行删除

当然,这种做法显然没有按编号删除更方便,而且,如果当有两条指定部分一样的规则,会将两条规则都删除

3.替换规则

可以使用-R选项 ,指定将某一条防火墙规则的内容进行修改、替换

4.设置默认规则

在规则列表中可以看到表的信息,这里的 "INPUT" 链负责处理所有进入系统的网络数据包

而括号中的内容,则显示的是该表中的一些基础信息

"(policy ACCEPT)" 表示如果没有匹配到任何规则的数据包,默认策略是接受(ACCEPT)这些数据包。

" packets,  bytes" 表示自系统启动以来,根据默认策略通过该链的数据包数量和字节数。

可以使用命令设置默认拒绝数据包

设置完默认拒绝之后,如果正在连接xhell等远程终端,会直接断开,这时候需要去主机设置规则,或者删除、清空规则,才可以连接上

一般在工作环境中,都会设置默认拒绝来添加允许的白名单

5.自定义链

在iptables中,除了预定义的五条链(INPUT、OUTPUT、FORWARD、PREROUTING和POSTROUTING)之外,还可以自定义规则链。自定义链允许你将相关的规则组织在一起,从而简化管理和提高可读性

首先使用-N选项,新建一条规则链

而后再给自定义链添加规则

在默认规则中设置的INPUT链是拒绝的,可以通过将规则链跳转,使其通过

当客户端使用imcp协议访问本机时,就可以通过rule进行访问了

6.删除自定义链

使用-X删除自定义链,在删除之前,需要将设置的自定义链的所有相关规则,包括INPUT链跳转的规则删除,否则会报错

7.清空链的计数器

要清空iptables链中的计数器(匹配到的数据包数量和总字节数),可以使用-Z选项

iptables -Z                                 #清空所有链的所有计数器

iptables -Z INPUT                     #清空INPUT链的计数器

iptables -Z INPUT 规则编号      #清空特定规则的计数器

(五)规则基本操作

上面主要讲述了对链的一些管理的基本操作,还可以通过选项指定协议、网卡、以及数据包的流向,端口号等等进行操作。

1.指定协议

主要是针对tcp、udp、icmp这三种协议,使用-p选项

可以通过设置指定的协议,确定客户端以什么样的协议可以来访问本机

2.指定网卡

如果你的主机有两块网卡,可以指定其中一块网卡允许或拒绝访问、

假设现在允许客户端连接自己ens36的网卡,但是不能连接ens33的网卡

-i 网卡名称匹配从这块网卡流入的数据
-o 网卡名称匹配从这块网卡流出的数据

-o主要设置在OUTPUT链中,用来指定网络接口(网卡)作为规则的输出方向。这意味着该规则将应用于通过指定网卡发送出去的数据包

OUTPUT链默认是允许所有数据包流出,可以通过设定来拒绝某块网卡的流出

现在是可以ping通两块网卡,可以控制其中一块网卡的数据包流出

3.指定IP地址

-s匹配来源地址IP/MASK,加叹号"!"表示除这个 IP外。
-d匹配目标地址

-d一般设置在OUTPUT链

OUTPUT链的默认规则是允许所有数据包通过,可以设置目标地址的规则,来拒绝发送指定地址的数据包。拒绝之后就无法进行数据包回发,导致通连失败

4.指定端口号

指定端口号通常与 -p 参数(用于指定协议)一起使用,并结合 --dport 或 --sport 参数来设置目标端口或源端口。主要用于区分不同的访问方式进行允许、拒绝

--dport num匹配目标端口号
--sport num匹配来源端口号

比如匹配目标端口,设置指定目标端口号为80端口可以访问(通常为HTTP服务),则其它服务则无法访问(例如ssh服务,该协议访问端口号为22)

也可以设置自己的回包,通过限制本机回包的端口号,来拒绝外来访问,通常设置在OUTOUT链

如果端口号连续,也可以设置端口号范围。例如:

iptables  -A  INPUT  -p tcp  -sport  22:80  -j  ACCEPT

--sport 1000匹配源端口是1000的数据包
--sport 1000:3000匹配源端口是1000-3000的数据包
--sport :3000匹配源端口是3000及以下的数据包
--sport 1000匹配源端口是1000及以上的数据包

(六)显示扩展

在iptables(Linux防火墙工具)的上下文中,显示扩展是指需要通过-m选项明确指定使用的模块来实现额外匹配功能的情况。这些扩展模块提供了更复杂或特定类型的网络数据包过滤条件

1.多端口匹配 (multiport)

在之前讲到的--sport于--dport中,只能指定端口号的范围,但不能指定特定的多个端口号,使用该选项就可以满足需求。

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

使用客户机访问对应端口号的服务

2.多IP匹配(iprange)

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

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

3.字符串匹配 (string)

可以通过对报文中的应用层数据做字符串模式匹配检测,来允许或者拒绝数据包,可以过滤某些违规的信息,从而拒绝访问

在服务端上建立两个资源文件

通过设置匹配的字符串来拒绝访问

--algo {bm|kmp} 字符串匹配检测算法
 bm:Boyer-Moore           算法
 kmp:Knuth-Pratt-Morris   算法

--from offset 开始查询的地方
--to offset   结束查询的地方
[!] --string pattern 要检测的字符串模式
[!] --hex-string pattern要检测字符串模式,16进制格式

4.time模块

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

--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]:设置一个开始日期,格式为年(YYYY)、月(MM)、日(DD)、时(hh)、分(mm)和秒(ss)。其中,年份是必需的,月份、日期、小时、分钟和秒数可以选填,默认不填则表示使用该层级的最大值(如只提供年份,则表示从这一年的第一天开始)。'T' 是时间与日期之间的分隔符。

--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]:同上,但这是结束日期。

--timestart hh:mm[:ss]:设置一个开始时间,精确到小时、分钟和秒。

--timestop hh:mm[:ss]:设置一个结束时间,同样精确到小时、分钟和秒。

[!] --monthdays day[,day...]   每个月的几号

[!] --weekdays day[,day...]   星期几,1 – 7 分别表示星期一到星期日

需要注意的是:在设置时间是centos7默认使用的是UTC时间,与中国时间相差8个小时

现在是默认拒绝所有,可以通过iptables工具设置允许访问的时间

没有规定协议或者端口号,默认也是所有都可以访问,使用客户端访问进行验证

5.connlimit扩展

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

connlimit 是 iptables 防火墙规则集中的一种扩展模块,它允许管理员限制来自同一源 IP 地址的并发连接数。这意味着你可以设置一个规则来决定当来自某个 IP 地址的并发连接数超过特定阈值时,防火墙应该如何处理这些额外的连接请求。

connlimit 扩展模块的主要用途是防止拒绝服务攻击(DoS/DDoS),以及控制客户端对服务器资源的过度使用。通过使用这个模块,可以规定每个 IP 地址最多建立多少个并发连接到指定的服务或端口。

以下是一些 connlimit 模块中常用的参数:

--connlimit-above n:如果某个 IP 的现有连接数大于 n,则匹配该规则。

--connlimit-mask n:与 IP 地址进行逻辑与操作以确定一组地址,用于计算连接数。默认情况下,connlimit-mask 为 32,即针对单个 IP 地址计数。

iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50  -j DROP
'这条规则表示,对于试图同时建立超过 50 个 TCP 连接到目标服务器 80 端口的单一 IP 地址,
其超出的连接请求将被防火墙丢弃。'

6.limit模块

它允许管理员限制在指定时间段内通过防火墙的数据包速率。这个模块可以用来防止突发的流量冲击或者对特定服务进行限速控制。

使用 limit 模块时,可以设置一个速率(单位可以是秒、分钟、小时等)以及在该时间间隔内的数据包数量阈值。当超过设定的速率时,超出部分的数据包将根据你的配置被丢弃或者其他方式处理。

iptables -A INPUT -p tcp --dport 22 -m limit --limit 15/minute --limit-burst 30 -j ACCEPT

'这条规则表示,对于目标端口为 22 的 TCP 连接(这里是 SSH),系统会接受每分钟
最多 15 个新连接请求,并且在最初的一次突发情况下可以接受最多 30 个连续的数据
包(--limit-burst 参数)。一旦达到这个突发阈值,后续的数据包如果在接下来的一
分钟内超过每分钟 15 包的限制,则会被拒绝或按照链中的下一条规则处理。'

7.状态匹配 (state)

在iptables防火墙中,状态匹配(state)是一种非常重要的过滤机制。通过使用-m state模块,我们可以根据数据包的连接状态来制定规则,允许或拒绝特定状态的数据包通过。

NEW新连接请求,即尚未建立任何关联的TCP握手包。
ESTABLISHED已经成功建立并处于活跃状态的连接。
RELATED与现有连接相关的数据包,例如FTP协议中的辅助连接或其他服务可能产生的额外数据包
INVALID无效、不完整的或者格式错误的数据包。
UNTRACKED未进行追踪的连接,如:raw表中关闭追踪

首先使一个用户对本级建立连接,(例如:客户端使用ssh协议远程登录本机)

INPUT链是默认允许通过的情况下,不需要输入iptables  -A INPUT -j  ACCEPT

这个时候再去使用state模块

# 允许已建立的和相关的连接通过防火墙:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 拒绝所有新建连接的入站请求,但保留允许响应出去的连接:
iptables -A INPUT -m state --state NEW -j DROP
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

而后将所有允许通过的规则删除

这时正在访问的连接不会断开,而新的访问将会被拒绝

需要注意的是:如果开启此模块,需要将/proc/sys/net/netfilter/nf_conntrack_max的默认数值65535增大。

否则,当用户访问超过这个数值时,会无法访问,日志中出现table full,dropping packet的报错

这表示系统的连接跟踪表已满,无法继续记录新的网络连接或数据包

(七)保存规则与优化

1.规则保存

防火墙规则设置完毕,重启之后就会自动删除,不会保存,所以需要将规则保存

iptables规则保存通常涉及两个方面:临时保存当前活动的规则和永久保存以确保重启后规则依然有效。

临时保存当前活动规则

要查看当前生效的iptables规则并将其输出到一个文件中,可以使用 iptables-save 命令:

输入:iptables-save > /path/to/rules_backup_file(自定义文件路径)

#这将把当前所有链(INPUT、OUTPUT、FORWARD等)的规则保存到指定的文件中。

此时看到的都是nat、raw等表的规则

开机后,将设置的规则自动删除,使用-vnL看到的规则都是防火墙默认规则

永久保存规则

将iptables-restore </data/iptables重定向命令保存到开机自动加载的文件当中,例如:

对于全局生效(所有用户):编辑 /etc/profile 或 /etc/profile.d/*.sh文件。

对于仅当前用户生效:编辑 ~/.bashrc 或 ~/.bash_profile 文件。

或则将规则写在配置文件当中

编辑防火墙配置文件,并将规则写入文件,如 /etc/sysconfig/iptables 和 /etc/sysconfig/ip6tables (如果是IPv6规则)。

2.规则优化

  1. 安全放行所有入站和出站的状态为ESTABLISHED状态连接,建议放在第一条,效率更高

  2. 谨慎放行入站的新请求

  3. 有特殊目的限制访问功能,要在放行规则之前加以拒绝

  4. 同类规则(访问同一应用,比如:http ),匹配范围小的放在前面,用于特殊处理

  5. 不同类的规则(访问不同应用,一个是http,另一个是mysql ),匹配范围大的放在前面,效率更高

  6. 应该将那些可由一条规则能够描述的多个规则合并为一条,减少规则数量,提高检查效率

  7. 设置默认策略,建议白名单(只放行特定连接)

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

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

相关文章

OSPF 完全stub区域实验简述

1、OSPF 完全stub区域配置 为解决末端区域维护过大LSDB带来的问题&#xff0c;通过配置stub no-summary 完全stub,仅支持1类、2类LSA&#xff0c;ABR产生1条3类默认路由。 实验拓扑图 r1: sys sysname r1 undo info enable int loopb 0 ip add 1.1.1.1 32 quit int e0/0/0 ip …

Java ElasticSearch面试题

Java ES-ElasticSearch面试题 前言1、ElasticSearch是什么&#xff1f;2. 说说你们公司ES的集群架构&#xff0c;索引数据大小&#xff0c;分片有多少 &#xff1f;3. ES的倒排索引是什么&#xff1f;4. ES是如何实现 master 选举的?5. 描述一下 ES索引文档的过程&#xff1a;…

Spring Bean装配精解:探索自动化与显式配置之道

作为一名对技术充满热情的学习者&#xff0c;我一直以来都深刻地体会到知识的广度和深度。在这个不断演变的数字时代&#xff0c;我远非专家&#xff0c;而是一位不断追求进步的旅行者。通过这篇博客&#xff0c;我想分享我在某个领域的学习经验&#xff0c;与大家共同探讨、共…

GEE入门篇|图像分类(一):监督分类

在遥感中&#xff0c;图像分类是尝试将图像中的所有像素分类为有限数量的标记土地覆盖和/或土地利用类别。 生成的分类图像是从原始图像导出的简化专题图&#xff08;图 1&#xff09;&#xff0c; 土地覆盖和土地利用信息对于许多环境和社会经济应用至关重要&#xff0c;包括自…

boss app sig及sp参数,魔改base64(下)

本章所有样本及资料均上传123云盘,需要复刻的自行下载. boss官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 boss app sig及sp参数,魔改base64(上)_app 魔改base64-CSDN博客 上篇boss分析sig的地址在上面了,把这个sp分析完后再把响应解密分析完就可以对boss的招聘数据…

雷卯推荐电磁兼容保护器件-MOV压敏电阻

一&#xff0e;雷卯MOV产品表格部分展示 一&#xff0e;雷卯MOV产品表格部分展示 三、MOV概述 MOV是金属氧化物压敏电阻器&#xff08;Metal Oxide Varistor&#xff09;的缩写。它是一种电子元器件&#xff0c;通常用于保护电路中的电子设备不受过电压的损害。当电路中电压超…

SwiftUI中的边框、圆角、阴影与渐变色的应用

在SwiftUI中&#xff0c;可以使用边框、圆角、阴影和渐变色来增强视图的外观和风格。 边框&#xff1a; 可以通过在视图上应用边框样式来创建边框效果。使用border()修饰符&#xff0c;并指定边框的颜色、线条宽度和圆角半径&#xff0c;例如&#xff1a; Text("Hello, …

【中国算力大会主办】2024算法、高性能计算与人工智能国际学术会议(AHPCAI 2024)

【中国算力大会主办】2024算法、高性能计算与人工智能国际学术会议&#xff08;AHPCAI 2024&#xff09; 2024 International Conference on Algorithms, High Performance Computing and Artificial Intelligence 2024算法、高性能计算与人工智能国际学术会议&#xff08;AH…

【千字总结】爬虫学习指南-2024最新版

介绍 如何自学爬虫&#xff1f;今天有一个兄弟这样问我&#xff0c;可以看到打了很多字&#xff0c;诚意肯定是很足的&#xff0c;也是对我的内容给予了肯定&#xff0c;让我非常的开心。既然难得有人问我&#xff0c;那我一定要好好做一个回答。 我下面将要说的内容没有任何话…

Unity 刚体组件的碰撞与触发器

添加刚体组件 给球体添加刚体组件&#xff0c;将脚本挂载到上面。 以下效果为&#xff1a;当球体落到平面上会消失。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class c1 : MonoBehaviour {void Start(){}void Update(){}// 开…

基于遗传优化的协同过滤推荐算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 最后得到推荐的商品ID号&#xff1a; 推荐商品的ID号&#xff1a;ans 9838175822191114902149021235224732230712349911790154716550165501655011…

游泳耳机品牌排行榜前十名:10大口碑产品力荐!

在现代快节奏的生活中&#xff0c;游泳已经成为许多人放松身心、保持健康的重要方式。而伴随着游泳&#xff0c;一款优秀的游泳耳机则成为了许多游泳爱好者不可或缺的装备之一。它不仅能让你在游泳时享受音乐、广播或是专注训练&#xff0c;还能让整个游泳过程更加愉悦、充满动…

宠物的异味,用空气净化器可以解决吗?宠物空气净化器品牌推荐

养猫的人都了解&#xff0c;一个养猫家庭的环境卫生和气味问题与主人的关系密切相关。主人的勤劳程度和对卫生的重视程度直接影响着家中的气味。尽管主人通常会经常更换猫砂&#xff0c;但有时候仍然会存在一些难闻的气味。事实上&#xff0c;忙碌的猫主人可能会因为没有足够的…

总结zy_不定长数据帧的收发

1、接收部分 身份证模块串口接收解析&#xff1a; #define CRC_16_CCITT 0x1021 unsigned short CRC16_CCITT(unsigned char* pchMsg, unsigned short wDataLen) // 1. MSB { unsigned char i, chChar; unsigned short wCRC 0; while (wDataLen–) { chChar *pchMsg; wCRC ^…

符号函数Sign(博途PLC SCL代码)

符号函数在ADRC自抗扰算法里会有涉及,同时在滑膜控制里也会用到,这篇博客我们介绍符号函数在博途PLC里的实现。 1、ADRC自抗扰算法: https://rxxw-control.blog.csdn.net/article/details/126547180https://rxxw-control.blog.csdn.net/article/details/1265471802、模拟量…

虚拟机内存不够用了?全流程操作Look一下?

虚拟机信息&#xff1a;操作系统&#xff1a;CentOS Linux 7 (Core)&#xff0c;用的是VMware Workstation 16 Pro 版本16.2.3 build-19376536&#xff1b;我的主机 Windows 10 Education, 64-bit (Build 22000.1817) 10.0.22000 前言&#xff1a;虚拟机用久了就会出现内存不足…

Java知识点总结(二)

ID生成策略 主键自增id 主键自动增长&#xff0c;不用手工设值、数字型&#xff0c;占用空间小、检索非常有利、有顺序&#xff0c;不会重复&#xff0c;但在迁移旧数据是会出现id冲突 UUID 基于时间&#xff0c;计数器和地址生成32位的id redis生成id 原子性自增&#xff0c;并…

Python 关于函数的使用

一、学习目标 1&#xff0e;掌握函数定义和调用。 2&#xff0e;掌握函数形参与实参的使用。 3&#xff0e;熟练掌握lambda表达式使用。 二、相关练习 1.建立自定义函数实现计算圆的面积和球的体积。 def Count(radius):area 3.14*radius**2volume (4/3)*3.14*radius*…

C 判断

判断结构要求程序员指定一个或多个要评估或测试的条件&#xff0c;以及条件为真时要执行的语句&#xff08;必需的&#xff09;和条件为假时要执行的语句&#xff08;可选的&#xff09;。 C 语言把任何非零和非空的值假定为 true&#xff0c;把零或 null 假定为 false。 下面…

C语言快速入门之指针详解

一.指针基础 1.指针定义的理解 就像我们住房子划分房间一样&#xff0c;在系统中&#xff0c;内存会被划分为多个内存单元&#xff0c;一个内存单元大小是一个字节&#xff0c;我们在搜索房间时有门牌号&#xff0c;与之类似&#xff0c;每个内存单元都会有一个编号 地址 指…