iptables :包过滤型防火墙
功能:
filter:过滤,防火墙
nat:network address translation 网络地址转换
mangle:拆解报文,做出修改,封装报文。
raw:关闭nat表上启用的连接追踪机制
流入:PREROUTING-->INPUT
流出:OUTPUT-->POSTROUTING
转发:PREROUTING-->FORWARD-->POSTROUTING
各功能的分别实现;
filter:INPUT,FORWARD,OUTPUT
nat:PREROUTING,OUTPUT,POSTROUTING
mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
raw:PREROUTING,OUTPUT
路由发生的时刻;
报文进入本机后;
判断目标主机
报文发送之前;
判断经由哪个接口送往下一跳
iptables:四表五链
四表:filter,nat,mangle,raw
五链;INPUT,FORWARD,OUTPUT,PREROUTING,POSTROUTING
添加规则要点:
1.实现哪种功能,判断添加在哪张表
2.报文流经的路径,判断添加在哪个链上
链:链上规则的次序,即为检查的次序。
1.同类规则(访问同一个应用),匹配范围小的放上面
2.不同类规则(访问不同应用),匹配到报文频率大的放上面
3.将那些可由一条规则描述得多个规则合并为一个
4.设置默认策略
功能优先级次序:raw,mangle,nat,filter
规则:
组成部分;报文的匹配条件,匹配到之后处理动作
匹配条件:根据协议报文特征指定
基本匹配条件
扩展匹配条件
处理动作:
内建处理机制
自定义处理机制
注意:报文不能经过自定义链,只能在内置链上通过规则进行引用后生效;
iptables:规则管理工具
添加,修改,删除,显示等;
规则和链有计数器:
pkts:由规则或链所匹配到的报文的个数
bytes:由规则或链匹配到的所有报文大小之和;
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
rule-specification = [matches...] [target]
match = -m matchname [per-match-options]
target = -j targetname [per-target-options]
iptables[-t table ]SUBCOMMAND CHAIN CRETERIA -j TARGET
-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,显示计数器计数结果的精确值。
清空:iptables -F
查看:iptables -L
查看:iptables -L -n
查看:iptables -L -n -v
查看:iptables -L -n -vvv
查看:iptables -L -n -vv
查看:iptables -t nat -L
查看:iptables -t mangle -L
查看:iptables -t raw -L
查看:iptables -t filter -L
新建:iptables -t filter -N test
删除链:iptables -t filter -X test
重命名:iptables -t filter -E test test1
修改默认策略:iptables -t filter -P FORWARD DROP
查看:iptables -t filter -L -v --line-numbers
删除规则:iptables -D INPUT 5
匹配条件:
基本匹配:
[!]-s,--src,--source IP|Netaddr :检查报文中源地址是否符合此处指定的地址范围
[!]-d,--dst,--destination IP|Netaddr :检查报文中目标地址是否符合此处指定的地址范围
-p,--protocol:检查报文中的协议,ip首部中的protocols所标识的协议;
-i,--in-interface IFAS:数据报文的流入接口;仅能用于PREROUTING,INPUT及FORWARD链上;
-o,--out-interface :数据报文的流出接口;仅能用于FORWARD,OUTPUT,POSTROUTING链上
扩展匹配:-m macth_name --spec_options
例如:-m tcp --dport 22
隐私扩展:对-p protocol指明的协议进行的扩展,可以省略-m选项
-p tcp
--dport 端口:目标端口可以一个或多个
--sport 端口:源端口
只允许22号端口通过TCP连接
iptables -I INPUT -d 172.16.6.14 -p tcp --dport 22 -j ACCEPT
iptables -I OUTPUT -s 172.16.6.14 -p tcp --sport 22 -j ACCEPT
--tcp-flags:列表1,列表2:检查列表1中所指明的所有标志位,且这其中,列表2所标识出的所有标志位必须为1
而余下的必须为0,没在列表中指明的,不做检查。
SYN,ACK,FIN,RST,PSH,URG
--tcp-flags SYN,ACK,FIN,RST SYN
--syn:新建TCP连接的第一次请求
-p icmp
--icmp-type
可以用数值标识类型:一般0 或8
0:echo-reply
8:echo-request
iptables -A INPUT
-p udp
--dport
--sport
显示扩展:必须使用-m
目标:
-j:jump,跳转
ACCEPT:接受
DROP:丢弃
REJECT:拒绝
RETURN:返回调用键
REDIRECT:端口重定向
LOG:记录日志
MARK:做防火墙标记
DNAT:目标地址转换
SNAT:源地址转换
MASQUERADE:地址伪装
。。。
自定义链:有自定义链上的规则进行匹配检查
允许TCP访问
iptables [-t filter] -A INPUT -d 172.16.6.14 -p tcp -j ACCEPT
iptables [-t filter] -A OUTPUT -s 172.16.6.14 -p tcp -j ACCEPT
设置默认策略
iptables -P INTPUT DROP
iptables -p OUTPUT DROP
iptables -p FORWARD DROP
允许ping
iptables [-t filter] -A INPUT -d 172.16.6.14 -p icmp -j ACCEPT
iptables [-t filter] -A OUTPUT -s 172.16.6.14 -p icmp -j ACCEP
允许某一台可以ping
iptables -A INPUT -s 172.16.6.49 -d 172.16.6.14 -p icmp -j ACCEPT
iptables -A OUTPUT -s 172.16.6.14 -d 172.16.6.49 -p icmp -j ACCEPT
允许22号端口
iptables -I INPUT -d 172.16.6.14 -p tcp --dport 22 -j ACCEPT
iptables -I OUTPUT -s 172.16.6.14 -p tcp --sport 22 -j ACCEPT
本文转自阿伦艾弗森 51CTO博客,原文链接:http://blog.51cto.com/perper/1966346,如需转载请自行联系原作者