您的位置:首页 > 其它

iptables--知识总结1

2017-06-27 15:41 120 查看

iptables:包过滤型防火墙

iptables/netfilter

framework: netfilter hooks function 网络过滤器的框架

rule utils:iptables 规则管理工具

四表五链

四表

filter:过滤,防火墙

nat:地址转换

mangle:拆解报文,作出修改,封装报文

raw:关闭nat表上启用的链接追踪标志

五链

PREROUTING

INPUT

FORWARD

OUTPUT

POSTROUTING

各功能的分别实现

filter:INPUT,FORWARD,OUTPUT

nat: PREROUTING(DNAT),OUTPUT,POSTROUTING(SNAT)

mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

raw:PREROUTING,OUTPUT

添加规则时的考量点:

(1) 要实现哪种功能:判断添加在哪张表上;

(2) 报文流经的路径:判断添加在哪个链上;

链:链上规则的次序,即为检查的次序;因此隐含一定的法则

(1) 同类规则(访问同一应用),匹配范围小的放上面;
(2) 不同类规则(访问不同应用),匹配到报文频率较大的放上面;
(3) 将那些可由一条规则描述的多个规则合并为一个;
(4) 设置默认策略;

功能的优先级次序:raw --> mangle --> nat --> filter


规则:

组成部分:报文的匹配条件,匹配到之后处理动作
匹配条件:根据协议报文特征指定
基本匹配条件
扩展匹配条件
处理动作:
内建处理机制
自定义处理机制

注意:报文不会经过自定义链,只能在内置链上通过规则进行引用后生效;


iptables命令:

iptables [-t table] {-A|-D} chain rule-specification

iptables [-t table] -I chain [rulenum] rule-specification

iptables [-t table] -R chain rulenum rule-specification

iptables [-t table] -D chain rulenum

iptables [-t table] -S [chain [rulenum]]

iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]

iptables [-t table] -N chain

iptables [-t table] -X [chain]

iptables [-t table] -P chain target

iptables [-t table] -E old-chain-name new-chain-name

-t table:
filter, nat, mangle, raw


链管理:

-F:flush,清空规则链;省略链,表示清空指定表上的所有的链;
-N:new, 创建新的自定义规则链;
-X:drop, 删除用户自定义的空的规则链;
-Z:zero,清零,置零规则计数器;
-P:Policy,为指定链设置默认策略;对filter表中的链而言,默认策略通常有ACCEPT, DROP, REJECT;
-E: rEname,重命令自定义链;引用计数不为0的自定义链,无法改名,也无法删除;


规则管理:

-A:append,将新规则追加于指定链的尾部;
-I:insert,将新规则插入至指定链的指定位置;
-D:delete,删除指定链上的指定规则;
有两种指定方式:
(1) 指定匹配条件;
(2) 指定规则编号;
-R:replace,替换指定链上的指定规则;


查看:

-L:list,列出指定链上的所有规则;
-n: numberic,以数字格式显示地址和端口号;
-v: verbose,显示详细信息;
-vv, -vvv
--line-numbers:显示规则编号;
-x: exactly, 显示计数器计数结果的精确值;


匹配条件:

基本匹配:

[!] -s, --src, --source IP|Netaddr:检查报文中源IP地址是否符合此处指定的地址范围;
[!] -d, --dst, --destination IP|Netaddr:检查报文中源IP地址是否符合此处指定的地址范围;
-p, --protocol {tcp|udp|icmp}:检查报文中的协议,即ip首部中的protocols所标识的协议;
-i, --in-interface IFACE:数据报文的流入接口;仅能用于PREROUTING, INPUT及FORWARD链上;
-o, --out-interface IFACE:数据报文的流出接口;仅能用于FORWARD, OUTPUT及POSTROUTING链上;


扩展匹配:-m macth_name –spec_options

例如:-m tcp --dport 22

隐式扩展: 对-p protocol指明的协议进行的扩展,可省略-m选项;
-p tcp
--dport PORT[-PORT]:目标端口,可以是单个端口或连续多个端口;
--sport PORT[-PORT]
--tcp-flags LIST1 LIST2:检查LIST1所指明的所有标志位,且这其中,LIST2所表示出的所有标记位必须为1,而余下的必须为0;没有LIST1中指明的,不作检查;
SYN, ACK, FIN, RST, PSH, URG

--tcp-flags SYN,ACK,FIN,RST SYN
--syn:
-p udp
--dport
--sport
-p icmp
--icmp-type
可用数字表示其类型:
0:echo-reply
8: echo-request

例子iptables -t filter -A OUTPUT -s 172.16.100.21 -p tcp -j ACCEPT
iptables -t filter -A INPUT -d 172.16.100.21 -o eth0 -j ACCEPT
iptables -t filter -A OUTPUT -s 172.16.100.21 -o eth0 -j ACCEPT
iptables-I INPUT -d 172.16.100.21 -p tcp --dport 22 -j ACCEPT
iptables -I OUTPUT -s 172.16.100.9 -p tcp -sport 22 -j ACCEPT


显式扩展: 必须使用-m选项指定使用的扩展;

目标:

-j TARGET:jump至指定的TARGET
ACCEPT: 接受
DROP: 丢弃
REJECT: 拒绝
RETURN: 返回调用链
REDIRECT:端口重定向
LOG: 记录日志
MARK:做防火墙标记
DNAT:目标地址转换
SNAT:源地址转换
MASQUERADE:地址伪装
...
自定义链:由自定义链上的规则进行匹配检查


使用iptables的一些技巧

不加表的话默认为filter

-A,-I,-D,-R后面是更改那条链的规则INPUT,FORWARD,OUTPUT

*
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iptables