Iptables防火墙四表五链概念及使用技巧详解
简介
在Linux系统中,Iptables是一种被广泛使用的防火墙程序,在网络安全中发挥着非常重要的作用。本文将对Iptables防火墙的四表五链概念以及使用技巧进行详细的讲解。
四表
Iptables防火墙中的四个表分别是:filter
表、nat
表、mangle
表和raw
表。
filter表
filter
表是最常用的表,在此表中设置的规则可以实现基本的过滤功能,可以通过添加规则来实现防止某些IP地址、端口或协议访问的目的。
-
filter表的五个常用链:
INPUT
、FORWARD
、OUTPUT
、PREROUTING
和POSTROUTING
。INPUT
链:过滤到达本机的数据包;FORWARD
链:过滤转发的数据包;OUTPUT
链:过滤本机产生的数据包;PREROUTING
链:在数据包到达路由之前对其封装,可进行DNAT操作;POSTROUTING
链:在数据包离开路由之后对其封装,可进行SNAT操作。
nat表
nat
表用于进行网络地址转换(NAT),它的作用是在防火墙上对网络流量进行转发和重定向,以实现网络地址的转换。
-
nat表的三个常用链:
PREROUTING
、POSTROUTING
和OUTPUT
。PREROUTING
链:将目标地址改为规则中指定的IP地址;POSTROUTING
链:将源地址改为规则中指定的IP地址;OUTPUT
链:对发往外部的包进行DNAT操作。
mangle表
mangle
表是对数据包进行修改的表,它能够修改网络包的部分或者全部内容。
-
mangle表的五个常用链:
PREROUTING
、INPUT
、FORWARD
、OUTPUT
和POSTROUTING
。PREROUTING
链:对数据包进行DNAT操作;INPUT
链:对数据包进行包过滤;FORWARD
链:对数据包进行防火墙的转发;OUTPUT
链:对数据包进行SNAT操作;POSTROUTING
链:对数据包进行修改。
raw表
raw
表是一个特殊的表,它和其他表不同的是,它不会对数据包进行更改,而是在建立连接的时候进行过滤。
-
raw表的两个常用链:
PREROUTING
和OUTPUT
。PREROUTING
链:对数据包进行过滤;OUTPUT
链:对数据包进行过滤。
五链
Iptables防火墙的五个链分别是:INPUT
、FORWARD
、OUTPUT
、PREROUTING
和POSTROUTING
。
INPUT链
INPUT
链用于处理到达主机的数据包,通过增加规则来限制特定的IP地址、端口等的访问。
示例1:设置允许访问本机22端口的规则
# 打开22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
示例2:设置禁止访问特定IP地址的规则
# 阻止192.168.1.100的所有访问
iptables -A INPUT -s 192.168.1.100 -j DROP
FORWARD链
FORWARD
链用于处理通过路由器路由的数据包,可以通过增加规则来限制路由器转发特定的IP地址、端口等的访问。
示例3:设置禁止转发HTTP协议的规则
# 禁止路由器转发HTTP协议(80端口)
iptables -A FORWARD -p tcp --dport 80 -j DROP
OUTPUT链
OUTPUT
链处理从本机发出的数据包,可以通过增加规则来限制本机发出特定的IP地址、端口等的访问。
示例4:设置只允许本机访问特定IP地址的规则
# 只允许本机访问192.168.1.100
iptables -A OUTPUT -d 192.168.1.100 -j ACCEPT
iptables -A OUTPUT -j DROP
PREROUTING链
PREROUTING
链在数据包被路由之前进行处理,可以用来执行DNAT操作,将数据包到达的目标地址更改为规则中指定的地址。
示例5:设置将80端口的访问流量转发到8080端口的规则
# 将流量从80端口转发到8080端口
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
POSTROUTING链
POSTROUTING
链在数据包被路由之后进行处理,可以用来执行SNAT操作,将数据包的源地址修改为规则中指定的地址。
示例6:设置将本机发出的流量的源地址更改为192.168.1.100的规则
# 将本机发出的流量的源地址改为192.168.1.100
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.100
技巧
- 尽可能精确的匹配IP地址、端口和协议;
- 使用
iptables-save
和iptables-restore
命令可以保存和恢复iptables规则; - 使用
iptables -L --line-numbers
命令可以查看排序的分卷列表; - 在修改iptables规则之前,使用
iptables-save > filename
可以备份规则; - 使用
iptables -F
清空规则时,需要注意进行确认,不然会丢失所有规则。
结论
Iptables是一个非常强大的Linux防火墙应用程序,在网络安全中发挥着非常重要的作用。通过理解Iptables防火墙的四表五链概念以及学习使用技巧,可以更好地保证网络的安全。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Iptables防火墙四表五链概念及使用技巧详解 - Python技术站