linux iptables 防火墙

iptables包含有4个表,5个链,链在表中。html

4个表:filter,nat,mangle,raw。linux

默认表是filter(在没有指定表的清空),表的优先级:rawtcp

>mangle>nat>filter.ide

filter:通常的过滤功能。
性能

nat:用于nat功能(端口映射,地址映射,)spa

mangle:对特定数据包的修改.net

raw:有限级最高,设置raw时通常是为了避免再让iptables作数据包的连接跟踪处理,提升性能orm


5个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。htm

     INPUT:     位于 filter 表,匹配目的 IP 是本机的数据包 
     FORWARD:   位于 filter 表,匹配穿过本机的数据包, 
     PREROUTING: 位于 nat 表,用于修改目的地址(DNAT) 
     POSTROUTING:位于 nat 表,用于修改源地址 (SNAT)ip


PREROUTING:数据包进入路由表以前

INPUT:经过路由表后目的地为本机

FORWARDING:经过路由表后,目的地不为本机

OUTPUT:由本机产生,向外转发



120807094039061.gif

120807094039062.gif


iptables语法使用:

iptables [-t 表名     <操做命令>   [要操做的链]  [规则号码]      [匹配条件]    [-j 匹配到之后的动做] 

  操做命令:(-A -I -D -R -P -F)

  -A <链名>:增长一条规则(在全部规则的后面)

    例如:iptables -t filter -A INPUT -j DORP  

     #在filter表INPUT链中增长一条规则,匹配全部访问本机ip的数据包,匹配到了就丢弃。

  -I <链名> [规则号码]:插入一条规则

    例如:iptables -I INPUT 3 -j DORP

在filter表INPUT链插入一条规则,插入为第3条,前面必需要有2条规则.若是没有规则号码,默认为1,

 -D <链名> [规则号码|链的内容]:删除一条规则

    例如:iptables -D INPUT 2 

    #删除filter表INPUT链的第2条规则

     iptables -D INPUT -s 192.168.0.1 -j DROP

      删除filter表INPUT链内容为 -s 192.168.0.1 -j DROP 的规则

      若规则列表中有多条相同的规则时,按内容匹配只删除序号最小的一条 

  -R <链名><规则号码><内容>:替换一条规则

    例如:iptables -R INPUT 3 -j ACCEPT

     将规则号3的内容替换为‘-j ACCEPT’

  -P <链名> <动做> :设置某个链的默认规则

   例如:iptables -P INPUT DORP

      设置 INPUT表的默认规则为DROP.若是数据包没有匹配大规则里的任何规则,就匹配默认规则

 -F <链名>:状况规则

  例如:iptables -F INPUT 

     清空INPUT链的全部规则,-F仅是清空链中规则,-P设置的默认规则不被清空。


查看命令 [-(vnx)L]

  -L<链名>:列出规则(通常用iptables -nvL)

   v:显示详细信息

   x:在v的基础上,禁止自动单位换算(K,M)

   n:只显示ip地址和端口,不显示域名和服务

  例如:iptables -nvL   #详细列出filter表全部链的规则

      iptables -t nat -nvL OUTPUT #列出nat表OUTPUT链的规则


匹配条件

-i:流入    -o:流出

-s:来源地址    -d:目的地址

-sport:来源端口 -dport:目的端口

-p:协议类型  


-i和-o(匹配数据从网口的进和出)

-i eth0 #匹配从eth0网口进来的数据包

-o eth1 #匹配从eth1网口出去的数据包


-s(匹配来源地址)能够是ip,网段,域名也能够为空(全部地址)

 -s 192.168.10.130   #匹配来自192.168.10.130的数据包

 -s 192.168.10.130/24 #匹配来自192.168.10.130/24网段的数据包


-d(匹配目的地址)能够是ip,网段,域名也能够为空(全部地址)

 -d www.cong.com 匹配去往域名www.cong.com的数据包


-p(匹配协议类型)能够为tcp udp icmp等,也可为空

 -p tcp

 -p udp


--sport(匹配来源端口)能够是个别端口,也能够是端口范围

 --sport 80 匹配源端口是80的数据包

 --sport 80-8080 匹配源端口80-8080的数据包(含80,8080)

 --sport :80 匹配源端口是80如下的数据包(含80)

 --sport 80: 匹配源端口是80以上的数据包(含80)


--dport(匹配目的端口)能够是个别端口,能够是端口范围

 --dport 80 匹配目的端口是80的数据包

 --dport 80-8080 匹配目的端口80-8080的数据包(含80,8080)

 --dport :80 匹配目的端口是80如下的数据包(含80)

 --dport 80: 匹配目的端口是80以上的数据包(含80)

--sport 和--dport必须配合-p参数使用,必须指明协议类型


匹配举例

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

在INPUT增长一条规则匹配 协议类型为tcp 目的端口为80的规则操做为放行经过

iptables -I OUTPUT -s 192.168.10.12 -d 192.168.10.131 -j ACCEPT

在OUTPUT插入一条 匹配源地址192.168.10.12目的地址192.168.10.131的规则,放行经过 

-s 192.168.10.12 -d www.cong.com -p tcp --dport 80

匹配来自192.168.10.12到www.cong.com 的80端口,tcp协议的数据包


动做/处理方式

 ACCEPT:经过,容许数据包经过,不拦截

 DROP:丢弃,阻止数据包经过本链而丢弃它

 SNAT:源地址转换 能够是单个ip也能够是ip地址池

 DNAT:目的地址转换 能够是单个ip也能够是ip地址池

 MASQUERADE:动态源地址转换

 REDIRECT:用于把数据包转发到另外一个端口

 REJECT:和DROP同样,可是DROP不返回信息,REJECT能够返回指定错误信息


-j ACCEPT

  匹配到的数据包容许经过

-j DROP

  匹配到的数据包不容许经过,丢弃

-j SNAT --to ip[-ip:端口-端口](在nat表的POSTROUTING链)

 例:iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to 1.1.1.1

    iptables -t nat -A POSTROUTING -s 192.168.10.12 -j SNAT --to 1.1.1.1-1.1.1.10


-j DNAT --to ip[-ip:端口-端口](在nat表的PREROUTING链)

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.10.12:80

iptables -t nat -A PREROUTING -d 192.168.10.12 -j DNAT --to 127.0.0.1


-j MASQUERDE

  iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE 
 将源地址是 192.168.0.0/24 的数据包进行地址假装

-j REDIRECT

  iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

 访问数据包访问的80端口转换为8080端口

-j REJECT

iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with icmp-net-unreachable



附加模块

按包状态匹配(state)

按来源MAC匹配(mac)

按包速率匹配(limit)

多端口匹配(multiport)


state -m state --state状态

状态:

NEW:创建新的链接

RELATED:相关的 

ESTABLISHED:已创建链接

INVALID:无效的


iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT


mac  -m mac --mac-source MAC

     iptables -A FORWARD -m --mac-source xx:xx:xx:xx:xx:xx  -j DROP

  mac地址不能经过路由,因此不要去匹配路由后面的MAC地址


limit  -m limit --limit 速率

  iptables -A FORWARD -d 192.168.10.130 -m limit --limit 50/s -j ACCEPT


multiport (--sports|--dports|--ports)

 iptables -A INPUT -p tcp -m multiports --ports 22,25,80 -j ACCEPT

必须与-p参数一块儿使用


参考:http://www.jb51.net/os/RedHat/1335.html

    http://www.linuxidc.com/Linux/2012-08/67505.htm

相关文章
相关标签/搜索