参数介绍
-N
表示创建链,-F
表示清空链,-X
表示删除链。-Z
表示清空计数器 (例如,-Z INPUT 表示清空 INPUT 链的计数器)-P
表示设置默认策略 (例如,-P INPUT DROP 表示设置默认策略为丢弃所有输入包)-I
表示插入规则到链的开头,-A
表示添加规则到链的末尾,-D
表示删除规则,-R
表示替换规则。-L
表示列出规则,-v
表示列出详细信息,-n
表示列出数字格式,--line-numbers
表示列出规则的行号。-s
表示源地址,-d
表示目标地址,-i
表示输入接口,-o
表示输出接口。
-p
- -p 表示协议,-p tcp 表示匹配 tcp 协议,-p udp 表示匹配 udp 协议,-p icmp 表示匹配 icmp 协议。
- -p tcp –dport 22 表示匹配 tcp 协议,目标端口为 22 的包。
-t
- -t 表示表,-t filter 表示过滤表,-t nat 表示网络地址转换表,-t mangle 表示数据包修改表。不写时默认为 filter 表。
- -t filter -N fw_INPUT 表示创建过滤表的 fw_INPUT 链,-t filter -F fw_INPUT 表示清空过滤表的 fw_INPUT 链,-t filter -X fw_INPUT 表示删除过滤表的 fw_INPUT 链。
- -t nat -N fw_PREROUTING 表示创建网络地址转换表的 fw_PREROUTING 链,-t nat -F fw_PREROUTING 表示清空网络地址转换表的 fw_PREROUTING 链,-t nat -X fw_PREROUTING 表示删除网络地址转换表的 fw_PREROUTING 链。
- -t mangle -N fw_FORWARD 表示创建数据包修改表的 fw_FORWARD 链,-t mangle -F fw_FORWARD 表示清空数据包修改表的 fw_FORWARD 链,-t mangle -X fw_FORWARD 表示删除数据包修改表的 fw_FORWARD 链。
-m
-m 参数是 iptables 命令的一个选项,用于指定要使用的匹配模块(Match Module)
。匹配模块允许你在防火墙规则中指定不同的匹配条件,以便过滤和处理网络数据包。-m 后面通常跟随特定的模块名称,如 -m tcp、-m udp、-m state 等,以根据不同的协议或条件对数据包进行匹配。
以下是一些常见的匹配模块及其作用的简单介绍:
-m tcp
:用于匹配TCP协议的数据包,允许你指定TCP的一些特定条件,如端口号、连接状态等。-m udp
:用于匹配UDP协议的数据包,类似于 -m tcp,但用于UDP数据包。-m state
:用于匹配数据包的连接状态,允许你检查数据包是否属于已建立连接、相关连接或无效连接。-m multiport
:用于匹配多个端口号的数据包,可以指定一个或多个端口号。-m limit
:用于限制数据包的匹配速率,以控制规则匹配的频率。-m mac
:用于根据MAC地址匹配数据包,允许你控制特定MAC地址的数据流。-m owner
:用于匹配属于特定用户或用户组的数据包,通常与用户ID或组ID一起使用。-m comment
:用于添加注释信息到规则中,以提高规则的可读性和管理性。
例如 -m icmp 表示匹配 icmp 协议,-m state –state NEW 表示匹配新连接,-m state –state ESTABLISHED,RELATED 表示匹配已建立连接,-m owner –uid-owner 10154 表示匹配 uid 为 10154 的应用程序。-m multiport –dports 80,443 表示匹配目标端口为 80 或 443 的包。
-j
- -j ACCEPT 表示匹配成功后的动作,ACCEPT 表示接受,DROP 表示丢弃,REJECT 表示拒绝。(此处仅列举了常用部分)
- -j LOG 表示添加日志规则,日志规则必须放在 ACCEPT, DROP, REJECT 规则之前。
-A
- -A fw_INPUT -j DROP 表示添加丢弃规则,丢弃所有输入包。
- -A fw_OUTPUT -j REJECT 表示添加拒绝规则,拒绝所有输出包。
- -A fw_FORWARD -j REJECT 表示添加拒绝规则,拒绝所有转发包。
链表 (Chain Table)
- filter 表
filter 表是 iptables 的默认表,它包含了三个预定义的链:INPUT、OUTPUT 和 FORWARD。这些链用于处理进入系统、从系统发出和通过系统的数据包。filter 表的默认策略是接受所有数据包。
- nat 表
nat 表用于网络地址转换,它包含了三个预定义的链:PREROUTING、POSTROUTING 和 OUTPUT。这些链用于处理数据包的源地址和目标地址。nat 表的默认策略是接受所有数据包。
- mangle 表
mangle 表用于修改数据包的头部信息,它包含了五个预定义的链:PREROUTING、INPUT、FORWARD、OUTPUT 和 POSTROUTING。这些链用于处理数据包的头部信息。mangle 表的默认策略是接受所有数据包。
优先级 (顺序)
在 iptables 中,链的顺序非常重要,因为它们按照顺序依次处理数据包。如果数据包匹配了链中的规则,那么它将执行链中的动作,然后停止处理。如果数据包不匹配链中的任何规则,那么它将继续处理下一个链。
在 iptables 中,链的顺序是固定的,不能改变。在 filter 表中,链的顺序是:INPUT、FORWARD 和 OUTPUT。在 nat 表中,链的顺序是:PREROUTING、INPUT、OUTPUT 和 POSTROUTING。在 mangle 表中,链的顺序是:PREROUTING、INPUT、FORWARD、OUTPUT 和 POSTROUTING。
源地址 (Source Address)
iptables 中,INPUT 链和 OUTPUT 链的源地址通常不会完全一致,因为它们分别用于处理不同的数据包流向。
- INPUT链用于处理进入系统的数据包,即从外部网络发送到本地系统的数据包。在这种情况下,源地址通常是来自外部网络的数据包的源地址。
- OUTPUT链用于处理从本地系统发送到外部网络的数据包。在这种情况下,源地址通常是本地系统的地址,即数据包的来源。
应用实例
|
|