ipables防火墙

一、Linux防火墙基础

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

在许多安全技术资料中,netfilter iptables 都用来指 Linux 防火墙,往往使读者产生 迷惑。netfilter iptables 的主要区别如下。

netfilter:指的是 Linux 内核中实现包过滤防火墙的内部结构,不以程序或文件的形式 存在,属于“内核态Kernel Space,又称为内核空间)的防火墙功能体系。

 iptables:指的是用来管理 Linux 防火墙的命令程序,通常位于/sbin/iptables 目录下, 属于“用户态User Space,又称为用户空间)的防火墙管理体系。

二、IP tables的架构

iptables 的作用是为包过滤机制的实现提供规则(或称为策略),通过各种不同的规则,告诉 netfilter 对来自某些源、前往某些目的或具有某些协议特征的数据包应该如何处理。为了更加方便地组织和管理防火墙规则,iptables 采用了“表”的分层结构,如图示。

其中,每个规则相当于内核空间的一个容器,根据规则集的不同用途划分为默认的 四个表;在每个“容器内包括不同的规则,根据处理数据包的不同时机划分为五种链; 而决定是否过滤或处理数据包的各种规则,则是按先后顺序存放在各规则链中。

1.规则表

为了从规则集的功能上有所区别,iptables 管理着四个不同的规则表,其功能分别由独立的内核模块实现。这四个表的名称、包含的链及各自的用途如下。

filter 表:filter 表用来对数据包进行过滤,根据具体的规则要求决定如何处理一个数据 包。filter 表对应的内核模块为 iptable_filter,表内包含三个链,即 INPUTFORWARD、OUTPUT。

nat 表:natNetwork Address Translation,网络地址转换)表主要用来修改数据包的IP 地址、端口号等信息。nat 表对应的内核模块为 iptable_nat,表内包含三个链,即PREROUTING、POSTROUTINGOUTPUT

mangle 表:mangle 表用来修改数据包的 TOSType Of Service,服务类型)、TTLTimeTo Live,生存周期),或者为数据包设置 Mark 标记,以实现流量整形、策略路由等高级应用 。 mangle 表 对 应 的 内 核 模 块 为 iptable_mangle , 表 内 包 含 五 个 链 , 即PREROUTING、POSTROUTINGINPUTOUTPUTFORWARD

raw 表:raw 表是自 1.2.9 以后版本的 iptables 新增的表,主要用来决定是否对数据包进行状态跟踪。raw 表对应的内核模块为 iptable_raw,表内包含两个链,即 OUTPUT、PREROUTING。在 iptables 的四个规则表中,mangle 表和 raw 表的应用相对较少。

2.规则链

在处理各种数据包时,根据防火墙规则的不同介入时机,iptables 默认划分为五种不同的规则链。这五种链的名称、各自的介入时机如下。

INPUT 链:当收到访问防火墙本机地址的数据包(入站)时,应用此链中的规则。

OUTPUT 链:当防火墙本机向外发送数据包(出站)时,应用此链中的规则。

FORWARD 链:当接收到需要通过防火墙中转发送给其他地址的数据包(转发)时,应用此链中的规则。

PREROUTING 链:在对数据包做路由选择之前,应用此链中的规则。

POSTROUTING 链:在对数据包做路由选择之后,应用此链中的规则。

其中,INPUTOUTPUT 链主要用在主机型防火墙中,即主要针对服务器本机进行保护的防火墙;而 FORWARDPREROUTINGPOSTROUTING 链多用在网络型防火墙” 中,如使用 Linux 防火墙作为网关服务器,在公司内网与 Internet 之间进行安全控制。

3.数据包过滤匹配流程

1.规则表之间的顺序

当数据包抵达防火墙时,将依次应用 raw 表、mangle 表、nat 表和 filter 表中对应链内的规则(如果存在),应用顺序为 raw→mangle→nat→filter

2.规则链之间的顺序

根据规则链的划分原则,不同链的处理时机是比较固定的,因此规则链之间的应用顺序取决于数据包的流向,如图所示,具体表述如下。

入站数据流向:来自外界的数据包到达防火墙后,首先被 PREROUTING 链处理(是否修改数据包地址等),然后进行路由选择(判断该数据包应发往何处);如果数据包的目标地址是防火墙本机(如 Internet 用户访问网关的 Web 服务端口),那么内核将其传递给 INPUT 链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(如 httpd 服务器)进行响应。

转发数据流向:来自外界的数据包到达防火墙后,首先被 PREROUTING 链处理,然后再进行路由选择;如果数据包的目标地址是其他外部地址(如局域网用户通过网关访问 QQ 服务器),则内核将其传递给 FORWARD 链进行处理(允许转发或拦截、丢弃),最后交给 POSTROUTING 链(是否修改数据包的地址等)进行处理。

出站数据流向:防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网 DNS服务时),首先进行路由选择,确定了输出路径后,再经由 OUTPUT 链处理,最后再交给 POSTROUTING 链(是否修改数据包的地址等)进行处理。

三、编写防火墙规则

1.基本语法、数据包控制类型

[root@localhost ~]# yum install -y iptables-services

[root@localhost ~]# systemctl start iptables  

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

实例:在filter表的input链中插入一条规则,拒绝发给本机的使用ICMP协议的数据包

[root@localhost ~]# iptables -t filter -I INPUT -p icmp -j REJECT        //阻止其他pc端ping“我”

备注:

-I:插入一条规则,要指定在哪一行插入,不指定默认第一行

REJECT:拒绝

删除此规则

iptables -t filter -D INPUT -p icmp -j REJECT        //删除这条规则

-D:删除

2.添加、查看、删除规则等基本操作

1.添加新的规则

在filter表INPUT链的末尾添加一条防火墙规则

[root@localhost ~]# iptables -t filter -I INPUT -p tcp -j ACCEPT     \\允许tcp的数据包通过

 备注:

-A:在末尾追加

-I:在开头添加

ACCEPT:允许 

在filter表INPUT链的添加以下两条规则,这两条规则分别位于第一条和第二条(指定位置:-I,大写i)

[root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT      \\允许udp数据包通过,放到第一条

[root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT   \\允许icmp数据包通过,放到第二条

2.查看规则列表

查看filter表INPUT链中的所有规则,并显示规则序号(列出所有规则:-L)

[root@localhost ~]# iptables -L INPUT --line-numbers

[root@localhost ~]# iptables -L INPUT --line

以数字形式查看filter表INPUT链中的所有规则(数字形式显示:-n)

--line:显示行号

[root@localhost ~]# iptables -n -L INPUT

[root@localhost ~]# iptables -nL INPUT

[root@localhost ~]# iptables -nL INPUT -t filter --line

3.删除、清空规则

删除filter表INPUT链中的第三条规则

[root@localhost ~]# iptables -D INPUT 3

[root@localhost ~]# iptables -nL INPUT --line

清空指定链或表中的所有防火墙规则,使用管理选项“-F”

清空filter表INPUT链中所有的规则

[root@localhost ~]# iptables -F INPUT

[root@localhost ~]# iptables -nL INPUT --line

分别清空filter表,nat表,mangle表中所有链的规则

[root@localhost ~]# iptables -F        \\等同iptables -t filter -F

[root@localhost ~]# iptables -t nat -F

[root@localhost ~]# iptables -t mangle -F

4.设置默认策略(找不到匹配项时,就是用该默认规则)

[root@localhost ~]# iptables -t filter -P FORWARD DROP        \\找不到转发规则,丢弃

[root@localhost ~]# iptables -t filter -P OUTPUT ACCEPT         \\出站数据包找不到规则,允许通过

3.规则匹配条件

1.通用匹配——常规匹配(包括协议、地址、网络接口匹配),可独立使用!

(1)协议匹配

[root@localhost ~]# iptables -I INPUT -p icmp -j DROP              \\丢弃icmp包

[root@localhost ~]# iptables -A FORWARD ! -p icmp -j ACCEPT     \\允许转发除icmp之外的其他包

(2)地址匹配(源地址:-s,目标地址:-d)

[root@localhost ~]# iptables -A FORWARD -s 192.168.10.202 -j REJECT

[root@localhost ~]# iptables -A FORWARD -s 192.168.10.0 -j ACCEPT

当遇到小规模的网络攻击或扫描时,应封锁IP地址

[root@localhost ~]# iptables -I INPUT -s 10.20.30.0/24 -j DROP

[root@localhost ~]# iptables -I FORWARD -s 10.20.30.0/24 -j DROP

(3)网络接口匹配

要丢弃从外网卡接口(eth1)访问防火墙本机且源地址为私有地址的数据包

[root@localhost ~]# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

[root@localhost ~]# iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP

[root@localhost ~]# iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP

2.隐含匹配——要以协议匹配作为前提条件,不可独立使用(带有子条件)

(1)端口匹配

允许为网段192.168.4.0/24转发DNS查询数据包

[root@localhost ~]# iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT

[root@localhost ~]# iptables -A FORWARD -d 192.168.4.0/24 -p udp --dport 53 -j ACCEPT

注释:

隐含匹配需要有一个匹配的前提条件,这个前提条件就是隐含要匹配的内容。

上面案例中“ -p udp --dport”就是隐含的子条件,意思是,只匹配一个端口号还不行,还要指定这个端口号是UDP的端口号,并且是目标端口号

搭建vsftpd服务时需要开放20、21端口,以及用于被动模式的端口范围为24500-24600

[root@localhost ~]# iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT

[root@localhost ~]# iptables -A INPUT -p tcp --dport 24500:24600 -j ACCEPT

(2)ICMP类型匹配

若要禁止从其他主机ping本机,但是允许本机ping其他主机

 iptables -F 

[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 8 -j DROP

[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT

[root@localhost ~]# iptables -A INPUT -p icmp -j DROP

0 响应应答(ECHO-REPLY)(应答报文)
3 不可到达 (目标主机不可达)
4 源抑制
5 重定向
8 响应请求(ECHO-REQUEST)(请求报文)
11 超时
12 参数失灵
13 时间戳请求
14 时间戳应答
15 信息请求(*已作废)
16 信息应答(*已作废)
17 地址掩码请求
18 地址掩码应答

查看icmp协议类型的帮助信息

[root@localhost ~]# iptables -p icmp -h

3.显式匹配——要有额外的内核模块提供支持,以手动“-m 模块名称”调用相关的模块,然后在再置匹配条件,显示匹配就是需要手动指定模块的匹配方式。

(1)多端口匹配(multiport用于多端口)

允许本机开放25、80、110、143端口,以提供电子邮件服务

[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT

(2)IP范围匹配(iprange用于ip范围)

禁止转发源IP地址位于192.168.4.21-192.168.4.28之间的TCP数据包

[root@localhost ~]# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT

(3)MAC地址匹配

根据MAC地址封锁主机,禁止其访问本机的任何应用

[root@localhost ~]# iptables -A INPUT -m mac --mac-source 00:0C:29:C9:3D:F7 -j DROP

(4)状态匹配

要禁止转发与正常TCP连接无关的非"--syn"请求的数据包,如伪造的网络攻击数据包

[root@localhost ~]# iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP

只开放本机的WEB服务(80端口),但对发给本机的TCP应答数据包予以放行,其他入站数据包均丢弃,对应的入站规则为(ESTABLISHED:已建立的)

[root@localhost ~]# iptables -I INPUT -p tcp -m multiport --dport 80 -j ACCEPT

[root@localhost ~]# iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT

[root@localhost ~]# iptables -P INPUT DROP

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

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

相关文章

VB7/64位VB6开发工具office插件开发-twinbasic

全新的VB7,twinbasic,支持64位开发,支持EXCEL插件开发,老外连续3年闭关修练终成正果 官方最新版下载:https://github.com/twinbasic/twinbasic/releases 汉化工具用法:把工具和Lang_Tool目录复制到Twinbasi…

SAP PP学习笔记18 - MTO(Make-to-Order):按订单生产(受注生産) 的策略 20,50,74

前面几章讲了 MTS(Make-to-Stock)按库存生产的策略(10,11,30,40,70)。 SAP PP学习笔记14 - MTS(Make-to-Stock) 按库存生产(策略10),…

ChatTTS 开源文本转语音模型本地部署、API使用和搭建WebUI界面(建议收藏)

ChatTTS(Chat Text To Speech)是专为对话场景设计的文本生成语音(TTS)模型,特别适用于大型语言模型(LLM)助手的对话任务,以及诸如对话式音频和视频介绍等应用。它支持中文和英文,还可以穿插笑声、说话间的停顿、以及语…

计算机网络ppt和课后题总结(下)

常用端口总结 计算机网络中,端口是TCP/IP协议的一部分,用于标识运行在同一台计算机上的不同服务。端口号是一个16位的数字,范围从0到65535。通常,0到1023的端口被称为“熟知端口”或“系统端口”,它们被保留给一些标准…

基于百度接口的实时流式语音识别系统

目录 基于百度接口的实时流式语音识别系统 1. 简介 2. 需求分析 3. 系统架构 4. 模块设计 4.1 音频输入模块 4.2 WebSocket通信模块 4.3 音频处理模块 4.4 结果处理模块 5. 接口设计 5.1 WebSocket接口 5.2 音频输入接口 6. 流程图 程序说明文档 1. 安装依赖 2.…

RHEL8/Centos8 install for PXE

PXE介绍 PXE(Preboot Execution Environment)是预引导执行环境的缩写。它是由Intel设计的,允许客户端计算机通过网络从服务器上加载操作系统镜像。PXE通常用于大规模部署操作系统,例如在企业或学校环境中。 PXE工作流程如下&…

【复现】含能量路由器的交直流混合配电网潮流计算

目录 1 主要内容 2 理论及模型 3 程序结果 4 下载链接 1 主要内容 程序复现《含能量路由器的交直流混合配电网潮流计算》,主要是对算例4.1进行建模分析,理论和方法按照文献所述。能量路由器(ER)作为新兴的电力元器件&#xff…

Spring Boot通过自定义注解和Redis+Lua脚本实现接口限流

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

FuTalk设计周刊-Vol.040

🔥AI漫谈 热点捕手 1、零代码定制游戏NPC,百川智能发布角色大模型 百川智能此次推出了“角色创建平台搜索增强知识库”的定制化解决方案。通过这一方案,游戏厂商无需编写任何代码,只需通过简单的文字描述,便可以快速…

IT人的拖延——都是“分心”惹的祸?

典型表现 我们说到拖延的原因有很多,还有一个原因是因为“分心太多“造成的,分心太多的拖延大致上有以下表现: 无法集中注意力: 分心太多会导致我们无法集中注意力在当前的工作任务上,我们可能会经常性地走神或者在工…

Vue12-计算属性

一、姓名案例 1-1、插值语法实现 1、v-bind v-bind的问题: 所以:v-bind是单向绑定。 2、v-model 解决v-bind的问题。 3、输出全名 方式一: 方式二: 需求优化:全名中的姓氏,只取输入框中的前三位&#xf…

VSCode数据库插件

Visual Studio Code (VS Code) 是一个非常流行的源代码编辑器,它通过丰富的插件生态系统提供了大量的功能扩展。对于数据库操作,VS Code 提供了几种插件,其中“Database Client”系列插件是比较受欢迎的选择之一,它包括了对多种数…

使用C++结合OpenCV进行图像处理与分类

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

基于STC12C5A60S2系列1T 8051单片机实现串口调试助手软件与单片机相互发送数据的RS485通信功能

基于STC12C5A60S2系列1T 8051单片机实现串口调试助手软件与单片机相互发送数据的RS485通信功能 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机串口通信介绍STC12C5A60S2系列1T 8051单片机串口通信的结构基于STC12C5A60S2系列1T 8051单片机串口通信的特殊功…

力扣 74.搜索二维矩阵

题目描述: 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则&am…

决策树Decision Tree

目录 一、介绍发展优点缺点基本原理 二、熵1、熵2、条件熵3、信息增益4、信息增益率 三、基尼系数四、ID3算法1、建树过程2、优点3、缺点 五、C4.51、二分法处理连续变量1、流程:2、示例 2、缺点 六、CART1、连续数据处理2、离散数据处理3、CART回归原理1、均方误差…

【机器学习】机器学习引领AI:重塑人类社会的新纪元

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀机器学习引领AI 📒1. 引言📕2. 人工智能(AI)🌈人工智能的发展🌞应用领…

每日两题6

文章目录 删除并获得点数粉刷房子 删除并获得点数 分析 class Solution { public:int deleteAndEarn(vector<int>& nums) {const int N 10001;// 预处理int arr[N] {0};for (int& e : nums)arr[e] e;// 在 arr 上进行 打家劫舍 问题vector<int> f(N),…

【Python机器学习】NMF——模拟数据

与使用PCA不同&#xff0c;我们需要保证数据是正的&#xff0c;NMF能够对数据进行操作。这说明数据相对于原点(0,0)的位置实际上对NMF很重要。因此&#xff0c;可以将提取出来的非负向量看作是从(0,0)到数据的方向。 举例&#xff1a;NMF在二维玩具数据上的结果&#xff1a; …

FreeRTOS基础(十二):信号量

本篇博客&#xff0c;我们详细介绍另一个重要的应用&#xff0c;信号量。 目录 一、信号量的简介 1.0 举例理解 1.1 FreeRTOS中的应用 1.2 队列与信号量的对比 二、二值信号量 2.1 二值信号量的概念 2.2 二值信号量的API函数接口 2.2.1 使用二值信号量的过程 2.2.2 …