防火墙(一)

news2024/11/17 17:40:39

防火墙知识

  • 一、iptables概述
  • 二、四表五链
    • 四表
    • 五链
    • iptables防火墙的使用方法
  • 三、示例操作
  • 四、规则的匹配
    • 通用匹配:
    • 隐含匹配:
    • 端口匹配: --sport源端口、--dport目的端口
    • TCP标志位匹配:
    • ICMP类型匹配:
    • 显示匹配:
    • IP范围匹配:
    • MAC地址匹配
    • 状态匹配

一、iptables概述

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

netfilter/iptables关系:
netfilter:属于“内态核”(Kernel Space,又称为内核空间)的防火墙功能体系。
是内核的一部分,由一些数据包过滤表组成,这些表包含内核用来控制数据包过滤处理的规则集。

iptables:属于“用户态”(User Space,又称为用户空间)的防火墙管理体系。
是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/intables文件下。

二、四表五链

规则表的作用:容纳各种规则链
规则链的作用:容纳各种防火墙规则
总结:表里有链,链例有规则。

四表

raw表:确定是否对该数据包进行状态跟踪。包含两个规则链:OUTPUT、PREROUTING
mangle表:修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING
nat表:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链:OUTPUT、PREROUTING、POSTROUTING
filter表:负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链:INPUT、OUTPUT、FORWARD

在Iptables的四个规则表中,mangle表和raw表的应用相对较少。

五链

INPUT:处理入站数据包,匹配目标IP为本机的数据包。
OUTPUT:处理出战数据包,一般不在此链上做配置。
FORWARD:处理转发数据包,匹配流经本机的数据包。
PREROUTING:在进行路由器选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上。
POSTROUTING:在进行路由器选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。

数据包到达防火墙时,规则表之间的优先顺序:
raw > mangle > nat > filter
在这里插入图片描述
规则链之间的匹配顺序:
主机型防火墙:
入站数据(来自外界的数据包,且目标地址是防火墙本机):PREROUTING–>INPUT–>本机的应用程序
出站数据(从防火墙本机向外部地址发送的数据包):PREROUTING–>FORWARD–>POSTROUTING

规则链内的匹配顺序:
自上而下按顺序依次进行检查,找到相匹配的规则即停止(LOG策略例外,表示记录相关日志)
若在该链内找不到相匹配的规则,则按该链的默认策略处理(未修改的状况下,默认策略为允许)

iptables的安装
centos7默认使用firewalld防火墙,没有安装iptables,若想要使用iptables防火墙。
安装前必须先关闭防火墙,再进行安装iptables
在这里插入图片描述

下载完之后记得开启服务

iptables防火墙的使用方法

使用iptables命令行
命令格式为:
iptables -t规则表名(不使用-t默认filter表)管理选项 链名 匹配条件 -j 控制类型

注意事项:
不指定表名时,默认指定filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
控制类型和链名使用大写字母,其余均为小写

常用的控制类型:

ACCEPT:允许数据包通过
DROP:直接丢弃数据包,不给出任何回应信息
REJECT:拒绝数据包通过,会给数据发送端一个相应信息
SNAT:修改数据包的源地址
DNAT:修改数据包的目的地址
MASQUERADE:伪装成一个非固定公网IP地址
LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。LOG只是一种辅助动作,并没有真正处理数据包。

常用的管理选项:

-A:在指定链的末尾追加(--append)一条新的规则
-I:在指定链的开头插入(--insert)一条新的规则,未指定序号时默认作为第一条规则
-R:修改、替换(--replace)指定链中的某一条规则,可指定规则序号或具体内容
-P:设置指定链的默认策略(--policy)
-D:删除(--delete)指定链中的某一条规则,可指定规则序号或具体内容
-F:清空(--flush)指定链中的所有规则,若未指定链名,则清空列表中的所有链
-L:列出(--list)指定链中的所有规则,若未指定链名,则列出表中的所有链
-n:使用数字形式(--numeric)显示出输出结果,如显示IP地址而不是主机名
-v:显示详细信息,包括每条规则的匹配包数量和匹配字节数
--line-numbers:查看规则时,显示规则的序号

三、示例操作

添加新的规则
在这里插入图片描述
在这里插入图片描述
还可以使用
在这里插入图片描述
在这里插入图片描述
查看规则列表:
intables [-t 表名](不写默认filter)-n -L [–line-numbers](不指定默认显示所有)
可以写成intables -nL
但是不可以写成intables -Ln

设置默认策略:

iptables [-t](表面) -P 链名 控制类型
在这里插入图片描述
一般在生产环境中设置网络型防火墙、主机型防火墙时都要设置默认规则为DROP,并设置白名单

删除规则:格式:
iptables -D INPUT 2
删除之前
在这里插入图片描述
在这里插入图片描述
注意:
1.若规则列表中有多条相同的规则时,按内容匹配只删除的序号最小的一条
2.按号码匹配删除时,确保规则号码小于等于已有规则数,否则报错
3.按内容匹配删除时,确保规则存在,否则报错

清空规则:格式:
iptables [-t 表名] -F [链名]
在这里插入图片描述
什么都不指定就会清空所有的规则

注意:
1.-F仅仅是清空链中的规则,并不影响-P设置的默认规则,默认规则需要手动进行修改
2-P设置了DROP后,使用-F一定要小心
防止把允许远程连接的相关规则清除后导致无法远程连接主机,此清空如果没有报错规则可重启主机解决
3.如果不写表名和链名,默认清空filter表中所有链里的所有规则

四、规则的匹配

通用匹配:

可直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件

协议匹配:-p 协议名
地址匹配:-s 源地址 -d目的地址 #可以是IP、网段、域名、空(任何地址)
接口匹配:-i 入站网卡、-o 出站网卡

在这里插入图片描述

隐含匹配:

要求以特定的协议匹配为前提,包括端口、TCP标记、ICMP类型等条件

端口匹配: --sport源端口、–dport目的端口

#可以是个别端口、端口范围
–sport 1000 匹配源端口是1000的数据包
–sport 1000:3000 匹配源端口是1000-3000的数据包
–sport :3000 匹配源端口是3000及以下的数据包
–sport 1000:匹配源端口是1000及以上的数据包
注意:–sport和–dport必须配合-p <协议类型>使用

在这里插入图片描述
也可以指定IP地址
在这里插入图片描述

TCP标志位匹配:

格式为:
iptables 在处理入站(出站)数据包添加规则 指定协议和端口号 指定协议的步骤

TCP三次握手时的第一次握手放行SYN为1数据报文,拒绝其他包;第二次握手放行SYN,ACK为1数据报文,拒绝其他包
在这里插入图片描述

ICMP类型匹配:

–icmp-type ICMP类型
#可以是字符串、数字代码
“Echo-Request”(代码为8)表示请求
“Echo-Reply”(代码为0)表示回显
“Destination-Unreachable”(代码为3)表示目的不可达
关于其他可用的ICMP协议类型,可用执行“iptables -p icmp -h”命令,查看帮助信息

在这里插入图片描述
在这里插入图片描述
-0允许本机连接其他主机或者其他主机连接本主机
在这里插入图片描述
#此时其他主机需要配置关于icmp协议的控制类型为REJECT

显示匹配:

要求以“-m 扩展模块”的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件
多端口匹配:
-m multiport --sport 源端口列表
-m muliport --dport 目的端口列表
比如:
在这里插入图片描述
之前介绍过从xx端口到xx端口或者指定xx端口的数据包通过,但是无法随意选择,而这个命令可以选择不连续,多个端口

还可以指定IP

IP范围匹配:

-m iprange -src-range IP范围
在这里插入图片描述

MAC地址匹配

-m mac --mac-source MAC地址
#禁止来自某MAC地址的数据包通过本机转发

状态匹配

-m state --state 连接状态
常见的连接状态:

NEW:主机连接目标主机,在目标主机上看到的第一个想要连接的包
ESTABLISHED:主机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就进入该状态
RELATED:主机已与目标主机通信,目标主机发起新的链接方式,一般与ESTABLISHED配合使用
INVALID:无效的封包,例如数据破损的封包状态

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

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

相关文章

Windows 安装MySQL 8.0 超详细教程(mysql 8.0.30)

目录 一、删除以前安装的MySQL服务 1、查找以前是否装有mysql 2、删除mysql &#xff08;1&#xff09;停止mysql服务&#xff1a; &#xff08;2&#xff09;删除mysql服务&#xff1a; 3.检查mysql是否已删除 二、下载mysql二进制包 三、解压二进制包&#xff0c;编辑…

一图看懂 setuptools 模块:一个功能齐全、积极维护且稳定的库,旨在方便打包Python项目,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 setuptools 模块&#xff1a;一个功能齐全、积极维护且稳定的库&#xff0c;旨在方便打包Python项目&#xff0c;资料整理笔记&#xff08;大全&#xff09; &#x1f9ca;…

第一个 Rust 程序

目录 必要知识代码示例 Cargo 教程[Rust 输出到命令行](https://www.runoob.com/rust/rust-println.html)资料 必要知识 Rust 语言代码文件后缀名为 .rs 使用 rustc 命令编译 .rs 文件 rustc runoob.rs # 编译 runoob.rs 文件编译后会生成 可执行文件 例如&#xff1a; …

『python爬虫』26. selenium与超级鹰处理复杂验证码的处理(保姆级图文)

目录 1. 图片选择类验证码2. 滑块验证码3. 滑块出错&#xff0c;不加载总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 1. 图片选择类验证码 我们这里查看超级鹰文档 图片验证码返回的是一个 dic 结构为 x1,y1…

【SAM系列】An Alternative to WSSS? An Empirical Study of SAM on WSSS Problems

论文链接&#xff1a;https://arxiv.org/pdf/2305.01586.pdf 论文代码&#xff1a;暂无 目的 WSSS旨在弱标签的情况下&#xff0c;生成高质量的分割伪标签&#xff0c;然后用于全监督的语义分割训练。本文探索用SAM来生成伪标签来替代WSSS方案。 为什么不直接用SAM分割而利用…

《面试1v1》synchronized

源码都背下来了&#xff0c;你给我看这 我是 javapub&#xff0c;一名 Markdown 程序员从&#x1f468;‍&#x1f4bb;&#xff0c;八股文种子选手。 面试官&#xff1a; 你好&#xff0c;我看到你的简历上写着你熟悉 Java 中的 “synchronized” 关键字。你能给我讲讲它的作…

chatgpt赋能Python-python3反转字符串

Python3反转字符串技巧&#xff1a;让你的代码更高效&#xff01; 你是否曾经在编程时需要对字符串进行反转&#xff0c;但却不知从何入手&#xff1f;Python3提供了简单易用的方法&#xff0c;帮助你更快地反转字符串。本文将介绍Python3中字符串反转的方法以及如何在代码中利…

chatgpt赋能Python-python3如何安装numpy

如何安装numpy&#xff1f; 介绍 在Python编程中&#xff0c;NumPy是使用最广泛的库之一。NumPy是数学和科学计算中的核心模块&#xff0c;主要用于处理数字数据&#xff0c;包括数组计算、线性代数、傅里叶变换、随机数生成等任务。在Python编程中&#xff0c;使用NumPy可以…

chatgpt赋能Python-python3小游戏

Python3小游戏&#xff1a;为你的休闲时光增添乐趣 如果你正处于寻找一款简单好玩的小游戏&#xff0c;那么Python3小游戏将是你的不二之选。作为一名有10年Python编程经验的工程师&#xff0c;我可以说Python3小游戏是一款非常有趣、挑战性适中、易于上手的游戏。接下来&…

工作流 jbpm(图文并茂)

文章目录 1 工作流概述2 jBPM概述3 jBPM开发环境搭建及其配置3.1 准备工作3.2 搭建jBPM开发环境3.3 加入jar包 4 系统数据库表介绍4.1 建表4.2 数据库逻辑关系4.2.1 资源库与运行时的表4.2.2 历史数据表 4.3 表结构4.4 流程操作与数表交互说明 5 相关概念6 流程图说明6.0 快速上…

【学习笔记】Rider调试unity【 联调、断点调试等】(决定弃用vscode了)

目录 一 弃用vscode原委二 Rider调试Unity2.1 启动调试2.2 pausepoint 暂停点2.2.1 使用pausepoint2.2.2 pausepoint&#xfeff;与breakpoint的区别 2.3 不同run configuration区别 三 Rider编辑3.1 补充 四 总结 转载请注明出处&#xff1a;&#x1f517;https://blog.csdn.n…

头歌计算机组成原理实验—运算器设计(4)第4关:16位快速加法器设计

第4关&#xff1a;16位快速加法器设计 实验目的 帮助学生理解成组进位产生函数&#xff0c;成组进位传递函数的概念&#xff0c;熟悉 Logisim 平台子电路的概念&#xff0c;能利用前述实验封装好的4位先行进位子电路以及4位快速加法器子电路构建16位、32位、64位快速加法器&a…

Android 12.0 原生SystemUI下拉通知栏UI背景设置为圆角背景的定制(一)

1.前言 在12.0的系统rom定制化开发中,在原生系统SystemUI下拉状态栏的通知栏的背景是白色四角的背景,由于在产品设计中,需要把四角背景默认改成圆角背景,所以就需要分析系统原生下拉通知栏的每条通知的默认背景,然后通过systemui的通知流程,设置默认下拉状态栏UI中的通知…

java+nodejs+vue+python+php家教信息管理系统

任何网友都可以自由地查看、搜索、发布该家教信息平台的信息。该平台是区别于传统的家教中介的服务平台。学生可以免费查看网站上的家教信息&#xff0c;挑选适合自己的家教&#xff1b;教师可以免费查看网站上的需求信息&#xff0c;挑选适合自己的学生&#xff1b;学生可以发…

chatgpt赋能Python-python3安装scrapy

Python3安装Scrapy&#xff1a;提高爬虫效率的关键 如果你正在从事数据科学、数据分析工作&#xff0c;或者需要收集并存储某些特定网站的数据&#xff0c;Scrapy是一个值得尝试的Python3框架。Scrapy是一个开源的Web爬虫框架&#xff0c;可以方便、高效、快速地对数据进行收集…

Rust每日一练(Leetday0005) 罗马数字、公共前缀、三数之和

目录 13. 罗马数字转整数 Roman to Integer &#x1f31f; 14. 最长公共前缀 Longest Common Prefix &#x1f31f; 15. 三数之和 3Sum &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日…

Qt/QML编程学习之心得:颜色编码方案RGB+YUV+HSI等(八)

说到Human-Machine Interaction 人机交互界面或者说GUI,那么第一反映可能是窗口、各种控件、各种图片,但是所有这些都还需要一个更底层的内容,那就颜色。不管是窗口还是控件,颜色是其最基本的一个属性。 牛顿三棱镜色散实验,发现光的色彩奥妙:当一束白光通过三棱镜时,它…

chatgpt赋能Python-python3控制摄像头拍照

Python3 控制摄像头拍照 介绍 Python3 是一种高级编程语言&#xff0c;被广泛应用于机器学习、人工智能、Web 开发等领域。控制摄像头拍照是 Python3 中非常常见的需求&#xff0c;例如监控、照片拍摄等等。 如何控制摄像头拍照 在 Python3 中&#xff0c;我们可以利用 Ope…

【高效科研工具(一):chatGPT(各种高效网站大集合)】

高效科研工具&#xff08;一&#xff09;&#xff1a;chatGPT&#xff08;各种高效网站大集合&#xff09; 目录 0、前言 1、chatGPT介绍 2、chatGPT官网 3、各种衍生网站&#xff08;&#x1f929;&#x1f929;&#x1f929;&#x1f929;重头戏&#xff01;&#xff01;&a…

插入排序、选择排序、冒泡排序小结(45)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 和猫妹学Python&#xff0c;一起趣味学编程。 今日主题 插入排序、选择排序、冒泡排序有什么区别&#xff1f; 原理不同 插入排序是将未排序的元素逐个插入到已排序序列中…