Linux防火墙iptables

发布于:2025-09-13 ⋅ 阅读:(16) ⋅ 点赞:(0)

目录

一,Iptables概述

二,iptables组成

1,表

2,链

3,链表对应关系

4,数据包过滤的匹配流程

5,规则匹配策略

三,iptables防火墙配置

1,iptables命令

2,常用控制类型

3,命令操作

四,规则的匹配

1,通用匹配

2,隐含匹配

3,显氏匹配


一,Iptables概述

iptables作为内核级别的防火墙,具有高效,稳定,安全的特点

iptables的表,链,规则结构非常灵活,可使用各种不同的网络环境和应用场景

iptables相对于其他防火墙工具而言比较容易学习和掌握,并且拓展性很强

二,iptables组成

iptables的核心是由表,链,规则三部分组成的

1,表

在iptables之内,表是一个规则的集合,每个表都包含一些链和对应的规则常用的有五种:

raw表:确定是否对该数据包进行数据跟踪

mangle表:更改数据包,用来做流量整形的,给数据包设置标记。包含五个规则链,INPUT,OUTPUT,FORWAR,PREROUTING,POSTROUTING

nat表:负责网络地址转换,用来更改数据包之内的源,目标IP地址和端口,包括三个规则链,OUTPUT,PREROUTING,POSTROUTING

filter表:负责过滤数据包,是否放行该数据包,包含三个规则链,INPUT,FORWARD,OUTPUT

优先级:raw>mangle>nat>filter

2,链

在iptables之内,链是一个规则的集合,每个链都包含一些有关的规则        

INPUT链:当接收到防火墙本机地址的数据包时,应用此链之内的规则

OUTPUT链:当防火墙本机向外发送数据包时,应用此链之内的规则

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

PREROUTING链:在对数据包做路由选择之前,应用此链之内的规则,用来更改目的地址

POSTROUTING链:在对数据包做路由选择之前,应用此链之内的规则,用来更改源地址

3,链表对应关系

nat表:PREROUTING链,POSTROUTING链

filter表:INPUT链,FORWARD链,OUTPUT链

4,数据包过滤的匹配流程

转发:目的地不是本机,数据包先从A网络过滤,经过PREROUTING链,看是否是自己的目的地址,如果是外网到内网需要用nat转换成内网IP,找到内网用户,经过FORWARD链进行过滤;允许放通的到达POSTROUTING链,再把内网地址转换成公网,这样数据包才能回去,内网发往外网就需要反过来

总结:当一个数据包进到网卡时,数据包首先进到PREROUTING链,内核根据数据包IP判断是否需要转送发出,要是数据包是进到本机的,数据包就会沿着图向上移动,到达INPUT链。数据包到达INPUT链之后,所有进程都会收到,本机上运行的程序可以发到数据包,这些包经过OUTPUT链,再发送出,要是数据包时需要发送的,内核还允许转发,数据包就会向右移动,经过FORWARD链,再到达到POSTROUTING链输出

5,规则匹配策略

自上而下进行顺序匹配,匹配到即停止不会再看下面的规则,再通过允许或丢掉或拒绝等规则进行数据包的处理

三,iptables防火墙配置

1,iptables命令

选项 意义
-t 指定表明
-j 指定控制类型
-A 指定链的末尾追加一条规则
-I 在指定链的开头插一条规则;未指定序号时固定作为第一条规则
-D 删除指定链之内的一条规则,可指定规则序号或具体内容
-L 列出指定链之内的所有规则;未指定链名则列出表之内的所有链
-F 删除指定链之内的所有规则;未指定链名则删除表之内的所有链
-v 输出详细信息,包括每条规则的匹配包数量和匹配字节数
--line-number 查看规则时,输出规则的行号
-p 指定要匹配的数据包的协议类型
-s 指定要匹配的数据包的源IP地址
-d 指定要匹配的数据包的目的IP地址
-i 指定数据包进到本机的网络接口
--dport 指定目的的端口号

2,常用控制类型

控制类型 作用
ACCEPT 允许数据包通过
DROP 直接丢掉数据包,不给出回应消息
REJECT 拒绝数据包通过,会给数据发送一个相应信息
SNAT 更改数据包的源地址
DNAT 更改数据包的目的地址

3,命令操作

(1),

iptables -t filter -nL --line-numbers
#以数字形式显示详细信息并显示规则序号

(2),

iptables -t filter -A INPUT -p icmp -j REJECT
#在filter表的INPUT链之内添加拒绝icmp的规则

(3),

iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
#在filter表的INPUT链的TCP协议22号端口添加ACCEPT规则

  

(4),

iptables -D INPUT 3
#删除INPUT链上的3号规则
iptables -D INPUT -p icmp --icmp-type 8 -j DROP
#删除INPUT链上的icmp协议8号类型的DROP规则

(5),

iptables -F OUTPUT
#删除OUTPUR链上的所有规则

四,规则的匹配

1,通用匹配

可以直接用,不依赖另外的条件和扩展包括网络协议,IP协议,网络接口条件等

(6),

iptables -I INPUT -i ens33 -s 192.168.40.0/24 -j REJECT
#拒绝从192.168.40.0/24网段的ens33网络接口进

2,隐含匹配

某些条件。像端口,tcp标记,icmp类型,隐含需要以特定的协议匹配作为前提

(8),

iptables -I FORWARD -d 192.168.40.0/24 --dport 22:25 -j DROP
#丢掉FORWARD链192.168.40.0/24网段22至25端口的数据包

(9),

iptables -I OUTPUT -p tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -j REJECT
#在OUTPUT链tcp协议22号端口上拒绝RST,ACK包,接收SYN包

(10),

iptables -A INPUT -p icmp --icmp-type 8 -j DROP
#丢掉INPUT链icmp协议并关闭目标主机的echo request回复

3,显氏匹配

需要以m的形式明确指出类型,包括多端口,mac地址,ip范围,数据包状态等条件

(11),

iptables -A INPUT -p tcp -m multiport --dport 22,80 -j ACCEPT
#允许放通INPUT链tcp协议的22和80端口
iptables -A INPUT -p tcp -m iprange --dstrange 192.168.40.10-192.168.40.20 -j DROP
#丢掉INPUT链tcp协议IP地址范围是192.168.40.10至192.168.40.20之内的数据包

打赏链接:

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​