1、iptablesiptablesv iptables 是一款Linux系统下著名的防火墙软件。 v 已经成为Linux系统中防火墙软件的事实标准。 iptables的功能1)数据包过滤防火墙2)网络地址转换NAT3)数据包拆分 v iptables共有3张表,分别是: filter(过滤)表 nat(网络地址转换)表 mangle(拆分)表 这3张表正好对应实现iptables的3类功能。 v 表链规则在iptables的概念中,“表”是最大的容器 ;在表中可以定义多条“链”;每条链中又可以定义多条“规则”。 v 激活IP转发功能 把Linux主机配置成网关防火墙,需要在执行iptables命
2、令之前激活IP数据包的转发功能。 激活IP数据包的转发功能的命令如下:#echo 1/proc/sys/net/ipv4/ip_forwardiptables基础iptables语法格式如下:iptables -t table command chain match -j target/jump iptables语法格式中的命令(1)命令 A(-append) 示例: iptables A INPUT -j ACCEPT 功能:命令-A用来向指定的链中追加新规则,本例为向filter表(默认表)的INPUT链中追加一条规则,其功能是接受源地址为任意、目标地址为防火墙本身的所有数据包。说明: 新
3、增加的规则将会成为规则链中的最后一条规则。(2)命令 D(-delete) 示例:iptables -D INPUT p tcp -dport 80 -j DROP 功能:删除 “拒绝协议为tcp、目标端口为80的数据包进入本机”的规则。说明:也可以通过直接指定规则编号加以删除,示例如下:iptables -D INPUT 1功能:删除INPUT链中编号为“1”的规则。(3)命令 I(-insert) 示例: iptables -I INPUT 1 -p tcp -dport 80 -j ACCEPT 功能:命令I用来插入规则,本例为在filter表(默认表)的INPUT链中第1条规则的位置插
4、入一条规则,其功能是接受协议为tcp、目标端口为80的数据包进入本机。说明:在指定的链中插入一条规则,原来在该位置及其以后的规则将依次往后移动一个位置。 (4)命令 L(-list) 示例: iptables -L INPUT 功能:命令-L用来列出指定链中的规则,本例为列出位于filter表(默认表)的INPUT链中所有规则。说明 :如果不指明具体的表,则会列出filter表(默认表)的每条链中的所有规则。也可以指定具体的表的名称,例如要列出nat表中所有规则,则命令如下:# iptables -t nat -L(5)命令 F(-flush) 示例:iptables -F INPUT功能:命
5、令 F用来清空指定链中的所有规则,本例为清空filter表(默认表)的INPUT链中的所有规则。说明:如果不指明具体的链,则会清空filter表(默认表)的每条链中的所有规则。也可以指定具体的表的名称,例如要清空nat表中所有规则,则命令如下:# iptables -t nat -F(6)命令 Z(-zero) 示例:iptables -Z INPUT 功能:命令-Z用来将指定链的计数器清零,本例为将filter表(默认表)的INPUT链的计数器清零。(7)命令 N(-new-chain) 示例: iptables -N MYCHAIN 功能:命令N用来自定义新链,本例为在filter表(默认
6、表)中定义一条名为MYCHAIN的新链。说明:每条规则链就像一个函数,链中的规则就像函数中的一条条语句;在定义新的规则链之后,用户可以在新链中自定义规则。 (8)命令 X(-delete-chain) 示例:iptables -X MYCHAIN 功能:命令 X用来删除指定的链,本例为删除filter表(默认表)中名为MYCHAIN的链。说明:此命令只能删除用户自定义的链而不能删除内置(默认)链。 (9)命令 P(-policy) 示例:iptables -P INPUT DROP 功能:命令 P用来定义指定链的默认处理策略。说明:只有内置(默认)链才能定义默认处理策略。(10)命令 E(-r
7、ename-chain) 示例:iptables -E MYOLDCHAIN MYNEWCHAIN功能:命令 E用来将自定义的链重命名,本例为将用户自定义的链MYOLDCHAIN重命名为MYNEWCHAIN。说明:重命名链的名称不影响规则表、链的结构,仅仅是改换名称而已。 iptables语法格式中的参数(1)参数 p(-protocol) 示例:iptables -A INPUT -p tcp j ACCEPT 功能:参数 p(小写p)用来指定要匹配的协议,本例为在filter表(默认表)的INPUT链中追加一条规则,其功能是接受协议为tcp的数据包进入本机。说明:v 可以使用“!”运算符进
8、行反向匹配,例如:-p ! udp ,其含义是指除 udp 以外的其他类型,包含 tcp、icmp等其他协议;v 还可以使用“all”来要匹配所有类型,如:-p all。v 在使用了-p参数后,可以进一步使用端口参数来进行更细致的匹配。 (2)参数 -sport(-source-port) 示例:iptables -A INPUT -p udp -sport 53 j ACCEPT功能:参数-sport用来指定要匹配的端口,本例为在filter表(默认表)的INPUT链中追加一条规则,其功能是接受协议为udp、源端口为53的数据包进入本机。说明:参数-sport不仅可以匹配单一端口,还可以匹配
9、一个端口范围,例如:-sport 20:80,表示从20到80端口之间的所有端口。 另外,也可以使用“!”运算符进行反向匹配。(3)参数 -dport(-destination-port) 示例:iptables -A INPUT -p tcp -dport 80 j ACCEPT功能:参数-dport用来指定要匹配的目标端口,本例为在filter表(默认表)的INPUT链中追加一条规则,其功能是接受协议为tcp、目标端口为80的数据包进入本机。说明:请参照参数-sport的用法说明。(4)参数 s(-src, -source) 示例:iptables -A INPUT -s 192.168.
10、1.1 -j ACCEPT功能:参数 -s用来指定要匹配的源IP地址说明:参数 -s既可以用来匹配单个IP地址,也可以匹配一个网段,例如:-s 192.168.1.0/24。 另外,还可以使用 ! 运算符进行反向匹配,例如:-s ! 192.168.1.0/24。(5)参数 -d(-dst, -destination) 示例:iptables -A INPUT -d 192.168.1.1 -j ACCEPT功能:参数 -d用来指定要匹配的目标IP地址说明:请参照参数-s的用法说明 (6)参数 -i(-in-interface) 示例:iptables -A INPUT -i eth0 -j
11、ACCEPT功能:参数 -i用来指定数据包进入的网卡,本例为在filter表(默认表)的INPUT链中追加一条规则,其功能是接受从网卡eth0进入本机的数据包。说明:v 可以使用通配字符“+” 来匹配所有网卡,例如:-i eth+ 表示所有的名字以“eth”开头的网卡。v 另外,该参数也可以使用“!”运算符进行反向匹配,例如:-i ! eth0。v 需要注意的是参数-i只能工作在INPUT、FORWARD和PREROUTING链上。 (7)参数 -o(-out-interface) 示例:iptables -A FORWARD -o eth0 -j ACCEPT功能:参数 -o用来指定数据包从
12、哪块网卡出去说明:v 源地址和目标地址都不是本机的数据包需要经过filter表的FORWARD链中的规则进行处理。v 该参数使用方式请参照参数-i。需要注意的是参数-o只能工作在OUTPUT、FORWARD和POSTROUTING链上。(8)参数 -tcp-flags 示例:iptables -A INPUT -p tcp -tcp-flags SYN,RST,ACK SYN j ACCEPT功能:参数-tcp-flags用来匹配TCP的状态标志,其功能是接受协议为tcp而且在SYN、RST和ACK3个标志位中只有SYN位为1的数据包进入本机。说明:参数-tcp-flags分为两个部分: 第一
13、个部分列出需要匹配的标志 第二部分则列出上述标志中哪些位必须被设置为1,其余未被列举的标志必须为0。 其中,TCP状态标志共有6种:SYN(同步)、ACK(确认)、FIN(结束)、RST(重置)、URG(紧急)、PSH(强迫推送)。 另外,还可以使用关键词 ALL 和 NONE 进行匹配,也可以使用“!”运算符进行反向匹配。(9)参数 -m multiport -source-port 示例:iptables -A INPUT -p tcp -m multiport -source-port 20,21,53,80,110 -j ACCEPT功能:参数 -m multiport -source
14、-port用来匹配多个不连续的源端口号。说明:该参数一次最多可以匹配15个端口,还可以使用“!”运算符进行反向匹配。(10)参数 -m multiport -destination-port 示例:iptables -A INPUT -p tcp -m multiport -destination-port 20,21,53,80,110 j ACCEPT 功能:参数 -m multiport -destination-port用来匹配多个不连续的目标端口号。说明:使用方式参见参数 -m multiport -source-port。(11)参数 -m multiport -port 示例:i
15、ptables -A INPUT -p tcp -m multiport -port 22,53 -j ACCEPT 功能:参数 -m multiport -port用来匹配源端口号和目的端口号相同的数据包。说明:这个参数比较特殊,要求源端口号和目的端口号必须相同。例如:如果来源端口号为 22但目的地端口号为53,这种数据包并不算符合匹配条件。 (12)参数 -icmp-type 示例:iptables -A INPUT -p icmp -icmp-type 8 -j ACCEPT功能:参数-icmp-type用来匹配icmp协议的类型编号,实际上,允许其他机器主动ping本机。说明:关于icmp协议的类型编号,既可以使用代码也可以使用数字编号来进行匹配;可以通过输入 iptables -p icmp -help 来查看有哪些代码可用。 (13)参数 -m limit -limit 数量1 -limit-burst数量2示例:iptables -A INPUT -
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1