iptables.docx
《iptables.docx》由会员分享,可在线阅读,更多相关《iptables.docx(17页珍藏版)》请在冰豆网上搜索。
![iptables.docx](https://file1.bdocx.com/fileroot1/2022-11/20/a9d4697e-0d76-4306-8e58-752c0243a372/a9d4697e-0d76-4306-8e58-752c0243a3721.gif)
iptables
iptables
viptables是一款Linux系统下著名的防火墙软件。
v已经成为Linux系统中防火墙软件的事实标准。
iptables的功能
1)数据包过滤防火墙
2)网络地址转换NAT
3)数据包拆分
viptables共有3张表,分别是:
filter(过滤)表
nat(网络地址转换)表
mangle(拆分)表
这3张表正好对应实现iptables的3类功能。
v表链规则
在iptables的概念中,“表”是最大的容器;
在表中可以定义多条“链”;
每条链中又可以定义多条“规则”。
v激活IP转发功能
☆把Linux主机配置成网关防火墙,需要在执行iptables命令之前激活IP数据包的转发功能。
☆激活IP数据包的转发功能的命令如下:
#echo1>/proc/sys/net/ipv4/ip_forward
iptables基础
iptables语法格式如下:
iptables[-ttable]commandchain[match][-jtarget/jump]
iptables语法格式中的命令
(1)命令–A(--append)
示例:
iptables–AINPUT-jACCEPT
功能:
命令-A用来向指定的链中追加新规则,本例为向filter表(默认表)的INPUT链中追加一条规则,其功能是接受源地址为任意、目标地址为防火墙本身的所有数据包。
说明:
新增加的规则将会成为规则链中的最后一条规则。
(2)命令–D(--delete)
示例:
iptables-DINPUT–ptcp--dport80-jDROP
功能:
删除“拒绝协议为tcp、目标端口为80的数据包进入本机”的规则。
说明:
也可以通过直接指定规则编号加以删除,示例如下:
iptables-DINPUT1
功能:
删除INPUT链中编号为“1”的规则。
(3)命令–I(--insert)
示例:
iptables-IINPUT1-ptcp--dport80-jACCEPT
功能:
命令–I用来插入规则,本例为在filter表(默认表)的INPUT链中第1条规则的位置插入一条规则,其功能是接受协议为tcp、目标端口为80的数据包进入本机。
说明:
在指定的链中插入一条规则,原来在该位置及其以后的规则将依次往后移动一个位置。
(4)命令–L(--list)
示例:
iptables-LINPUT
功能:
命令-L用来列出指定链中的规则,本例为列出位于filter表(默认表)的INPUT链中所有规则。
说明:
如果不指明具体的表,则会列出filter表(默认表)的每条链中的所有规则。
也可以指定具体的表的名称,例如要列出nat表中所有规则,则命令如下:
#iptables-tnat-L
(5)命令–F(--flush)
示例:
iptables-FINPUT
功能:
命令–F用来清空指定链中的所有规则,本例为清空filter表(默认表)的INPUT链中的所有规则。
说明:
如果不指明具体的链,则会清空filter表(默认表)的每条链中的所有规则。
也可以指定具体的表的名称,例如要清空nat表中所有规则,则命令如下:
#iptables-tnat-F
(6)命令–Z(--zero)
示例:
iptables-ZINPUT
功能:
命令-Z用来将指定链的计数器清零,本例为将filter表(默认表)的INPUT链的计数器清零。
(7)命令–N(--new-chain)
示例:
iptables-NMYCHAIN
功能:
命令–N用来自定义新链,本例为在filter表(默认表)中定义一条名为MYCHAIN的新链。
说明:
每条规则链就像一个函数,链中的规则就像函数中的一条条语句;在定义新的规则链之后,用户可以在新链中自定义规则。
(8)命令–X(--delete-chain)
示例:
iptables-XMYCHAIN
功能:
命令–X用来删除指定的链,本例为删除filter表(默认表)中名为MYCHAIN的链。
说明:
此命令只能删除用户自定义的链而不能删除内置(默认)链。
(9)命令–P(--policy)
示例:
iptables-PINPUTDROP
功能:
命令–P用来定义指定链的默认处理策略。
说明:
只有内置(默认)链才能定义默认处理策略。
(10)命令–E(--rename-chain)
示例:
iptables-EMYOLDCHAINMYNEWCHAIN
功能:
命令–E用来将自定义的链重命名,本例为将用户自定义的链MYOLDCHAIN重命名为MYNEWCHAIN。
说明:
重命名链的名称不影响规则表、链的结构,仅仅是改换名称而已。
iptables语法格式中的参数
(1)参数–p(--protocol)
示例:
iptables-AINPUT-ptcp–jACCEPT
功能:
参数–p(小写p)用来指定要匹配的协议,本例为在filter表(默认表)的INPUT链中追加一条规则,其功能是接受协议为tcp的数据包进入本机。
说明:
v可以使用“!
”运算符进行反向匹配,例如:
-p!
udp,其含义是指除udp以外的其他类型,包含tcp、icmp等其他协议;
v还可以使用“all”来要匹配所有类型,如:
-pall。
v在使用了-p参数后,可以进一步使用端口参数来进行更细致的匹配。
(2)参数--sport(--source-port)
示例:
iptables-AINPUT-pudp--sport53–jACCEPT
功能:
参数--sport用来指定要匹配的端口,本例为在filter表(默认表)的INPUT链中追加一条规则,其功能是接受协议为udp、源端口为53的数据包进入本机。
说明:
参数--sport不仅可以匹配单一端口,还可以匹配一个端口范围,例如:
--sport20:
80,表示从20到80端口之间的所有端口。
另外,也可以使用“!
”运算符进行反向匹配。
(3)参数--dport(--destination-port)
示例:
iptables-AINPUT-ptcp--dport80–jACCEPT
功能:
参数--dport用来指定要匹配的目标端口,本例为在filter表(默认表)的INPUT链中追加一条规则,其功能是接受协议为tcp、目标端口为80的数据包进入本机。
说明:
请参照参数--sport的用法说明。
(4)参数–s(--src,--source)
示例:
iptables-AINPUT-s192.168.1.1-jACCEPT
功能:
参数-s用来指定要匹配的源IP地址
说明:
参数-s既可以用来匹配单个IP地址,也可以匹配一个网段,例如:
-s192.168.1.0/24。
另外,还可以使用!
运算符进行反向匹配,例如:
-s!
192.168.1.0/24。
(5)参数-d(--dst,--destination)
示例:
iptables-AINPUT-d192.168.1.1-jACCEPT
功能:
参数-d用来指定要匹配的目标IP地址
说明:
请参照参数-s的用法说明
(6)参数-i(--in-interface)
示例:
iptables-AINPUT-ieth0-jACCEPT
功能:
参数-i用来指定数据包进入的网卡,本例为在filter表(默认表)的INPUT链中追加一条规则,其功能是接受从网卡eth0进入本机的数据包。
说明:
v可以使用通配字符“+”来匹配所有网卡,例如:
-ieth+表示所有的名字以“eth”开头的网卡。
v另外,该参数也可以使用“!
”运算符进行反向匹配,例如:
-i!
eth0。
v需要注意的是参数-i只能工作在INPUT、FORWARD和PREROUTING链上。
(7)参数-o(--out-interface)
示例:
iptables-AFORWARD-oeth0-jACCEPT
功能:
参数-o用来指定数据包从哪块网卡出去
说明:
v源地址和目标地址都不是本机的数据包需要经过filter表的FORWARD链中的规则进行处理。
v该参数使用方式请参照参数-i。
需要注意的是参数-o只能工作在OUTPUT、FORWARD和POSTROUTING链上。
(8)参数--tcp-flags
示例:
iptables-AINPUT-ptcp--tcp-flagsSYN,RST,ACKSYN–jACCEPT
功能:
参数--tcp-flags用来匹配TCP的状态标志,其功能是接受协议为tcp而且在SYN、RST和ACK3个标志位中只有SYN位为1的数据包进入本机。
说明:
参数--tcp-flags分为两个部分:
第一个部分列出需要匹配的标志
第二部分则列出上述标志中哪些位必须被设置为1,其余未被列举的标志必须为0。
其中,TCP状态标志共有6种:
SYN(同步)、ACK(确认)、FIN(结束)、RST(重置)、URG(紧急)、PSH(强迫推送)。
另外,还可以使用关键词ALL和NONE进行匹配,也可以使用“!
”运算符进行反向匹配。
(9)参数-mmultiport--source-port
示例:
iptables-AINPUT-ptcp-mmultiport--source-port20,21,53,80,110-jACCEPT
功能:
参数-mmultiport--source-port用来匹配多个不连续的源端口号。
说明:
该参数一次最多可以匹配15个端口,还可以使用“!
”运算符进行反向匹配。
(10)参数-mmultiport--destination-port
示例:
iptables-AINPUT-ptcp-mmultiport--destination-port20,21,53,80,110–jACCEPT
功能:
参数-mmultiport--destination-port用来匹配多个不连续的目标端口号。
说明:
使用方式参见参数-mmultiport--source-port。
(11)参数-mmultiport--port
示例:
iptables-AINPUT-ptcp-mmultiport--port22,53-jACCEPT
功能:
参数-mmultiport--port用来匹配源端口号和目的端口号相同的数据包。
说明:
这个参数比较特殊,要求源端口号和目的端口号必须相同。
例如:
如果来源端口号为22但目的地端口号为53,这种数据包并不算符合匹配条件。
(12)参数--icmp-type
示例:
iptables-AINPUT-picmp--icmp-type8-jACCEPT
功能:
参数--icmp-type用来匹配icmp协议的类型编号,实际上,允许其他机器主动ping本机。
说明:
关于icmp协议的类型编号,既可以使用代码也可以使用数字编号来进行匹配;可以通过输入iptables-picmp--help来查看有哪些代码可用。
(13)参数-mlimit--limit数量1--limit-burst数量2
示例:
iptables-AINPUT-