iptables [-t table] command [match] [-j target/jump]
-t
参数用来指定规则表,内建的规则表有三个,分别是:nat、mangle 和 filter,当未指定规则表时,则一律视为是 filter。
个规则表的功能如下:
nat 此规则表拥有 Prerouting 和 postrouting 两个规则链,主要功能为进行一对一、一对多、多对多等网址转译工作(SNAT
DNAT),由于转译工作的特性,需进行目的地网址转译的封包,就不需要进行来源网址转译,反之亦然,因此为了提升改写封包的
率,在防火墙运作时,每个封包只会经过这个规则表一次。如果我们把封包过滤的规则定义在这个数据表里,将会造成无法对同一
包进行多次比对,因此这个规则表除了作网址转译外,请不要做其它用途
mangle 此规则表拥有 Prerouting、FORWARD 和 postrouting 三个规则链。
除了进行网址转译工作会改写封包外,在某些特殊应用可能也必须去改写封包(TTL、TOS)或者是设定 MARK(将封包作记号,以
进行后续的过滤),这时就必须将这些工作定义在 mangle 规则表中,由于使用率不高,我们不打算在这里讨论 mangle 的用法。
filter 这个规则表是预设规则表,拥有 INPUT、FORWARD 和 OUTPUT 三个规则链,这个规则表顾名思义是用来进行封包过滤的
理动作(例如:DROP、 LOG、 ACCEPT 或 REJECT),我们会将基本规则都建立在此规则表中。
![](data:image/png;base64,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)
常用命令列表:
命令 -A, --append
范例 iptables -A INPUT ...
说明 新增规则到某个规则炼中,该规则将会成为规则炼中的最后一条规则。
命令 -D, --delete
范例 iptables -D INPUT --dport 80 -j DROP
iptables -D INPUT 1
说明 从某个规则炼中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。
命令 -R, --replace
范例 iptables -R INPUT 1 -s 192.168.0.1 -j DROP
说明 取代现行规则,规则被取代后并不会改变顺序。
命令 -I, --insert
范例 iptables -I INPUT 1 --dport 80 -j ACCEPT
说明 插入一条规则,原本该位置上的规则将会往后移动一个顺位。
命令 -L, --list
范例 iptables -L INPUT
说明 列出某规则炼中的所有规则。
命令 -F, --flush
范例 iptables -F INPUT
说明 删除某规则炼中的所有规则。
命令 -Z, --zero
范例 iptables -Z INPUT
说明 将封包计数器归零。封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。
命令 -N, --new-chain
范例 iptables -N allowed
说明 定义新的规则炼。
命令 -X, --delete-chain
范例 iptables -X allowed
说明 删除某个规则炼。
命令 -P, --policy
范例 iptables -P INPUT DROP
说明 定义过滤政策。 也就是未符合过滤条件之封包,预设的处理方式。
命令 -E, --rename-chain
范例 iptables -E allowed disallowed
说明 修改某自订规则炼的名称。
常用封包比对参数:
参数 -p, --protocol
范例 iptables -A INPUT -p tcp
说明 比对通讯协议类型是否相符,可以使用 ! 运算子进行反向比对,例如:-p ! tcp ,意思是指除 tcp 以外的其它类型,包含 udp、icmp ...等。如果要比对所有类型,则可以使用 all 关键词,例如:-p all。
参数 -s, --src, --source
范例 iptables -A INPUT -s 192.168.1.1
说明 用来比对封包的来源 IP,可以比对单机或网络,比对网络时请用数字来表示屏蔽,例如:-s 192.168.0.0/24,比对 IP 时也可以使用 ! 运算子进行反向比对,例如:-s ! 192.168.0.0/24。
参数 -d, --dst, --destination
范例 iptables -A INPUT -d 192.168.1.1
说明 用来比对封包的目的地 IP,设定方式同上。
参数 -i, --in-interface
范例 iptables -A INPUT -i eth0
说明 用来比对封包是从哪片网卡进入,可以使用通配字符 + 来做大范围比对,例如:-i eth+ 表示所有的 ethernet 网卡,也可以使用 ! 运算子进行反向比对,例如:-i ! eth0。
参数 -o, --out-interface
范例 iptables -A FORWARD -o eth0
说明 用来比对封包要从哪片网卡送出,设定方式同上。
参数 --sport, --source-port
范例 iptables -A INPUT -p tcp --sport 22
说明 用来比对封包的来源埠号,可以比对单一埠,或是一个范围,例如:--sport 22:80,表示从 22 到 80 埠之间都算是符合条件,如果要比对不连续的多个埠,则必须使用 --multiport 参数,详见后文。比对埠号时,可以使用 ! 运算子进行反向比对。
参数 --dport, --destination-port
范例 iptables -A INPUT -p tcp --dport 22
说明 用来比对封包的目的地埠号,设定方式同上。
参数 --tcp-flags
范例 iptables -p tcp --tcp-flags SYN,FIN,ACK SYN
说明 比对 TCP 封包的状态旗号,参数分为两个部分,第一个部分列举出想比对的旗号,第二部分则列举前述旗号中哪些有被设定,未被列举的旗号必须是空的。TCP 状态旗号包括:SYN(同步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急)、PSH(强迫推送) 等均可使用于参数中,除此之外还可以使用关键词 ALL 和 NONE 进行比对。比对旗号时,可以使用 ! 运算子进行反向比对。
参数 --syn
范例 iptables -p tcp --syn
说明 用来比对是否为要求联机之 TCP 封包,与 iptables -p tcp --tcp-flags SYN,FIN,ACK SYN 的作用完全相同,如果使用 ! 运算子,可用来比对非要求联机封包。
参数 -m multiport --source-port
范例 iptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110
说明 用来比对不连续的多个来源埠号,一次最多可以比对 15 个埠,可以使用 ! 运算子进行反向比对。
参数 -m multiport --destination-port
范例 iptables -A INPUT -p tcp -m multiport --destination-port 22,53,80,110
说明 用来比对不连续的多个目的地埠号,设定方式同上。
参数 -m multiport --port
范例 iptables -A INPUT -p tcp -m multiport --port 22,53,80,110
说明 这个参数比较特殊,用来比对来源埠号和目的埠号相同的封包,设定方式同上。注意:在本范例中,如果来源端口号为 80 但目的地埠号为 110,这种封包并不算符合条件。
参数 --icmp-type
范例 iptables -A INPUT -p icmp --icmp-type 8
说明 用来比对 ICMP 的类型编号,可以使用代码或数字编号来进行比对。请打 iptables -p icmp --help 来查看有哪些代码可以用。
参数 -m limit --limit
范例 iptables -A INPUT -m limit --limit 3/hour
说明 用来比对某段时间内封包的平均流量,上面的例子是用来比对:每小时平均流量是否超过一次 3 个封包。 除了每小时平均一次外,也可以每秒钟、每分钟或每天平均一次,默认值为每小时平均一次,参数如后: /second、 /minute、/day。 除了进行封包数量的比对外,设定这个参数也会在条件达成时,暂停封包的比对动作,以避免因骇客使用洪水攻击法,导致服务被阻断。
参数 --limit-burst
范例 iptables -A INPUT -m limit --limit-burst 5
说明 用来比对瞬间大量封包的数量,上面的例子是用来比对一次同时涌入的封包是否超过 5 个(这是默认值),超过此上限的封包将被直接丢弃。使用效果同上。
参数 -m mac --mac-source
范例 iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01
说明 用来比对封包来源网络接口的硬件地址,这个参数不能用在 OUTPUT 和 Postrouting 规则炼上,这是因为封包要送出到网卡后,才能由网卡驱动程序透过 ARP 通讯协议查出目的地的 MAC 地址,所以 iptables 在进行封包比对时,并不知道封包会送到哪个网络接口去。
参数 --mark
范例 iptables -t mangle -A INPUT -m mark --mark 1
说明 用来比对封包是否被表示某个号码,当封包被比对成功时,我们可以透过 MARK 处理动作,将该封包标示一个号码,号码最大不可以超过 4294967296。
参数 -m owner --uid-owner
范例 iptables -A OUTPUT -m owner --uid-owner 500
说明 用来比对来自本机的封包,是否为某特定使用者所产生的,这样可以避免服务器使用 root 或其它身分将敏感数据传送出去,可以降低系统被骇的损失。可惜这个功能无法比对出来自其它主机的封包。
参数 -m owner --gid-owner
范例 iptables -A OUTPUT -m owner --gid-owner 0
说明 用来比对来自本机的封包,是否为某特定使用者群组所产生的,使用时机同上。
参数 -m owner --pid-owner
范例 iptables -A OUTPUT -m owner --pid-owner 78
说明 用来比对来自本机的封包,是否为某特定行程所产生的,使用时机同上。
参数 -m owner --sid-owner
范例 iptables -A OUTPUT -m owner --sid-owner 100
说明 用来比对来自本机的封包,是否为某特定联机(Session ID)的响应封包,使用时机同上。
参数 -m state --state
范例 iptables -A INPUT -m state --state RELATED,ESTABLISHED
说明 用来比对联机状态,联机状态共有四种:INVALID、ESTABLISHED、NEW 和 RELATED。
INVALID 表示该封包的联机编号(Session ID)无法辨识或编号不正确。
ESTABLISHED 表示该封包属于某个已经建立的联机。
NEW 表示该封包想要起始一个联机(重设联机或将联机重导向)。
RELATED 表示该封包是属于某个已经建立的联机,所建立的新联机。例如:FTP-DATA 联机必定是源自某个 FTP 联机。
常用的处理动作:
-j 参数用来指定要进行的处理动作,常用的处理动作包括:ACCEPT、REJECT、DROP、REDIRECT、MASQUERADE、LOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、MARK,分别说明如下:
ACCEPT 将封包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则炼(nat:postrouting)。
REJECT 拦阻该封包,并传送封包通知对方,可以传送的封包有几个选择:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接 中断过滤程序。 范例如下:
iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset
DROP 丢弃封包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
REDIRECT 将封包重新导向到另一个端口(PNAT),进行完此处理动作后,将 会继续比对其它规则。 这个功能可以用来实作通透式 porxy 或用来保护 web 服务器。例如:iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
MASQUERADE 改写封包来源 IP 为防火墙 NIC IP,可以指定 port 对应的范围,进行完此处理动作后,直接跳往下一个规则炼(mangle:postrouting)。这个功能与 SNAT 略有不同,当进行 IP 伪装时,不需指定要伪装成哪个 IP,IP 会从网卡直接读取,当使用拨接连线时,IP 通常是由 ISP 公司的 DHCP 服务器指派的,这个时候 MASQUERADE 特别有用。范例如下:
iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000
LOG 将封包相关讯息纪录在 /var/log 中,详细位置请查阅 /etc/syslog.conf 组态档,进行完此处理动作后,将会继续比对其它规则。例如:
iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"
SNAT 改写封包来源 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将直接跳往下一个规则炼(mangle:postrouting)。范例如下:
iptables -t nat -A POSTROUTING -p tcp-o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000
DNAT 改写封包目的地 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将会直接跳往下一个规则炼(filter:input 或 filter:forward)。范例如下:
iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10:80-100
MIRROR 镜射封包,也就是将来源 IP 与目的地 IP 对调后,将封包送回,进行完此处理动作后,将会中断过滤程序。
QUEUE 中断过滤程序,将封包放入队列,交给其它程序处理。透过自行开发的处理程序,可以进行其它应用,例如:计算联机费用.......等。
RETURN 结束在目前规则炼中的过滤程序,返回主规则炼继续过滤,如果把自订规则炼看成是一个子程序,那么这个动作,就相当于提早结束子程序并返回到主程序中。
MARK 将封包标上某个代号,以便提供作为后续过滤的条件判断依据,进行完此处理动作后,将会继续比对其它规则。范例如下:
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2