百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

linux防火墙过滤技术iptables的原理及操作命令详解

nanshan 2025-03-19 14:56 10 浏览 0 评论


iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"中,这个"安全框架"才是真正的防火墙,这个框架的名字叫netfilter。

Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能:网络地址转换(Network Address Translate),数据包内容修改以及数据包过滤的防火墙功能!

iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架!

netfilter/iptables(下文中简称为iptables)组成Linux平台下的包过滤防火墙,一般Linux系统是默认自带启动的。

查看是否启动:sysctl -p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载!

iptables是按照规则来办事的,我们就来说说规则(rules),规则其实就是网络管理员预定义的条件,规则一般的定义为"如果数据包头符合这样的条件,就这样处理这个数据包"。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。

iptables传输数据包的过程

当我们启用了防火墙功能时,报文需要经过如下关卡,而这些关卡在iptables中不被称为"关卡",而被称为"链"。也就是说,根据实际情况的不同,报文经过"链"可能不同。

所以,根据上图,我们能够想象出某些常用场景中,报文的流向:

到本机某进程的报文:PREROUTING --> INPUT

由本机转发的报文:PREROUTING --> FORWARD --> POSTROUTING

由本机的某进程发出报文(通常为响应报文):OUTPUT --> POSTROUTING

链(chains)

我们知道,防火墙的作用就在于对经过的报文匹配"规则",然后执行对应的"动作",所以,当报文经过这些关卡的时候,则必须匹配这个关卡上的规则,但是,这个关卡上可能不止有一条规则,而是有很多条规则,当我们把这些规则串到一个链条上的时候,就形成了"链",每个经过这个"关卡"的报文,都要将这条"链"上的所有规则匹配一遍,如果有符合条件的规则,则执行规则对应的动作。

5种链

5种链的说明如下:

PREROUTING:数据包进入路由表之前
INPUT:通过路由表后目的地为本机
FORWARDING:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外转发
POSTROUTHING:发送到网卡接口之前

表(tables)

每个"链"上都放置了一串规则,但是这些规则有些很相似,我们把实现相同功能的规则放在一起;我们把具有相同功能的规则的集合叫做"表",所以说,不同功能的规则,我们可以放置在不同的表中进行管理。

iptables已经为我们定义了4个表: filter表、nat表、mangle表和raw表:每个表对应了不同的功能,而我们定义的规则也都逃脱不了这4种功能的范围。

filter表:负责过滤功能,防火墙; 内核模块:iptables_filter

nat表:network address translation,网络地址转换功能; 内核模块:iptable_nat

mangle表:拆解报文,做出修改,并重新封装的功能; 内核模块: iptable_mangle

raw表:关闭nat表上启用的连接追踪机制; 内核模块:iptable_raw

表链关系

某些"链"中注定不会包含"某类规则",让我们看看每个"链"上的规则都存在于哪些"表"中:

PREROUTING链 的规则可以存在于:raw表,mangle表,nat表。
INPUT 链的规则可以存在于:mangle表,filter表,(centos7中还有nat表,centos6中没有)。
FORWARD链 的规则可以存在于:mangle表,filter表。
OUTPUT链 的规则可以存在于:raw表,mangle表,nat表,filter表。
POSTOUTING链 的规则可以存在于:mangle表,nat表。

但是,我们在实际的使用过程中,往往是通过"表"作为操作入口,对规则进行定义的,之所以按照上述过程介绍iptables,是因为从"关卡"的角度更容易从入门的角度理解,但是为了以便在实际使用的时候,更加顺畅的理解它们,我们还要将各"表"与"链"的关系罗列出来:

表(功能)<--> 链(钩子):
filter表<-->三个链:INPUT、FORWARD、OUTPUT
作用:过滤数据包 内核模块:iptables_filter.

Nat表<-->三个链:PREROUTING、POSTROUTING、OUTPUT
作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat

Mangle表<-->五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块

Raw表<-->两个链:OUTPUT、PREROUTING
作用:决定数据包是否被状态跟踪机制处理

iptables为我们定义了4张"表",当他们处于同一条"链"时,执行的优先级如下

优先级次序(由高而低):raw --> mangle --> nat --> filter

优先级次序(由高而低):raw --> mangle --> nat --> filter

iptables操作

查看filter的详细规则:filter表<-->三个链:INPUT、FORWARD、OUTPUT

————————————————

[root@xing Desktop]# iptables -t filter -nvL

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

注:OUTPUT 出站链

pkts bytes target prot opt in out source destination

0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED(三次握手状态)

0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0

0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0

0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22(目标端口22)

2 318 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited(默认拒绝所有

———————

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

注:FORWARD转发规则链(当源IP地址以及目标IP地址都不是本机的时候使用的规则)

pkts bytes target prot opt in out source destination

0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

———————

Chain OUTPUT (policy ACCEPT 4 packets, 240 bytes)

注:OUTPUT 出站链

pkts bytes target prot opt in out source destination

————————————————

iptables的基本语法格式

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

iptables 【-t filter】 -I 【INPUT】 【-p tcp --dport 80】 【-j ACCEPT】

命令选项:

————

添加新的规则

  • -A 在链的末尾追加一条规则
  • -I 在链的开头(或指定序号)插入一条规则

————

查看规则列表

  • -L 列出所有规则条目
  • -n 数字的形式显示地址、端口信息
  • -v 以更详细的方式显示规则信息
  • --line-number 查看规则时,显示规则的序号

[root@xing Desktop]# iptables -t filter -nvL --line-number

————

删除、清空规则

  • -D 删除链内指定序号(或内容)的一条规则
  • -F 清空所有的规则

[root@xing Desktop]# iptables -D FORWARD 2

[root@xing Desktop]# iptables -F(清空所有规则)

[root@xing Desktop]# service iptables restart

iptables: Setting chains to policy ACCEPT: filter [ OK ]

iptables: Flushing firewall rules: [ OK ]

iptables: Unloading modules: [ OK ]

iptables: Applying firewall rules: [ OK ]

————

设置默认策略

-P :设置默认策略的(默认策略一般只有两种。默认是关的/默认是开的)

iptables -P INPUT (DROP|ACCEPT)

[root@xing Desktop]# iptables -P FORWARD DROP

———————

控制类型

ACCEPT 允许通过

DOROP 直接丢弃,不给出任何提示

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

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

———————

匹配条件【参数】

通用匹配:

协议匹配 -p [协议名]

地址匹配 -s [源地址] -d [目的地址]

接口匹配 -i [入站网卡] 、-o [出站网卡]

隐含匹配(需配合通用匹配一起使用):

端口匹配 --sport [源端口]、--dport [目的端口]

TCP标记端口 --tcp-flags [检查范围] [被设置的标记]

ICMP类型匹配 --icmp-type [ICMP类型]

常见的显示匹配条件

多端口匹配 -m multiport -- sport [源端口列表]、-m multiport -- sport [目的端口列表]

IP范围匹配 -m iprange --src-range [IP范围]

MAC地址匹配 -m mac --mac-source [MAC地址]

———————

注意事项:

不指定表名时,默认指向filter表

不指定链名时,默认表内所有链

除非设置链的默认策略,否则必须指定匹配条件

选项、链名、控制类型使用大写字母,其余均为小写

————————————————

[root@xing Desktop]# iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT

注:命令严格区分大小写

———————

辅助命令:watch(可以帮你监测一个命令的运行结果)

格式:watch (选项) (参数)

选项

-n:指定指令执行的间隔时间(秒);

-d:高亮显示指令输出信息不同之处;

-t:不显示标题。

参数

指令:需要周期性执行的指令。

watch -n1 iptables -t filter -nvL

————————————————

规则备份与还原

iptables-save工具:可结合重定向输出保存到指定文件

将当前状态保存到一个桌面的文件中

[root@xing Desktop]# iptables-save > /root/Desktop/ipt.txt

将备份规则文件导入:

[root@xing Desktop]# iptables-restore < /root/Desktop/ipt.txt

将当前状态保存为默认规则

[root@xing Desktop]# service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

恢复到默认规则

[root@xing Desktop]# service iptables restart

iptables: Setting chains to policy ACCEPT: filter [ OK ]

iptables: Flushing firewall rules: [ OK ]

iptables: Unloading modules: [ OK ]

iptables: Applying firewall rules: [ OK ]

————————————————

[root@xing Desktop]# iptables -t nat -nvL --line-number

[root@xing Desktop]# iptables -t nat -A POSTROUTING -p tcp -o eth1 -s 172.168.1.0/24 -j SNAT --to-source 12.34.56.89

[root@xing Desktop]# iptables -t nat -A POSTROUTING -p tcp -o eth1 -s 172.168.1.0/24 -j MASQUERADE

相关推荐

小白初学linux之无法修改系统分辨率

/*此文是做为自己的一个总结还有就是最好也可以给大家提供一些帮助。*/时间:2020年7月14日11:28:41我安装的是Ubuntu20.04LTS,昨天处理的是,grub的引导问题,因为是...

Ubuntu 如何启动、停止或重启服务

在本文中,我们向您介绍在Ubuntu中启动、停止和重启服务的方法。列出Ubuntu中的所有服务在开始之前,先获取计算机上所有服务的列表,因为我们需要知道服务名称来管理服务。service--...

Win11学院:如何在Windows 11上使用WSL安装Ubuntu

IT之家2月18日消息,科技媒体pureinfotech昨日(2月17日)发布博文,介绍了3中简便的方法,让你轻松在Windows11系统中,使用WindowsSubs...

Linux安装中文输入法-Google拼音输入法,搜狗输入法

主要步骤,选择适合自己的尝试:1)卸载之前没装好的搜狗输入法。@:~/Downloads$sudoapt-getremovefcitx*删除依赖库@:~/Downloads$sudoap...

Ubuntu 22.04 请谨慎使用搜狗输入法,可能是你当机原因

在Ubunutu下没有什么有名的输入法,也就听说搜狗输入法有Linux版本,所以特意到官网去找了下载。在Ubuntu新版本里,他仍然用的是fcitx框架的输入引擎,而不是默认的ibus,所以要先把i...

前钢后胶!徐工XMR403VT小型压路机有点意思

【第一工程机械网原创】在越来越注重施工品质,对项目管理越来越精细化的今天,施工方在施工设备选择上,也越来越讲究设备的配套分工,因此小型压路机的应用场景也越来越多。徐工XMR403VT小型压路机高度集...

图大明白 | 404错误为什么是Not Found?为什么是404?

“404错误”大家都不陌生吧?常规来讲它长这样或者长这样艺术一点的长这样404NotFound意思就是所请求的页面不存在或者已被删除被称为“互联网最后一个界面”有很多同学发出疑问:为什么是404?...

Nginx负载均衡安全配置说明2(nginx负载均衡部署)

上一节,我们对Nginx安全配置的几个知识点做了一个说明,例如限制IP访问、文件目录禁止访问限制、需要防止DOS攻击、请求方法的限制和限制文件上传的大小这个进行了一个分析说明,详细的文章请关注我的头条...

惊艳写真系列第403期,本期主人公—叶青

惊艳写真系列第403期,本期主人公—叶青制作不易,欢迎各位看官提供宝贵意见。如果您喜欢记得关注,么么哒。您的每一份点赞和关注都是对作者的最大认可(图片素材均来源于网络,如有侵权联系删除。)本篇是写惊艳...

先秦布币之尖足布、圆足布、方足布,今年圆足最高拍卖价16万一枚

在战国魏、韩地区诞生桥足平首布、锐角平首布之后,赵也诞生了尖足平首布,并且在尖足布的基础上,后来相继派生出了圆足布、三孔布,以及类圆足布和类方足布。一尖足布尖足布是从耸肩尖足空首布演变而来的,是黄河...

403 禁止访问错误的全面排查与解决方案

当遇到403Forbidden错误时,意味着服务器已接收并理解请求,但拒绝执行访问操作。以下从用户端、服务器端等多个维度,提供分步排查与解决方法。一、用户端基础排查1.检查URL准确性确认...

这才是2019年夏最高颜值的泳装(2019夏季泳装秀)

最近的天气是越来越热了,又到了暑期泳衣勇闯海滩的时刻了,打开ins,微博满满地都是各大博主晒的泳装照,明星们也纷纷跑到海边去度假了。虽然我们没有超模般地身材,但是到了海边我们也要成为人群中最亮眼的那颗...

朋友圈爆火!这组《衡中班主任的一天》漫画,感动了无数人!

很多人觉得做老师很轻松他们说有些老师一天一节课就下班了有双休,还有寒暑假,真让人羡慕呀······但事实真是这样吗?最近衡水中学的赵心扬同学画了一组漫画形象地还原了衡中班主任一天的生活那么衡中班主任一...

国家安全教育 | 一组漫画,带你走进国家安全!

当前,我国面临哪些安全威胁?下面带你来看一组漫画!①你要配合,注意保密。我绝不对别人讲。②这件事,千万别对别人讲。③咱单位的…喂!老k!你要当心,有风声了!④你的泄密行为已触犯了国家法律!①请你协助了...

400、403、404、405,访问网页时出现这些代码是什么意思?

今天小泽访问一个页面时,出现了403,很抱歉,您的访问请求被禁止的提示。相信经常用电脑访问网页的朋友都遇到过这种情况,有的网页提示错误代码403,有的提示404,那这些代码都代表了什么呢?有什么含义呢...

取消回复欢迎 发表评论: