[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

 

2.10 保存规则

1. 保存规则到自定义文件中

2.重新加载规则

3.开机自动重载规则

保存/加载规则

开机自动重载规则

  120  iptables -F121  iptables -vnL122  iptables -A INPUT -s 192.168.136.66 -j DROP 123  iptables -vnL124  cd /opt125  ls126  iptables-save >/opt/iptables_rule127  ls128  vim /etc/rc.d/rc.local 129  chmod +x iptables_rule 130  vim /etc/rc.d/rc.local 131  chmod +x /etc/rc.d/rc.local132  cd /etc/rc.d/133  ls134  ll135  reboot136  iptables -vnL

 

 三、SNAT DNAT技术

3.1 SNAT

SNAT的原理及应用:SNAT应用环境:局域网主机共享单个公网IP地址访问Internet(不支持Internet连接)。 SNAT原理:源地址转换根据指定更改数据包的源IP地址conditions.It 通常称为源映射。

SNAT转换的先决条件:

1.LAN中的每台主机都已正确配置IP地址、子网掩码和默认网关地址

2.Linux网关支持IP路由和转发 Linxu系统本身没有转发功能,只有路由发送数据 

实例应用:

 要求:我的内网端可以访问外网

第一步:网关服务器添加网卡并修改

 

第二步:打开路由转发

sysctl -a |grep forward
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p

 第三步:修改内外服务器的网卡,装httpd

将两个服务器重启网卡 

第四步:在网关服务器上设置外网访问规则

iptables -t nat -A POSTROUTING -o ens34 -s 192.168.136.0/24 -j SNAT --to 12.0.0.1

 第五步:测试

3.2 DNAT 

DNAT的原理及应用:

DNAT应用环境:在Internet上公开局域网中的服务器

DNAT原理:目的地址转换通常称为目的地址映射,保证内网服务器的安全,保证数据按指定条件存储。

DNAT转换的先决条件:

1.LAN服务器可以访问Internet

2.网关的外网地址有正确的DNS解析记录

3.Linux网关支持IP路由和转发 。

实际应用:外网访问内网的购物网站

和内网访问外网一样的步骤只需要在网关服务器上加一条规则就行

测试:

 

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

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

相关文章

C++函数模板,类模板

C函数模板&#xff0c;类模板 1.函数模板1.1函数模板的概念1.2函数模板的格式1.3函数模板的原理1.4函数模板的实例化1.5模板参数的匹配原则 2.类模板2.1类模板的定义格式2.2类模板的实例化 1.函数模板 1.1函数模板的概念 在C中&#xff0c;函数模板是一种通用的函数定义&…

Linux系统-----进程通讯

前言 本期我们来学习进程间的通讯 一、信号机制 1、信号的基本概念 每个信号都对应一个正整数常量(称为signal number,即信号编号。定义在系统头文件<signal.h>中)&#xff0c;代表同一用户的诸进程之间传送事先约定的信息的类型&#xff0c;用于通知某进程发生了某异常…

Java 使用对应arthas 调试程序

1、作用 使用 arthas 可以进行如下操作 ① 抓取对应函数的耗时结构&#xff0c;然后分析对应的代码优化代码 ② 抓取对应函数的 入参、出参函数 ③ 重放对应的函数执行 ④ 查询对应程序占用结构&#xff0c;比如 cpu, jvm ⑤ 查询对应的 执行最频繁的 线程 ⑥ 打印函数…

开源软件license介绍与检测

开源License介绍 通俗来讲&#xff0c;开源许可证就是一种允许软件使用者在一定条件内按照需要自由使用和修改软件及其源代码的的法律条款。借此条款&#xff0c;软件作者可以将这些权利许可给使用者&#xff0c;并告知使用限制。这些许可条款可以由个人、商业公司或非赢利组织…

华为攻击防范简介

定义 攻击防范是一种重要的网络安全特性。它通过分析上送CPU处理的报文的内容和行为&#xff0c;判断报文是否具有攻击特性&#xff0c;并配置对具有攻击特性的报文执行一定的防范措施。 攻击防范主要分为畸形报文攻击防范、分片报文攻击防范和泛洪攻击防范。 目的 目前&…

Opencv框选黑色字体进行替换(涉及知识点:selectROI,在控制台输入字体大小,颜色,内容替换所选择的区域)

import cv2 from PIL import Image,ImageDraw,ImageFont import numpy as npimg_path ../img/ img_clean_path ../img_clean/ name xiao_ben suf .pngimg cv2.imread(img_pathnamesuf) cv2.imshow(original, img)# 选择ROI roi cv2.selectROI(windowName"original&q…

SpringAMQP入门案例——接收消息

依赖 <!--SpringAMQP起步依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> yml配置文件 自行修改 spring:rabbitmq:host: 192.168.220.130 # …

团队怎么高效制作问卷?

制作调查问卷时并不是一个人就能单独完成&#xff0c;通常情况下&#xff0c;完成一份调查问卷往往需要一个团队的成员参与&#xff0c;相互协作&#xff0c;共同完成。不过&#xff0c;多人协作经常会遇到协作壁垒&#xff0c;导致效率低下&#xff0c;那团队怎么才能高效协作…

IntelliJ IDEA 之初体验(上)

IntelliJ IDEA 是一款由 JetBrains 公司开发的强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专注于 Java 开发&#xff0c;同时支持多种其他编程语言。本文将详细介绍 IntelliJ IDEA 的安装过程以及一些常用的基本操作。 第一步&#xff1a;下载与安装 IntelliJ…

C/C++,树算法——Ukkonen的“后缀树“构造算法的源程序

1 文本格式 // A C program to implement Ukkonens Suffix Tree Construction // And then build generalized suffix tree #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_CHAR 256 struct SuffixTreeNode { struct Suffix…

C 语言实现TCP 通信,以及地址复用

服务端 #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #include <arpa/inet.h>int main() {//监听套接字文件描述符int listenFd -1;//连接套接字的文件描述符int connFd -1;//服务器的地址结构st…

c语言-联合体和枚举

文章目录 一、联合体1. 联合体类型的声明和创建2. 联合体的特点3. 联合体大小的计算4.总结 二、枚举1. 枚举类型的声明2. 枚举类型的优点3. 枚举类型的使用 一、联合体 &#xff08;1&#xff09; 像结构体⼀样&#xff0c;联合体也是由一个或者多个成员构成&#xff0c;这些成…

GEE:使用Roberts算子卷积核进行图像卷积操作

作者:CSDN @ _养乐多_ 本文将深入探讨边缘检测中的一个经典算法,即Roberts算子卷积。我们将介绍该算法的基本原理,并演示如何在Google Earth Engine中应用Roberts算子进行图像卷积操作。并以试验区NDVI为例子,研究区真彩色影像、NDVI图像以及卷积结果如下所示, 文章目录 …

LeetCode刷题---路径问题

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、不同路径 题目链接&#xff1a;不同路径 题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记…

Python---练习:列表赋值---追加append尾部追加元素,追加的是一个元素整体

相关链接&#xff1a; Python--列表及其应用场景---增、删、改、查。-CSDN博客 代码&#xff1a; # 列表赋值 a [1, 2, 3] a.append([3, 4]) # append尾部追加元素&#xff0c;追加的是一个元素整体&#xff1a;[3, 4] print(a)

面试题:为什么 wait/notify 必须与 synchronized 一起使用??

文章目录 为什么 java wait/notify 必须与 synchronized 一起使用synchronized是什么synchronized如何实现锁wait/notify不用synchronized 会怎么样[最终形态] 把lock和obj合一lost wake up 为什么 java wait/notify 必须与 synchronized 一起使用 这个问题就是书本上没怎么讲…

理解宏任务和微任务:JavaScript 异步编程的必备知识(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

教你5步学会用Llama2:我见过最简单的大模型教学

在这篇博客中&#xff0c;Meta 探讨了使用 Llama 2 的五个步骤&#xff0c;以便使用者在自己的项目中充分利用 Llama 2 的优势。同时详细介绍 Llama 2 的关键概念、设置方法、可用资源&#xff0c;并提供一步步设置和运行 Llama 2 的流程。 Meta 开源的 Llama 2 包括模型权重和…

Java开发项目之KTV点歌系统设计和实现

项目介绍 本系统实现KTV点歌管理的信息化&#xff0c;可以方便管理员进行更加方便快捷的管理。系统的主要使用者分为管理员和普通用户。 管理员功能模块&#xff1a; 个人中心、用户管理、歌曲库管理、歌曲类型管理、点歌信息管理。 普通用户功能模块&#xff1a; 个人中心…

一、CSharp_Basic:什么是.Net平台?什么是.Net FrameWork?什么是C#?

什么是.Net平台&#xff1f; 在了解C#之前&#xff0c;我们应该先了解一下什么是.Net平台。 .Net的诞生 2000年&#xff0c;这时候的微软凭借其Windows操作系统庞大的用户基数&#xff0c;推出了.Net1.0的标准。 也就是实现在Windows平台上面开发和应用程序的概念。我们可以简…