首 页 教育新闻课件中心论文中心教学教案试题中心语文专题综合下载技术教程公务员  
设为首页
加入收藏
联系我们
您当前的位置:中国教育资源网 -> 技术教程 -> 网络相关 -> 服务器 -> Web服务器 -> 技术内容 退出登录 用户管理

防火墙软件Netfilter之包过滤技术Web服务器教程

论文作者:佚名  论文来源:不详  论文发布时间:2006-6-18 21:53:36  论文发布人:chjchjchj

减小字体 增大字体

              摘要:防火墙软件Netfilter之包过滤技术

如果您不知道什么是IP地址、网络地址、网络掩码、路由或者DNS,那么,请先阅读相关的网络基础书籍。


 


1.什么是包过滤(Packet Filter)?


包过滤技术就是利用一些软件来查看收到包的头部,然后决定整个包的命运。要么DROP这个包(例如丢弃这个包,就像没有收到一样);要么Accept这个包;或者更复杂的动作。在Linux下,包过滤被编译到内核中。


 


2.为什么要用包过滤


控制:


能够允许某些类型的包通过,或者不允许某些类型的包通过。例如,包的头部含有目的地址的信息,因此,您可以设置过滤规则禁止网络内部的包到达某些外部的网络地址。举个实例,当你用netscape浏览Dilbert文档时,在它的页面上会出现来自doubleclick.net的烦人广告,让包过滤禁止任何去或者来自doubleclick.net的包就可以解决问题了。


安全:


如何在混乱的Internet和您的有序的网络之间通信?设置了防火墙来把守您的大门是十分必要的。例如,您可以允许任何包出去,但是对著名的“Ping of Death”(来自外部的攻击者)感到焦虑。又例如,您不允许外部telnet到内部的机器(尽管每个用户都有密码)。等等,都可以通过设置规则解决。


警觉:


有时候一台配置不好的内部机器向外面喷涌发包。包过滤能够及时向网络管理员报告此类异常,这样,管理员就能够做出相应的行动,以防不测。


 


3.Linux包过滤的发展史


l Ipfw 1994, coming from BSD, 内核2.0,工具ipfwadm


l Ipchains 1998, based on the ipfw, 内核 2.2,工具ipchains


l Netfilter 1999, based on the ipchains, 内核2.3.15~2.4, 工具iptables


(包过滤源代码直接嵌入在内核中,工具iptables作为一个模块,可以嵌入,也可以不)


 


4.Iptables


新一代的工具,比ipchains和ipfwadm更加强大,对IPv6的支持更好。


 


5.Iptables快速指南


大多数人只有一个单独的PPP连接到Internet,但是不想任何人访问他们的内部网络或者放火墙,可以如下设置:


## Insert connection-tracking modules (not needed if built into kernel).


# insmod ip_conntrack


# insmod ip_conntrack_ftp


 


## Create chain which blocks new connections, except if coming from inside.


# iptables -N block


# iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT


# iptables -A block -m state --state NEW -i ! ppp0 -j ACCEPT


# iptables -A block -j DROP


 


## Jump to that chain from INPUT and FORWARD chains.


# iptables -A INPUT -j block


# iptables -A FORWARD -j block


 


6.包如何通过netfilter


内核在过滤表中维持了3个规则列表,这些列表叫做firewall chains。这3个chains分别叫做INPUT, OUTPUT 和FORWARD。如下图:


 


Incoming /--------- Outgoing


----------->[Routing ]--->|FORWARD|------------->


[Decision] \_____/ ^


| |


v ____


___ /


/ |OUTPUT|


|INPUT| \____/


\___/ ^


| |


-----> Local Process -----------


 


当包经过相应的chain时,这个chain将决定这个包的命运。如果chain认为DROP,就丢弃这个包;如果认为ACCEPT就继续在图中旅行。每一个chain是众多规则的检查表。规则的格式为:“如果包头部看起来象某个东西,然后对这个包做某个动作”。如果一条规则与包头部不匹配,继续检查chain中的下一条规则。一旦找到匹配的,执行相应的动作。否则,一条匹配的都没有,就检查chain的安全策略。通常是DROP。过程如下:


l 当一个包到达(如以太网接口),内核首先检查包的目的地址,这叫做“路由”


l 如果包的目的地址是本机,包将继续在上图中旅行,到达INPUT chain,如果通过了这个chain,那么任何需要这个包的进程都可以收到


l 目的地不是本机,如果内核不允许包转发,或者不知道如何转发,DROP这个包;如果内核允许转发,并且包需要经过另一块网络接口(在您的机器上至少有两个网络接口),那么包将在图中旅行到FORWARD chain,如果通过这个chain,包就可以送出了


l 本机程序发出的包必须经过OUTPUT chain,如果能够通过这个chain,那么这个包就可以送到相应的网络接口并发出


 


7.使用iptables


iptables有一个非常详细的帮助文件(man iptables),跟ipchains有很多类似之处。


下面列出管理chain的一些参数:


Create a new chain (-N). 产生一个新的chain


Delete an empty chain (-X). 删除一个空的chain


Change the policy for a built-in chain. (-P). 修改安全策略


List the rules in a chain (-L). 列出chain的规则


Flush the rules out of a chain (-F). 清空所有规则


Zero the packet and byte counters on all rules in a chain (-Z). 所有规则包和字节数清零


 


管理一个chain内部的规则:


Append a new rule to a chain (-A). 加入一个新的规则


Insert a new rule at some position in a chain (-I). 在一个chain的某个位置加入新的规则


Replace a rule at some position in a chain (-R). 在一个chain的某个位置替换规则


Delete a rule at some position in a chain (-D). 在一个chain的某个位置删除规则


Delete the first rule that matches in a chain (-D). 删除与chain匹配的第一条规则


 


8.计算机启动


iptables可以作为一个模块(iptable_filter.o),当你运行iptables时候自动装载,或者永久的编译到内核中。


在任何iptables命令执行之前,三个chain的缺省安全策略是“ACCEPT”。可以修改FORWARD chain的策略,把iptable_filter模块的选项中的forward=0。


 


9.单条规则的操作


用前面介绍的 –A(append) –D(delete) –I(insert) –R(replace)。


每一条规则首先描述包需要满足的条件,然后描述相应的动作(目标)。例如,如果你想DROP掉所有的来自地址127.0.0.1的ICMP包。因此,规则的条件为:协议ICMP、源地址127.0.0.1;规则的目标为DROP。


127.0.0.1是一个loopback接口,即使你没有真正的网络接口都可以用。你可以用ping命令来产生这样的包,用于测试。例如:


# ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms


 


--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.2 ms
现在加上规则:


# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP


再试试:


# ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes


 


--- 127.0.0.1 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss


您可以看到这样的包已经被过滤掉了。


-A选项选择chain,我们设为INPUT chain;-s 源地址,我们设为127.0.0.1;-p协议,我们设为ICMP;-j 表示jump,我们设为jump到DROP。


我们也可以删除规则

[] [返回上一页] [打 印] [收 藏]  
 ∷相关技术评论  (评论内容只代表网友观点,与本站立场无关!) [查看发表评论...]
 
 中国教育资源网免费技术教程下载中心-站内广告 站内广告 中国教育资源网免费技术教程下载中心-站内广告 
 中国教育资源网站内搜索 站内搜索 中国教育资源网站内搜索 
 

   
 中国教育资源网免费技术教程下载中心-栏目导航 栏目导航 中国教育资源网免费技术教程下载中心-栏目导航 
· Windows 9XMEXP · Windows NT20002003
· LinuxBSD · 系统综合
· IISApache · 硬件技术
· Web服务器 · FTP服务器
· 邮件服务器 · 域名服务器
· Windows服务器 · 代理服务器
· 服务器综合
 
中国教育资源网免费技术教程下载中心-相关教程  相关技术 中国教育资源网免费技术教程下载中心-相关教程
· 邮件过滤技术Web服务
· 防火墙软件Netfilte
· [组图] 专业的防火墙软件 个
 中国教育资源网免费技术教程下载中心-本月热门教程 本月热门 中国教育资源网免费技术教程下载中心-本月热门教程 
 
 中国教育资源网免费技术教程下载中心-本日热门论文 本日热门 中国教育资源网免费技术教程下载中心-本日热门论文 
 
关于本站 - 网站帮助 - 免费课件 - 美容 - 绿色软件 - 软件下载 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 网站留言
浙ICP备06010405号 Email:cnkjz@163.com 技术支持:名流设计
版权所有 Copyright© 2002-2004 名流