Linux平台下数据包过滤防火墙的研究与实践
2012-07-09韩严
【 摘 要 】 随着Internet的普及,网络的安全显得尤为重要。Linux提供的基于Netfilter/iptables的防火墙,具有通用性和可扩展的特点,实现了一种性价比较高的安全方案,可以有效地阻止恶意攻击,成为很多网络管理员的选择。
【 关键词 】 Netfilter;Iptables;Linux;包过滤;防火墙
TheResearchandPracticeofPacketFilteringFirewallBasedonthePlatformofLinux
Han Yan
(English College of Dalian University LiaoningDalian 116622)
【 Abstract 】 With the popularization of the internet, the security of network is more and more concerned . Netfilter/iptables framework firewall in Lin-ux Kernel that have the characteristic of general availability, extensible, and they implement a liable safety scheme. It can effectively prevent hostility attack, and becomes choices of many administrators of network.
【 Keywords 】 netfilter; iptables; linux; packet-filtering; firewall
0 引言
网络安全需要解决的主要问题是在使用互联网时如何保护单位或私人的内部网络免受外部攻击。防火墙是指一个能把内部计算机网络与互联网隔开的屏障,它由计算机硬件和特殊的软件有机结合而成,使内部计算机网络与互联网之间建立起一个安全的网关,从而保护内部计算机网络免受外部非法用户的入侵。
1 包过滤防火墙
1.1 实现原理
防火墙一般分为数据包过滤型和代理服务器型。考虑到病毒及黑客软件发出大量的网络数据包造成网络主干部分堵塞等因素,一般多可采用包过滤防火墙技术,制定相应的数据包过滤规则,对各种类型的传输协议数据包做过滤。内部的网络需要以防火墙为网关,所有内部网络所发出的数据包都会经过此防火墙,所有的数据包都需要套用包过滤规则。通过分析和查看数据包的包头信息,完成丢弃(阻拦)或接受(放行)数据包的目的。而外部数据包要进入内部网络也需要经防火墙做包过滤。
1.2 操作流程
数据包过滤是通过对数据包的IP头和TCP或UDP头的检查来实现,主要包括:IP源地址;IP目的地址;协议(TCP包、UDP包和ICMP包);TCP或UDP包的源端口;TCP或UDP包的目标端口;ICMP消息类型;TCP包头中的ACK位;数据包到达的端口;数据包出去的端口。
2 Netfilter/Iptables结构及工作原理
2.1 总体结构
Linux提供的防火墙软件包内置于Linux内核中,是一种基于包过滤型的防火墙实现技术。其中心思想是根据网络层IP包头中的源地址、目的地址及包类型等信息来控制包的流向,更彻底的过滤则是检查包中的源端口、目的端口以及连接状态等信息。
Netfilter/Iptables 是与最新的 2.4.x 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到LAN和或因特网和代理服务器,则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。Netfilter是Linux核心中一个通用架构,用于扩展各种服务的结构化底层服务。它提供一系列的表(Tables),每个表由若干链(Chains)组成,而每条链中可以由一条或数条规则(Rule)组成。它可以和其它模块(如Iptables模块和Nat模块)结合起来实现包过滤功能。Iptables是一个管理内核包过滤的工具,可以插入或删除核心包过滤表格中的规则。实际上真正来执行这些过滤规则的是Netfilter 。
2.2 数据包过滤过程
Netfilter/Iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时防火墙所遵循和组成的规则。规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在所谓的链中。
虽然Netfilter/Iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件 Netfilter 和 Iptables 组成。Netfilter 组件也称为内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。Iptables 组件是一种工具,也称为用户空间,它使插入、修改和除去信息包过滤表中的规则变得更容易。
3 Netfilter/Iptables防火墙的应用
对于连接到网络上的 Linux 系统来说,防火墙是必不可少的防御机制,它只允许合法的网络流量进出系统,而禁止其它任何网络流量。为了确定网络流量是否合法,防火墙依靠它所包含的由网络或系统管理员预定义的一组规则,这些规则告诉防火墙某个流量是否合法以及对于来自某个源、至某个目的地或具有某种协议类型的网络流量要做些什么。
下面是在Linux平台下,使用Netfilter/Iptables建立的一些典型包过滤防火墙的应用。
(1)内容过滤,对数据包中含有“腾讯”、“色情”、“广告”等字段内容的所有网站进行屏蔽。
iptables -I FORWARD -m string --string "腾讯" -j DROP
iptables -I FORWARD -s 192.168.1.1 -m string --string "qq.com" -j DROP
iptables -I FORWARD -d 192.168.1.0/24 -m string --string "宽频影院" -j DROP
iptables -I FORWARD -s 192.168.1.0/24 -m string --string "色情" -j DROP
iptables -I FORWARD -p tcp --sport 80 -m string --string "广告" -j DROP
(2)并发连接,只允许每个IP同时使用5个80端口转发,超过的丢弃。主要可以限制内网用户的网络使用,对服务器而言则可以限制每个IP发起的连接数。
iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP
(3)IP范围限制,允许地址范围为192.168.1.1- 192.168.1.200的数据包通过。
iptables -A FORWARD -m iprange --src-range 192.168.1.1-192.168.1.200 -j ACCEPT
(4)封杀BT类的P2P软件,限制网络用户使用BT软件占用大量网络带宽下载网络资源。
iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP
iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP
iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP
(5)速度匹配扩展,指定单位时间内允许通过的数据包数量,限制每小时通过100个数据包。
iptables –A INPUT –m limit –limit 100/hour
(6)WWW服务,设置Etho允许目的为内部网WWW服务的数据包。
iptables -A FORWARD -p tcp –d $WWW-SERVER –dport www –I etho –j ACCEPT
(7)ICMP包过滤,防止黑客使用ICMP进行攻击,对来自任何地方的ICMP包进行限制,允许每秒通过一个包,触发条件是10个包。
iptables -A FORWARD -p imcp -m limit –limit 1/s –limit-burst 10 –j ACCEPT
(8)防火墙策略,设置防火墙FORWARD链的策略为DROP
iptables –P FORWARD DROP
4 结束语
基于Netfilter/Iptables的Linux包过滤防火墙的应用,通过制定有效的防火墙规则,不仅可以保护内部网络用户的安全,确保用户能够正常使用内部网络和互联网资源,同时也为核心网络管理人员提供一个学习和提高的机会。
参考文献
[1] Smar Training工作室,梁如军等.Red Hat Linux 9网络服务[M].北京:机械工业出社,2004.02.
[2] 赵海全,曾详萍.基于Linux系统的校园网安全设计方案[J].电脑与信息技术,2004.
[3] 潘瑜.基于Linux环境的网络安全防火墙和入侵检测系统的研究[J].江苏技术师范学院学报,2005.
[4] http://www.xxlinux.com/linux/article/network/security/20061025/5378.html.
作者简介:
韩严(1973-),男,实验师;研究方向:多媒体教学、网络技术。