基于routercli的DOSNIPE防火墙终端控制Word下载.docx
- 文档编号:18599058
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:25
- 大小:111.36KB
基于routercli的DOSNIPE防火墙终端控制Word下载.docx
《基于routercli的DOSNIPE防火墙终端控制Word下载.docx》由会员分享,可在线阅读,更多相关《基于routercli的DOSNIPE防火墙终端控制Word下载.docx(25页珍藏版)》请在冰豆网上搜索。
当你试图登陆网上银行的时候,却提示你密码错误,而这个密码你是那么的熟悉;
当你要访问自己的网上空间时却老是出现拒绝服务!
如果出现上述现象的话,那么,你极有可能遭到别人的攻击,换句话说,网络已不安全.在这个时候,各种形式的防火墙应运而生,比如防病毒感染的,防垃圾邮件的,防流氓软件的,防DOS/DDoS的.而DOS/DDoS攻击由于其独特性,至今国内还没有一款能够彻底解决此类攻击的防火墙产品,国内做的比较出色的主要是绿盟的黑洞防火墙,金盾防火墙,冰盾防火墙,当然还有Dosnipe防火墙,在理想状态下可以抵抗800M的流量攻击。
DOSNIPE就是一款针对于DOS/DDoS攻击的硬件防火墙,而本文的routercli是为其量身定做的控制终端.
Routercli主要被应用于路由器的终端控制中,在防火墙还没有得到普及。
由于它内置了许多针对于路由器的控制命令,所以在防火墙里需要加入许多与防火墙匹配的控制命令。
本文讨论的问题就是针对DOS/DDoS防火墙的终端控制.
在毕业设计阶段,项目主管分配此项任务之后,我根据要求,制定项目进度表。
并负责所有的编码工作,在编写程序的过程中,出现了许多问题,但通过各种调试手段最终攻克各种难关,程序已经可以进行控制,查询等操作了。
2DOS/DDoS攻击介绍
所谓知己知彼方能百战百胜,要有效的防护DOS/DDoS攻击的话,首先就得熟悉它的原理!
2.1DOS/DDoS攻击原理
DOS是DenialOfService的缩写,意为:
拒绝服务攻击.而DDoS是DistributedDenialofService的简写,意为分布式拒绝服务攻击.两者的目的只有一个:
就是让你的服务器停止对外提供服务.
2.2DOS攻击
DOS攻击其实是一对一的攻击方法,它说白了就是单挑,攻击者通过发送大量的数据包
来攻击你的机器,如果你的机器性能较差的话,那么就极可能瘫痪.比如攻击者一秒钟发1000个数据包给你,而你一秒却只能处理100个,那么你的cpu将会非常的忙碌,最终还可能停止响应.当然,随着科技的飞速发展,现在服务器的硬件配置一般都比较高,所以DOS攻击基本上不会造成系统瘫痪,但也不可小觑.
2.3DDoS攻击
DDoS攻击是在传统的DOS攻击的基础上建立起来的.比如1对1的情况下你能够处理10000个数据包,那么攻击者以1000个数据包的DOS攻击将不会对你造成影响.但是,有没有考虑到这种情况,那就是攻击者同时发动10台机器以同样的速率来进行攻击,那么情况又会有所不同了,如果用100台呢?
结果可想而知.而DDOS就是采用很多的傀儡机来进行大规模的攻击.它看起来象"
群欧"
.
随着网络的不断发展,黑客所使用的傀儡机的范围也就更广,但在低速网络时代,黑客只会选择附近的机器作为傀儡机,因为经过的路由少,效果会更好.
下面来看看它的步骤(见图1-1):
(图1-1:
DDoS攻击模型)
I.首先,攻击者从自己的机器(client)出发,找到几个管理松散的站点,并且通过入侵手段取得此机器的控制权(handler).
II.其次,依照同样的方法,再次寻找有安全漏洞的机器(Agent),取得控制权之后,再植入daemon程序,潜伏在系统之中,等待Handler发来的控制命令,发动攻击.这些daemon程序一般都有发送大量数据包的能力,并且能够隐藏IP地址,使得难以追查攻击源.
III.发动攻击,这是最后一步,攻击者只要在登陆到(handler)机器上键入控制命令,Agent就会疯狂的向受害机发动大规模的进攻.他们可能会监控攻击的效果,最常用的方法就是不停的向被攻击主机发送ping包,如果还能够响应的话,就会继续加大攻击力度(见下面一个攻击程序控制终端).
被攻击的现象:
*被攻击的主机上充斥着大量等待的tcp连接
*网络上充斥着大量无用的,源地址为假的数据包
*制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯
*利用受害主机提供的服务或传输协议上的缺陷,反复高速的发出特定的服务请求,使受害主机无法及时处理所有正常请求
*严重时出现死机
3LINUX开源项目
3.1开源项目
LINUX是opensource(开源的),这就意味着LINUX的核心代码都可以从网络上免费获得,最著名的就是:
www.kernel.org.而linux的发布是在GNU/GPL许可证下发布的,这是一种copyleft的版权机制,意为:
无版权.对应于常见的copyright(版权).你可以在GPL许可证的保护或约束下修改源代码并进行发布,但在发布的时候要明确修改点,且允许别人再度修改.不仅其内核本身,在linux操作系统下的绝大多数应用软件都是开源的,你都可以对其进行二度开发.而routercli正是这样一款基于GPL的应用软件.
3.2Routercli
3.2.1简介
Routercli是一个Cisco-like的shell程序[10],它设计的初衷主要是应用于linux无盘系统
或者软盘系统。
但是,在当今的应用中有许多路由器厂家都采用了Routercli作为其控制
终端,比如:
cisco,Juniper,3com,paradyne等网络巨头。
正如它开放源代码的特性,使得很多商业厂家都会从下面网站下载由开发者提供的源代码包:
当从下载下来后,通过向里面增加源代码,就可以实现针对于自己产品的特殊功能。
3.2.2基本命令
我们先看看其原来的一些功能。
(图2-1:
基本命令)
可以看到,它包括了一些常用的命令,如ping,telnet等,exit是用来退出程序的常用命令。
在这些命令的基础,大多厂家都会增加一些命令进去,或者替换掉一些命令。
我们来看看其功能:
I.enable:
进入特权命令模式
II.help:
帮助信息
III.exit:
从EXEC退出
IV.ping:
发送icmp报文
V.trace:
到目的地的路由跟踪
VI.telnet:
打开一个telnet连接
3.2.3特权命令
当我们通过键入enable命令时就会进入特权命令模式,如下所示:
(图2-2:
特权模式)
从上图我们可以看到进入特权模式之后命令有所不同,下面来简要介绍一下:
I.configure:
进入configuration模式
II.clock:
对系统时钟进行操作
III.copy拷贝配置文件或映像文件
IV.disable:
关闭特权命令
V.help:
打印命令帮助信息
VI.exit:
退出
VII.ping发送ping包
VIII.trace:
路由路径跟踪
IX:
show:
显示系统运行信息
X:
shell:
执行shell程序
XI:
write:
把运行配置写入到内存
3.2.4配置模式
在特权模式下我们再键入configuret[或term,terminal]命令就可以进入配置模式了:
(图2-3:
配置模式)
我们对其命令简要解释一下:
I.access-list:
增加一个访问列表入口
II.banner:
定义一个登陆的图标
III.clear:
复位功能
IV.help:
V.hostname:
设置系统的网络名
VI.exit:
退出此模式到上级模式
VII.line:
配置终端命令行
VIII.router:
使能一个路由进程
IX.interface:
选择一个网络接口来配置
X.ip:
ip配置子命令
XI.no:
忽略一个命令或设置它的默认植
XII.enable:
修改enable密码参数
好了,routercli的自带的命令集已经基本介绍完毕,现在我们来看看它的一个应用的例子。
3.2.5ping命令
Ping命令相信大家都比较熟悉了,它是用来检测网络状态的常用命令。
我们切换到正常模式。
为了演示方便,就通过ping回环设备来看看它的运行效果:
(图2-4:
ping结果)
我们可以看到有5个包被传送,5个包收到了。
说明回环设备正常。
我们再退出routercli终端,在默认的linux终端(bash)中输入ping命令,可以看到如下信息:
(图2-5:
bashping结果)
通过比较可以发现,bash与routercli中的ping命令似乎不同,但其实它们在实现原理上
是一样的,只不过在表现形式上有所不同。
这正是开源代码的特性。
4项目规划
这一章节主要讨论实现其功能需要进行哪些前期工作.
4.1目录结构
在根目录下有以下主要文件或目录:
(图3-1:
目录结构)
以下是主要目录或文件的描述信息:
*Makefile(工程管理文件)
*LICENSE(版权)
*cli目录(下面包含主要的源文件,我们将在下面添加自己的源文件)
*INSTALL(安装帮助文件)
4.2功能实现
此次任务主要是向其中添加针对于防火墙的特殊命令:
*网络接口的配置,状态显示,对应添加的源文件(nif.c以及nif_cs.c).
*系统重启(reboot.c)
*系统信息(sysinfo.c)
*被保护主机的设置和信息查看(host_flow.c,host_traffic.c,host_protect.c,
host_unpro.c,host_sus.c,host_adel.c).
*防火墙设置(denyattack.c,denyip.c,dosdev.c,limit.c)
4.3程序调试
程序调试在程序的开发过程中可谓至关重要,程序的bugs都是通过调试的方法来修正的.在linux世界中,有很多开源的调试工具,其中最著名的当属gdb.这是一个非常实用的调试工具.具体信息可参考其manpage.
除了采用专门的调试工具以外,利用printf打印函数调试程序也是非常的便利的,你可以利用它来检测程序崩溃的精确位置,还可探测程序的内部运行状态,这也是本人在写程序时使用最频繁的手段了.
还有一种方法就是通过写日志文件,这样就可以在因程序崩溃时,检测程序运行的时间等等信息.
5具体实现
在作好以上的准备工作时,就可以进行代码的具体编程工作了.限于篇幅,我们只挑选其中的部分实现来作为对象.
5.1程序运行原理
所有的子功能都是通过routercli命令来实现的.我们首先把程序编译好,就会看到如下的控制终端:
(图4-1:
运行子终端)
这样routercli的终端就已经起来了.我们就可以在里面输入命令等等.
5.2系统重启
为了增加此项功能,我们需要做以下步骤:
*修改cli/main.c增加reboot入口.
*在Makefile文件里增加reboot.o
*在cli/目录添加reboot.c,并且编辑.
下面我们来看看其代码实现[2](src.4-1):
externintreboot_main(char*name)
{
returnkill(1,SIGINT);
}
(src4-1:
reboot)
函数reboot_main(),在main.c里被调用(当我们键入reboot时),它执行的功能非常简单,就是重启系统.而代码实现也非常简单,就一个语句:
kill(1,SIGINT);
我们知道在linux系统中,进程1为INIT进程,在一定意义上来讲其他的进程都是其子进程.
当我们将1号进程杀掉之后,其他进程也回被杀掉,所以系统将重启.
5.3网络接口
同样为了增加此项功能,要做如下步骤:
*在cli/main.c中增加nif入口;
*在Makefile中增加nif.o,nif_cs.o
*在cli/目录下添加nif.c,并且编辑好.
5.3.1功能
我们来看看其功能是什么,可以通过nif--help命令来查看:
(图4-1:
nif命令)
5.3.2设置
I.通过键入nif直接可以进入设置ip,dns,gateway,netmask的界面,按照提示即可进行操作:
(图4-2:
网卡设置)
II.启动或停止网络接口
III.查看网络接口状态
(图4-3:
状态)
通过上面的信息可以看出网卡接口以及回环接口都处于up状态。
5.3.3代码实现
通过nif_main()函数来进入主入口,完整代码见[附录]。
/*****************************************************************************
*mainentry
*****************************************************************************
*/
externintnif_main(char*name)
intsys_status;
intgw_exist_status;
charip_addr[16],netmask[16],gw[16],dns[16];
signal(SIGINT,handler);
if(!
strlen(name)){
/*doitfirst,whenfiledoesnotexsit,
*thencreatitwithdefaultvalue,ordonothing
empty_def_conf();
printf("
******************************************\n"
"
*配置IP,子网掩码,网关,DNS\n"
*请按照提示进行操作\n"
);
/*shouldaddtheinterruptandipaddrcheck*/
/********************ipconfiguration**************************/
pleaseinputipaddr:
\t"
scanf("
%s"
ip_addr);
if(ip_parse("
<
ip>
"
ip_addr)!
=0){
return-1;
}
if(ip_exist("
ip"
ip_addr)==IP_EMPTY){
sys_status=sys_sk("
if(sys_status==-1){
return-1;
}
if(ip_write_to_file("
ip_addr)){
printf("
error360:
failtowritetoipfile\n"
/*******************netmask*********************************/
inputnetmask:
\t\t"
netmask);
netmask>
netmask)!
netmask"
netmask)==IP_EMPTY){
netmask)){
error433:
/********************gateway**********************************/
inputgateway:
gw);
gateway>
gw)!
=0){
gw_exist_status=ip_exist("
gateway"
if(gw_exist_status==IP_EMPTY){
elseif(gw_exist_status==GW_EXIST_OLD){
if(gw_del()!
=0){/*deletetheoldgw*/
printf("
deletefail\n"
}
/*addthenewone*/
if(ip_write_to_file("
gw)){
error469:
}
/*******************dns**************************************/
inputdnsserver:
dns);
dns"
dns)==IP_EMPTY){/*doesnotexist!
FILE*fp_dns;
/*writeto"
/etc/resolv.conf"
first*/
if((fp_dns=fopen("
"
w"
))==NULL){printf("
failtoopen/etc/resolv\n"
fputs("
search\n"
fp_dns);
nameserver"
fputs(dns,fp_dns);
\n"
fclose(fp_dns);
/*thenwritetoIP_FILE*/
if(ip_write_to_file("
dn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 routercli DOSNIPE 防火墙 终端 控制