加载中…
个人资料
Hitman
Hitman
  • 博客等级:
  • 博客积分:0
  • 博客访问:12,380
  • 关注人气:2
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

iptables模块和用户自定义链

(2013-03-30 11:06:25)
标签:

iptables

linux

防火墙

分类: 我不知道的事


 

multiport模块 

 

可以使用multiport模块统一一次指定多个端口。

在写规则时,必须指定“ -m ”参数来检查状态

-m  stat --state  检测包状态

-m multiport这个模块可以匹配一组源或者目的的端口号,最多达15个端口;

如后面跟: 

--source-ports  22,80

--destination-ports 80,53,110,443

如下面完整示例:

1、iptables -A INPUT -p all -m state --state  ESTABLISHED,RELATED  -j  ACCEPT

2、Iptables -A INPUT -p tcp --syn -m state --state NEW -m multiport --dports 21,80,443,8080 -j ACCEPT

 


iprange 模块

 

    当需要为防火墙指定一段连续的IP地址时,这时最原始的方法,你可能需要添加很多条防火墙规则记录,而且一旦之后需要对其更改,那工作量也不小。而此时,我们可以利用iprange 模块的优势,将原本需要多条规则记录的方式,精简成一条规则。当然前提需要是连续的IP段。

如下面完整示例:

Iptables -A INPUT -m iprange --src-range 192.168.0.100-192.168.0.120 -j ACCEPT

 

 


处理方法

 


Netfilter内置了一些简单的处理方法:

ACCEPTDROP处理方法,这两种是最常见的处理方法,分别是允许与不允许数据包进入系统。

如:

iptables -A INPUT -p tcp -d 192.168.0.0/24 -j ACCEPT

iptables -A INPUT -p tcp -d 192.168.1.0/24 -j DROP

 


QUEUE处理方法

    这种处理方法,首先需要经过netfilter的条件匹配,若符合,则主要是依赖用户空间的应用程序来进一步地对数据包进行处理,分析,然后再经过选择后将数据包传出。而在用户空间的应用程序可以是“杀毒软件”,“邮件过滤分析软件”但目前对应这种机制的的应用程序非常少。

如:

iptables -A FORWARD -p tcp -d 192.168.0.200 --dport 25 -j QUEUE


RETURN处理方式

 

 

    以上的几种处理方式大家可能都比较熟悉,还有一种RETURN的方式大家知道么?要来了解RETURN方式,需要先了解用户自定义链的概念。

 

 


用户自定义链

 

    大家对于INPUT,FORWARD,OUTPUT等链应该都比较熟悉,但是用户定义链(User Define Chain)呢?这又是什么概念,它有什么用处?

 

例如在上面所提及的三个基本链,在其中我们还可以扩充任意的新的链,而这些由我们自己创建的链称之为用户定义链。

 

    那么我们先来看下如何来创建,修改,删除,这些用户定义链;

首先是添加链,如下图,添加一个叫做WEB_S0的链,因为我没有特定指定表,所以在此示例中所用的是默认filter表。若要指定其他表,则需要加上“-t ”参数,如:“-t nat”;


iptables模块和用户自定义链


 

    然后我们来更改一下用户定义链的名字,将WEB_S0改成EDB_S0

 


iptables模块和用户自定义链

 

    

    然后我们将删除EDB_S0这个链;

 


iptables模块和用户自定义链

 


    若在用户定义链中有规则,则删除链的命令将会失败,其实这也是人为避免误删链。这种情况下,需要先清除规则,再删除用户定义链。

      

    基本的用户自定义链的操作如上都很简单,那么对于用户自定义链的工作方式你知道是如何的吗?如何将用户自定义链与默认的表链结合起来使用呢?

 

    首先需要了解的一点,当数据包经过netfilter时,默认是不会经过任何的用户自定义链的。即使你在之前的步骤定制了详细的过滤规则,其实都是没应用上的。那么我来看下如何将其中的某个链与我们的用户自定义链。

 

    示例:iptables -A INPUT -p icmp -j NOICMP

iptables模块和用户自定义链

    如同上面示例中,我们将INPUT链绑定我们的用户自定义链NOICMP,(前提NOICMP中已经做了针对ICMP包的DROP动作)使过滤出的ICMP包直接传到NOICMP的用户自定义进行过滤。过滤完成之后再回到INPUT链继续匹配。

    那么我们又回过头来说说RETURN的概念。当我们的数据包随着被传到NOICMP的自定义链后,我们还可以通过RETURN的这个动作,让符合匹配后的数据流提前重新返回INPUT链。



0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有