作者:柒捌玖指向标 | 来源:互联网 | 2023-09-15 16:27
Iptables介绍iptables是Linux防火墙系统的重要组成部分,iptables的主要功能是实现对网络数据包进出设备及转发的控制。当数据包需要进入设备、从设备中流出或者由
Iptables介绍
iptables 是 Linux 防火墙系统的重要组成部分,iptables 的主要功能是实现对网络数据包进出设备及转发的控制。当数据包需要进入设备、从设备中流出或者由该设备转发、路由时,都可以使用 iptables 进行控制。
链
iptables 在普遍的应用场景中被用作配置防火墙,如果我们想要防火墙能够达到”防火”的目的,则需要在内核中设置关卡,所有进出的报文都要通过这些关卡,经过检查后,符合放行条件的才能放行,符合阻拦条件的则需要被阻止,于是,就出现了 input 关卡和 output 关卡,但是,这个关卡上可能不止有一条规则,而是有很多条规则,当我们把这些规则串到一个链条上的时候,就形成了”链”。
一共有五条链:
- PREROUTING:路由前过滤, 数据包刚进入网络层 , 路由之前
- INPUT:** 入站数据过滤**,路由判断,流入用户空间
- OUTPUT:出站数据过滤,用户空间发出,后接路由判断出口的网络接口
- FORWARD:转发数据过滤, 路由判断不进入用户空间,只进行转发
- POSTROUTING:路由后过滤, 数据包通过网络接口出去。
常见的数据的流向:
- 到本机某进程的报文:PREROUTING –> INPUT
- 由本机转发的报文:PREROUTING –> FORWARD –> POSTROUTING
- 由本机的某进程发出报文(通常为响应报文):OUTPUT –> POSTROUTING
表
“四表”是指 iptables 的功能,默认的 iptable s规则表有 filter 表(过滤规则表)、nat 表(地址转换规则表)、mangle(修改数据标记位规则表)、raw(跟踪数据表规则表):
- filter 表:负责过滤功能,防火墙;内核模块:iptables_filter
- nat 表:network address translation,网络地址转换功能;内核模块:iptable_nat
- mangle 表:拆解报文,做出修改,并重新封装 的功能;iptable_mangle
- raw 表:关闭 nat 表上启用的连接追踪机制;iptable_raw
表的优先级:
raw –> mangle –> nat –> filter
链与表的对应关系为:
规则
规则:根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理;
规则由匹配条件和处理动作组成。
匹配条件
匹配条件分为基本匹配条件与扩展匹配条件
- 基本匹配条件: 源地址 Source IP,目标地址 Destination IP 上述内容都可以作为基本匹配条件。
- 扩展匹配条件: 除了上述的条件可以用于匹配,还有很多其他的条件可以用于匹配,这些条件泛称为扩展条件,这些扩展条件其实也是 netfilter 中的一部分,只是以模块的形式存在,如果想要使用这些条件,则需要依赖对应的扩展模块。 源端口 Source Port, 目标端口 Destination Port 可以作为扩展匹配条件
iptables 语法
基本的语法格式:
iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION
各参数的含义为:
- -t:指定需要维护的防火墙规则表 filter、nat、mangle或raw。在不使用 -t 时则默认使用 filter 表。
- COMMAND:子命令,定义对规则的管理。
- chain:指明链表。
- CRETIRIA:匹配参数。
- ACTION:触发动作。
iptables 命令常用的选项
选 项 |
功 能 |
---|
-A |
添加防火墙规则 |
-D |
删除防火墙规则 |
-I |
插入防火墙规则 |
-F |
清空防火墙规则 |
-L |
列出添加防火墙规则 |
-R |
替换防火墙规则 |
-Z |
清空防火墙数据表统计信息 |
-P |
设置链默认规则 |
iptables 命令常用匹配参数
触发动作 |
功 能 |
---|
[!]-p |
匹配协议,! 表示取反 |
[!]-s |
匹配源地址 |
[!]-d |
匹配目标地址 |
[!]-i |
匹配入站网卡接口 |
[!]-o |
匹配出站网卡接口 |
[!]--sport |
匹配源端口 |
[!]--dport |
匹配目标端口 |
[!]--src-range |
匹配源地址范围 |
[!]--dst-range |
匹配目标地址范围 |
[!]--limit |
四配数据表速率 |
[!]--mac-source |
匹配源MAC地址 |
[!]--sports |
匹配源端口 |
[!]--dports |
匹配目标端口 |
[!]--stste |
匹配状态(INVALID、ESTABLISHED、NEW、RELATED) |
[!]--string |
匹配应用层字串 |
iptables 命令触发动作
触发动作 |
功 能 |
---|
ACCEPT |
允许数据包通过 |
DROP |
丢弃数据包 |
REJECT |
拒绝数据包通过 |
LOG |
将数据包信息记录 syslog 曰志 |
DNAT |
目标地址转换 |
SNAT |
源地址转换 |
MASQUERADE |
地址欺骗 |
REDIRECT |
重定向 |
内核会按照顺序依次检查 iptables 防火墙规则,如果发现有匹配的规则目录,则立刻执行相关动作,停止继续向下查找规则目录;如果所有的防火墙规则都未能匹配成功,则按照默认策略处理。使用 -A 选项添加防火墙规则会将该规则追加到整个链的最后,而使用 -I 选项添加的防火墙规则则会默认插入到链中作为第一条规则。
参考文章
- 扒一下一直不求甚解的 iptables
- Linux iptables命令详解