IPtables之三:显式扩展规则

对于显式扩展与隐式扩展的区别,先分析以下2条规则

规则1:iptables -t filter -A INPUT -s 192.168.1.0/24 -d 172.16.100.1 -p udp –dport 53 -j DROP

规则2:iptables -t filter -A INPUT -s 192.168.1.0/24 -d 172.16.100.1 -p udp -m udp –dport 53 -j DROP

相对于规则1,在规则2上使用了-m选项,明确指定了对udp进行扩展,扩展端口为53

而对于隐式扩展,不需要使用-m选项进行明确指定,对于tcp而言,可以扩展tcp的标志位、源和目标端口,对于udp,可以扩展源和目标端口,对于icmp,可以扩展request,replay等不同数据包

下面讲讲几个常用的显式扩展:

 

显式扩展之一 state:连接状态 
-m state –-state {NEW|ESTABLISHED|RELATED|INVALID|}

在第一篇博文中提到过:包过滤防火墙可以分为“状态检测型”和“简单包过滤型” 
接下来介绍下用iptables实现状态检测包过滤

介绍tcp以下4种状态的连接

    1.NEW 
        即3次握手的第一次,一次新的请求

iptable -A OUTPUT -o eth0 -m state --state NEW -j DROP 
分析这条规则,其中-m表示扩展加载state状态检测模块,--state NEW表示检测tcp的第一次握手,整条规则的作用就是拒绝从eth0网卡发出的新的tcp连接。

    2.ESTABLISHED 
        二次握手以后,连接断开之前的连接

    3.RELATED 
        相关连的状态,可解决控制ftp连接这种超麻烦的协议

    4.INVALID 
        无法识别的状态

应用案例: 
结合NEW和ESTABLISHED这2种状态,实现以下规则 
iptables -A INPUT -d 192.168.1.1 -p tcp –dport 22 -m state –-state NEW,ESTABLISHED -j ACCEPT 
允许外面向主机发起的新的ssh请求

iptables -A INPUT -d 192.168.1.1 -p tcp -dport 80 -m state –-state NEW,ESTABLISHED -j ACCEPT 
允许外面向主机发起的新的web连接

iptables -A OUTPUT -s 192.168.1.1 -p tcp sport 22 -m state -–state ESTABLISHED -j ACCEPT 
处于连接状态时,允许主机发往外部的ssh数据包

iptables -A OUTPUT -s 192.168.1.1 -p tcp sport 80 -m state –-state ESTABLISHED -j ACCEPT 
处于连接状态时,允许主机发往外部的web数据包

iptables -P INTUP DROP 
拒绝其它所有进来的数据包

iptables -P OUTPUT DROP 
拒绝其它所有出去的数据包 
这几条规则可以用在web服务器上,只允许客户向服务器发出ssh和web请求的访问,服务器不能主动向外发出任何连接,避免服务器成为黑客的跳板

 

显式扩展之二 mport:多端口匹配 
-m {mport|multiport} 
    --source-ports 
    --destination-ports 
    --ports

此扩展可以指定不连续的端口,在这里优化以上的案例来说明其作用 
iptables -A INPUT -d 192.168.1.1 -m mport –-destination-ports 22,80,443 -m state –-state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -s 192.168.1.1 -m mport –-source-ports 22,80,443 -m state –- state ESTABLISHED -j ACCEPT

iptables -P INTUP DROP 
iptables -P OUTPUT DROP

一次可以添加多个端口,端口之间用逗号隔开

 

显式扩展之三iprange:多IP匹配 
-m iprange 
    –-src-range 
    –-dst-range

这里用一个简单的例子来说明

iptables -A INPUT -d 192.168.1.1 -m iprange –src-range 192.168.0.1-192.168.0.100 -p tcp –-dport 80 -j DROP 
拒绝192.168.0.1-192.168.0.100这段地址访问192.168.1.1的web服务

 

显式扩展之四connlimit:并发连接请求个数限制 
-m connlimit 
    –-connlimit-above

 

显式扩展之五limit:速率限制 
-m limit 
    –-limit 平均速率 
    –-limit-burst 突发速率 
iptables -A INPUT -d 192.168.1.1 -p tcp –dport 80 -m limit –-limit 10/second –-limit-burst 30  -j ACCEPT 
此条规则限制了每秒10个数据包,突发最大速率是每秒30个数据包

 

显式扩展之六limit:时间限制 
-m time 
    –-timestart 
    –-timestop 
    --days 
    --datestart 
    --datestop

区分以下两种写法来理解这几个选项的意义

iptables -A INPUT  -d 192.168.1.1 -p tcp –-dport 80 -m time –-datestart 2012:07:20:08:30:00 –-datestop  2012:07:20:14:30:00 -j ACCEPT 
从7月20号 8:30到7月30号14:30允许访问本机web服务

iptables -A input -d 192.168.1.1 -p tcp –-dport 80 -m time –- timestart 08:30:00 –-timestop 14:30:00 –-datestart 2012:07:20 –-datestop 2012:07:30 -j ACCEPT 
从7月20号到7月30号 每天的8:30—14:30时分允许访问本机web服务

 

显式扩展之七string:字符限制(对中文字符匹配有限) 
-m string 
    –-algo bm|kmp 指定字符匹配算法 
    --string 指定字符

iptables -A out -s 172.16.100.1 -p tcp –-sport 80 -m string –-algo kmp –string “baidu.com” -j DROP 
包含baidu.com的数据包都拒绝


本文转自lustlost 51CTO博客,原文链接:http://blog.51cto.com/lustlost/940735,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值