2011年(65)
分类: LINUX
2011-08-20 00:39:09
iptables介绍:
一,内置的5个chains(五个规则链):
INPUB--检查所有进来的
OUTPUT-- 检查所有出去的
FORWART--经过本机转发的
PREROUTING--刚进入网络还没做路由的那一刻
POSTROUTING--即将离开的那一刻
二,两种策略:
“通”测策略(默认门是关着的,必须定义谁能进)
”堵“策略 (默认门是默认开着的,定义不允许谁进)
三,三种表:
允许/不允许--filter表
地址转换--nat表
修改报文原数据--mangle表
四,三表五链之间的对应关系:
filter--- INPUT FORFARD OUTPUT
nat--- PREROUTING OUTPUT POSTROUTING
mangle--- PREROUTING INPUT FORWARD OUTPUT POSTROUTING
五,规则链的顺序:
数据包自上而下来匹配规则链,匹配到之后就不往下匹配了,所有规则链的顺序很重要
规则越严格越要放的靠上。
可以自定义链,可以写链,也可以删,但只能删自定义的,自定义链自己是不会默认启用的,只有跟内置链结合起来才可以使用。
六,iptables/netfilter
iptables [-t table] COMMAND chain CRETIRIA -j ACTION(-t 如果不指名,则默认为filter)
eg:iptables -t filter -R INPUT -s 192.168.0.6/24 -p udp --dport 53 -j DROP
剖析各个选项:
-t table (filter,nat,mangle)
1》 COMMAND:
1,链管理命令
-P 设置默认策略
iptables -P INPUT|OUTPUT|FORWARD {DROP|ACCEPT}
eg:iptables -P INPUT DROP(删除默认的INPUT链)
-F (flush)
iptables -F 清掉所有规则(注意:清规则之前应把默认规则改过来,改成accept)
iptables -t nat -F (清空nat表的所有链)
-N (new-chain)
iptables -N inbound_tcp_web
-L(--list)
iptables -L -n
-X 删除用户自定义的空链
-E oldname newname
-Z 清空链中规则的计数器(--zero)
2,规则管理命令
-A (追加)
-I 链名 num(insert 插入到第几条)
-R 链名 num (替换第num条规则)如果没指定num,则从第一条开始替换。
eg:iptables -t filter -R INPUT 2 -s 192.168.0.0/24 -d 192.168.0.6 -p tcp --dport 22
-m state --state ESTABLISHED -j ACCEPT
-D 链名 num (删除第几条)
3,查看规则命令
-L (--list)
-n
-v -vv -vvv(详细显示规则信息,v越多越详细)
-x
--line-numbers (显示的时候把行号也显示出来)
2》 CRETIRIA(匹配标准):
1,通用匹配
-s 指定源地址匹配(不能是主机名,必须是ip)
IP NETWORK/NETMASK 默认是 0.0.0.0/0.0.0.0
-d 匹配目标地址
IP NETWORK/NETMASK 默认是 0.0.0.0/0.0.0.0
-p {tcp|udp|icmp}匹配协议
-i eth0 (指定流入接口)用于PREROUTING INPUT FORWARD
-o eth0 (指定流出接口)用于FORWARD OUTPUT POSTROUTING
2,扩展匹配
隐含扩展
-p tcp
--dport 21-23(可以指定多个端口,也可以启动一个)
--sport
--tcp-flags 检查的标志位 必须为1的标志位 SYN ,ACK,FIN,PSH,RST,URG
--tcp-flags syn,ack,fin,rst syn(检查这四个tcp位,syn为1,其他为0)
-P udp
--dport
--sport
-p icmp
--icmp-type 8|0(匹配ping出去的数据包)
echo-request 8
echo-reply 0
-m state
--state NEW,ESTABLISHED
--state ESTABLISHED
状态(state)检测:
NEW 新发起的连接
ESTABLISHED 已建立的连接
INVALID 无法识别的连接
RELATED 具有关联关系的连接
显式扩展
-p tcp -m multiport --dports 21,23,80
3》 -j ACTION
DROP (悄悄丢弃)
REJECT (明确拒绝,拒绝并通知你)
ACCEPT
custom_chain(转向一个自定义的链)
DNAT
SNAT
MASQUERADE
REDIRECT (重定向)
MARK
RETURN
eg:iptables -t filter
让规则下次开机生效的方法:
1,使用service iptables save命令将规则保存
默认保存在/etc/sysconfig/iptables(下次开机就自动生效了)
2,手动让其生效
iptables-save > /etc/sysconfig/iptables.2(将规则写到这个文件里)
iptables-restore < /etc/sysconfig/iptables.2(开机后自己执行此命令,重读规则)