Linux防火墙应用及DDOS攻击的防范探讨论文 联系客服

发布时间 : 星期四 文章Linux防火墙应用及DDOS攻击的防范探讨论文更新完毕开始阅读31128a679e314332396893f0

图1 Netfilter/Iptables框架结构示意图

2、安装和启动Netfilter/iptables系统

因为Netfilter/iptables的netfilter组件是与内核2.4.x集成在一起的,高版本的Linux都配备了netfilter这个内核工具,所以一般不须要下载,而只要下载并安装iptables用户空间工具的源代码包,下载的网址为:http://www.netfilter.org/projects/iptables/downloads.html。目前,最新源代码安装包是:iptables-1.4.10.tar.bz2。 下面是安装源代码包的步骤: //将源代码文件解压缩

#bzip2 -d iptables-1.4.10-tar.bz2 #tar -xvf iptables 1.4.10.tar //切换目录

#cd iptables 1.4.10

//编译该工具,指定编译的内核目录为/usr/src/linux-2.6.4-8 #make KERNEL_DIR=/usr/src/linux-2.4.16-8

//执行make install命令,同样设定内核目录为/usr/src/linux-2.6.4-8 #make install KERNEL_DIR=/usr/src/linux-2.6.4-8

? 安装完成后,就可以启动防火墙了,下面是启动iptables的命令: //使用service命令手工启动 # service iptables start

如果想要在系统启动的时候也启动该防火墙服务,那么可以使用setup命令,然后进入System service选项,选择iptables守护进程即可。 3、Iptables简单应用 1) 基本规则应用

下面将给出运用上述框架理论形成规则的一些简单示例,以供读者在实际的应用过程中进行模仿和使用:

(1)接受来自指定IP地址的所有流入的数据包: #iptables -A INPUT -s 203.159.0.10 -j ACCEPT (2)只接受来自指定端口(服务)的数据包: #iptables -D INPUT --dport 80 -j DROP

(3)允许转发所有到本地(198.168.10.13)smtp服务器的数据包:

#iptables -A FORWARD -p tcp -d 198.168.10.13 --dport smtp -i eth0 -j ACCEPT (4)允许转发所有到本地的udp数据包(诸如即时通信等软件产生的数据包): #iptables -A FORWARD -p udp -d 198.168.80.0/24 -i eth0 -j ACCEPT

(5)允许来源为指定端口的tcp数据包进入:

#iptables –A INPUT –p tcp –m multiport -–source-port 21,53,80,25,110 ACCEPT

(6)丢掉SYN和ACK标志位置位的数据包:

#iptables -A INPUT-p tcp –-tcp-flags ALL SYN,ACK DROP 2) 碎片检测及流量控制

(1)检查IP碎片:在TCP/IP网络中,链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU,这些被分段的片段就成为IP碎片。那么,如果在防火墙处不对IP碎片进行特别处理的话,那么有可能部分IP碎片会被防火墙拦截,从而影响到接受端对这些碎片的还原,并最终影响到信息的完整性和可用性问题,所以,下面的例子给出防火墙允许IP碎片通过的规则:

#iptables –A FORWARD –p tcp –f –s 172.168.96.0/24 –d 172.168.97.18 –j ACCEPT

需要特别留意上述规则中的-f选项,它指定了第二个以及以后的IP碎片将由防火墙来处理通过,否则的话,考虑下面的规则,防火墙有可能对其第二个及其以后的IP碎片进行拦截,从而影响正常的信息流通:

#iptables –A FORWARD –p tcp –s 172.168.96.0/24 –d 172.168.97.18 –j ACCEPT

(2)速率限制:iptables提供了非常健全的速率控制机制,主要用来限制由外向内的单位时间内通过的数据包个数,这样做的一个直接的好处就是尽可能地抑制前面多次提到的拒绝服务攻击或者是分布式拒绝服务攻击,因为这两种攻击的一个非常典型的表现就是单位时间内有很多数据包涌向目的地。所以,我们可以使用下面的规则来限制单位时间内允许通过防火墙,从而进入被保护网络的数据包个数:

#iptables –A INPUT –m limit -–limit 200/second #iptables –A INPUT –m limit -–limit 10000/minute

上述两条规则分别限制1秒内和1分钟内通过的数据包个数不能超过200和10000个。当然,在实际应用中,也可以通过/second、/minute、、/hour、/day这样的时间间隔来进行设定,并且,其中诸如200和10000这些具体数值的设定需要用户根据具体情况和经验来进行设定,没有规定的数值可循。

另外,在设定速率限制后,还可以设定超过该限制所触发的一些处理事件,比如说直接丢弃。下面的规则表示当速率超过200限制后,将直接对后续数据包进行

丢弃:

#iptables –A INPUT –m limit -–limit-burst 200 4、应用实战1:使用Iptables保障网络服务安全

由于iptables在实际生活中得到了非常广泛的使用,本文将介绍一个使用其保障网络服务安全的例子,以使用户能够在实际使用中举一反三。 1) 应用场景和网络拓扑

在这个应用中,我们将需要使用iptables防火墙保护企业网络提供的对外的公共Internet服务,这些服务包括WWW服务、FTP服务、SMTP服务以及DNS服务(具体的网络拓扑请参见图2)。因此,这些服务起都具有有效的Internet地址。 为了将内部网段210.10.18.0/24与Internet隔离,在内部网络和Internet之间使用了包过滤防火墙。具体的IP地址设置如下:

? 防火墙的内网接口是eth0(IP地址为:210.10.18.88),防火墙对外的Internet接口是eth1(IP地址为:210.10.19.188); ? WWW服务器:IP地址为210.10.18.89; ? FTP服务器:IP地址为210.10.18.90; ? DNS服务器:IP地址为210.10.18.91; ? SMTP服务器:IP地址为210.10.18.92。

图2 防火墙部署实例示意图