动态iptables防火墙dynfw
日期:2007年6月2日 作者: 查看:[大字体 中字体 小字体]-
防火墙是一个非常重要的网络安全工具,但是如果在需要对防火墙规则进行快速、复杂的动态修改时你该如何实现呢?如果你使用本文介绍的Daniel Robbins 的动态防火墙脚本,这将是一件非常容易的工作。你可以利用这些脚本来增强你网络的安全性和对网络攻击的实时响应性,并基于该脚本进行自己的创造性设计。
理解动态防火墙的脚本能够带来的益处的最好方法就是看它们在实际中的应用。假设我是某个ISP的系统管理员,我最近架设了一个基于Linux的防火墙来保护我的客户和内部系统,防止外部恶意用户的攻击。为了实现该系统我使用了新版Linux2.4内核的iptables工具来实现,防火墙允许客户和内部服务器向Internet建立连接,也允许从Internet向内部系统的公共服务如web服务器、FTP服务器等建立新的连接。由于这里我使用了默认拒绝任何服务,只开放允许的服务的策略,因此从Internet到非公共服务如squid的代理服务、samba服务的连接是被拒绝的。目前我已经有了一个功能完备的、满足安全需求的防火墙系统,其能对ISP的所有用户提供很好的保护。
刚刚开始的一个星期防火墙工作情况良好,但是随后一些糟糕的事情发生了。Bob-一个攻击者对我的网络进行了攻击,它采用了使用垃圾数据报淹没我的 ISP网络的方法来对我的客户进行Dos攻击。不幸的是Bob已经对我的防火墙进行了仔细的研究,知道虽然我对内部服务进行了保护但是25端口和80端口都是开放的以收发Emai和开放www服务。Bob决定对我的Email和WWW服务器进行Dos的攻击。
Bob开始攻击的1-2分钟以后我发现我的线路出现严重的拥塞情况。通过tcpdump察看我发现这是Bob进行的一次攻击。并且我得到了它的攻击源地址。现在我就需要阻止这些IP地址对我的公共服务器的连接。下面我就讨论一种简单方便的解决方案。阻止攻击
我马上采取行动,加载我的防火墙启动脚本并使用vi对 iptables 规则进行编辑,来阻塞这些Bob发出的恶意攻击数据的源地址的数据报。大约一分钟以后我找到了在防火墙启动脚本中添加新的DROP规则的位置,我马上添加了新的规则并重新启动了防火墙。很快防火墙发挥了作用,Bob的攻击得到了遏制。现在看起来我成功的击溃了Bob的攻击,可是不久网络值班电话又响了起来,原来是客户发现网络不可用而打过来的投诉电话。可是更加糟糕的是几分钟以后我注意到我的Internet连接线路又开始出现严重阻塞。我仔细察看原来是Bob使用了新的IP地址进行攻击行动。我只好不得不再次修改防火墙启动脚本来阻止它的攻击。我就这样一直在Bob的屁股后面疲于奔命。
问题出在哪里呢?虽然我建立了功能完备的、满足安全需求的防火墙系统并且快速的发现了网络出现问题的原因,但是我却不能在第一时间内对我的防火墙规则进行调整来响应Bob的攻击。当网络被攻击时,被动慌乱地快速对攻击做出防范反应,对防火墙规则配置脚本进行修改不但是压力巨大,而且效率低下。
ipdrop如果能创建一个特殊的"ipdrop"脚本,其被设计为能方便地插入一个规则来阻塞指定的IP,那么将上面的工作将非常容易。通过该脚本阻塞某个IP将是非常容易的工作,只需要几秒钟就可以实现。而且通过该脚本还可以防止手工加入规则时容易出现的错误。因此阻塞Bob的攻击将变为确定其攻击源地址。然后通过如下命令:
# ipdrop 129.24.8.1 on
IP 129.24.8.1 drop on.
ipdrop脚本将立即阻塞129.24.8.1。通过使用该脚本能显著地提高你的防卫能力。下面就是ipdrop脚本的实现:
The ipdrop bash script#!/bin/bash
source /usr/local/share/dynfw.sh
args 2 $# "${0} IPADDR {on/off}" "Drops packets to/from IPADDR. Good for obnoxious networks/hosts/DoS"
if [ "$2" == "on" ]
then
#rules will be appended or inserted as normal
APPEND="-A"
INSERT="-I"
rec_check ipdrop $1 "$1 already blocked" on
record ipdrop $1
elif [ "$2" == "off" ]
then
#rules will be deleted instead
APPEND="-D"
INSERT="-D"
rec_check ipdrop $1 "$1 not currently blocked" off
unrecord ipdrop $1
else
echo "Error: "off" or "on" eXPected as second argument"
exit 1
fi
#block outside IP address thats causing problems
#attackers incoming TCP connections will take a minute or so to time out,
#redUCing DoS effectiveness.
iptables $INSERT INPUT -s $1 -j DROP
iptables $INSERT OUTPUT -d $1 -j DROP
iptables $INSERT FORWARD -d $1 -j DROP
iptables $INSERT FORWARD -s $1 -j DROP
echo "IP ${1} drop ${2}."ipdrop:解释
从上面的脚本源代码中最后四行内容可以看到实际的命令是在防火墙表中插入适当的规则。可以看到$INSERT变量的值取决于在命令行参数中是使用"on"还是"off"模式。当iptables行被执行时特定的规则将被适当的插入或删除。
现在我们看看这些规则本身的功能,它们能和任何类型的防火墙一起发挥作用,甚至在没有部署防火墙的系统上。需要的条件仅仅是支持iptables的 Linux2.4版本的内核。我们阻塞来自恶意IP的攻击数据报(第一条iptables语句),阻塞发向恶意攻击IP的数据报(第二条iptables 语句),并且对该IP关闭任意方向的数据转发(最后两条iptables工具)。一旦这些规则发挥作用系统将丢弃满足这些条件的任何数据报。
另外一个需要注意的是:脚本中调用了"rec_check", "unrecord", "record",和"args"。这些都是定义在"dynfw.sh"中的特殊的bash函数。"record"函数实现将被阻塞的IP记录在文件 /root/.dynfw-ipdrop文件中,而"unrecord"则是将其从文件/root/.dynfw-ipdrop中去除。 "rec_check"函数是在发现试图重新阻塞某个已经阻塞的IP地址或取消某个没有被阻塞的IP地址时输出错误信息并停止脚本执行。"args"函数实现确保命令行参数的正确性,并实现打印脚本帮助命令。文件dynfw-1.0.tar.gz包含所有的这些工具,具体情况请见文章最后的资源部分。 - [1] [2] [3] 下一页
-
- 动态iptables防火墙dynfw 相关文章:
- 动态iptables防火墙dynfw 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:搭建基于netfilter/iptables的防火墙实验环境
下一篇:深入分析Linux防火墙
精品推荐
热点TOP10
- ·Linux学习手册
- ·在Linux 和FireWire上创建自己的RAC 集群
- ·Linux操作系统源代码详细分析
- ·linux知识大全
- ·Linux/Unix环境下的make命令详解
- ·RPM命令大全
- ·Linux From Scratch安装学习笔记
- ·在Linux下配置TCP/IP
- ·为CanonPIXMAiP1000喷墨打印机安装驱动程序
- ·常见端口表汇总
- ·Pure-FTPd + LDAP + MySQL + PGSQL + Virtual-Users + Quota How To
- ·LINUX 常见问题1000个详细解答
- ·万能声卡驱动(Alsa)的安装方法
- ·Linux管理工具介绍
- ·hdparm硬盘加速
- ·Linux发行版图标大全
- ·Linux中系统整体性能监控工具详细介绍
- ·长篇连载--arm linux演艺---序
- ·Bourne shell编程入门及脚本测试
- ·重安装gentoo 2005.1 for AMD64版经验
特别推荐
- ·Linux管理工具介绍
- ·Linux操作系统源代码详细分析
- ·Linux下用pptp连接VPN服务器
- ·在linux7.1上安装jdk+tomcat+oracle9i笔记
- ·Linux学习手册
- ·学习Linux的八点忠告
- ·深入分析Linux防火墙
- ·UNIX系统后门的安放和日志的擦除
- ·揭开Expect的神秘面纱
- ·万能声卡驱动(Alsa)的安装方法
- ·长篇连载--arm linux演艺---序
- ·为CanonPIXMAiP1000喷墨打印机安装驱动程序
- ·详细讲解Linux系统下ADSL拨号上网方法
- ·使用ImageMagick 的提示与技巧
- ·轻松实现 Linux系统下互联网过滤功能
- ·Linux下一些故障现象以及解决的相关资源
- ·重安装gentoo 2005.1 for AMD64版经验
- ·Linux/Unix环境下的make命令详解
- ·只需十分钟 Linux环境下快速搭建维基网站
- ·常见端口表汇总
