[转帖]Linux 防火墙 IPtables 全攻略 IPtables之三:显式扩展规则_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3595 | 回复: 0   主题: [转帖]Linux 防火墙 IPtables 全攻略 IPtables之三:显式扩展规则        下一篇 
Leon
注册用户
等级:少校
经验:1436
发帖:116
精华:7
注册:2013-1-4
状态:离线
发送短消息息给Leon 加好友    发送短消息息给Leon 发消息
发表于: IP:您无权察看 2013-1-9 9:49:26 | [全部帖] [楼主帖] 楼主

对于显式扩展与隐式扩展的区别,先分析以下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-迷失在欲望之中” 博客,请务必保留此出处http://lustlost.blog.51cto.com/2600869/940735




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论