基于routercli的dosnipe防火墙终端控制本科论文.docx

上传人:b****2 文档编号:550730 上传时间:2023-04-29 格式:DOCX 页数:30 大小:111.32KB
下载 相关 举报
基于routercli的dosnipe防火墙终端控制本科论文.docx_第1页
第1页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第2页
第2页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第3页
第3页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第4页
第4页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第5页
第5页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第6页
第6页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第7页
第7页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第8页
第8页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第9页
第9页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第10页
第10页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第11页
第11页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第12页
第12页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第13页
第13页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第14页
第14页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第15页
第15页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第16页
第16页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第17页
第17页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第18页
第18页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第19页
第19页 / 共30页
基于routercli的dosnipe防火墙终端控制本科论文.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于routercli的dosnipe防火墙终端控制本科论文.docx

《基于routercli的dosnipe防火墙终端控制本科论文.docx》由会员分享,可在线阅读,更多相关《基于routercli的dosnipe防火墙终端控制本科论文.docx(30页珍藏版)》请在冰点文库上搜索。

基于routercli的dosnipe防火墙终端控制本科论文.docx

基于routercli的dosnipe防火墙终端控制本科论文

基于routercli的DOSNIPE防火墙终端控制

刘亮亮

(自动化与电气工程学院指导教师:

邵世凡)

摘要:

随着科技的不断发展,越来越多人感觉到网络已经成为生活中不可或缺的一部分了。

人们通过网络来购物,通过网络来进行交易,通过网络来进行转帐,等等。

但随之而来的就是网络安全问题。

是的,网络安全已经成为现今计算机领域的一大主题,而在所有的网络安全产品中,防火墙就当之无愧的稳当霸主地位。

为了极大限度的发挥防火墙的功效,对防火墙进行各种配置,状态查看就成为必然。

比如,设置ip地址,设置过滤规则,设置保护主机;查看主机流量,查看攻击种类,

查看系统日志等等。

而选择合适的控制手段将会大大提高防火墙的防御能力,虽然WEB页面控制具有非常直观的用户交互界面,但还需加上终端控制手段方能如虎添翼。

routercli就是一款操作简单,而功能强大的控制终端.本文从其产生背景,应用领域,使用方法,以及项目部署等各个方向对其进行详细描述.

关键词:

网络安全;防火墙;routercli

Abstract:

Withthedevelopmentoftechnology,moreandmorepeoplecan’tlivewithoutnetworking.Theydoshopping,makebusinessdeal,transferaccountsthroughnetwork.However,Itinvokesthenetworkingsecurityproblem,whichisveryharmful.Yes,networkingsecurityhasbecomeoneofthehottesttopicincomputerarea,anditgoeswithoutsayingthatFirewallproducthasestablishedthehegemonyinallofthenetworksecurityproducts.

Itbecomesnecessarytodokindsofconfigurationsandinspecttherunningstatusforfullyplayingtheperformanceoffirewall.Suchassettingipaddress,filterrules,protectedhostsandinspectingflows,typesofattacking,systemlogsandsoon..Underthissituation,itwillgreatimprovethedefenseabilityoffirewall,aslongasyouchooseapropercontrolstrategy.although

WEB-basedcontrollinghasafriendlyuserinterface.,Terminal-basedcontrollingshouldbeaddedasaappurtenance.

RouterCliisapowerfulcontrolterminal.Thisarticledescribesitindetailfromitsbackground,applicationarea,usage,projectdeploymentandthelike.

Keywords:

NetworkSecurity;Firewall;routercli

1前言

网络的出现,极大的便利了人的生活.现在人们可以在网上进行购物,登陆到网上银行

进行业务管理,当然还能够在网络上开辟一片属于自己的空间.

但是,如果以上的操作被某个心怀不轨的黑客所介入的话,那么你就要当心了!

你可能在进行购物的时候,将资金汇入到别人的帐户;当你试图登陆网上银行的时候,却提示你密码错误,而这个密码你是那么的熟悉;当你要访问自己的网上空间时却老是出现拒绝服务!

如果出现上述现象的话,那么,你极有可能遭到别人的攻击,换句话说,网络已不安全.在这个时候,各种形式的防火墙应运而生,比如防病毒感染的,防垃圾邮件的,防流氓软件的,防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"

"******************************************\n");

/*shouldaddtheinterruptandipaddrcheck*/

/********************ipconfiguration**************************/

printf("pleaseinputipaddr:

\t");

scanf("%s",ip_addr);

if(ip_parse("",ip_addr)!

=0){

return-1;

}

if(ip_exist("ip",ip_addr)==IP_EMPTY){

sys_status=sys_sk("ip",ip_addr);

if(sys_status==-1){

return-1;

}

}

if(ip_write_to_file("ip",ip_addr)){

printf("error360:

failtowritetoipfile\n");

}

/*******************netmask*********************************/

printf("inputnetmask:

\t\t");

scanf("%s",netmask);

if(ip_parse("",netmask)!

=0){

return-1;

}

if(ip_exist("netmask",netmask)==IP_EMPTY){

sys_status=sys_sk("netmask",netmask);

if(sys_status==-1){

return-1;

}

}

if(ip_write_to_file("netmask",netmask)){

printf("error433:

failtowritetoipfile\n");

}

/********************gateway**********************************/

printf("inputgateway:

\t\t");

scanf("%s",gw);

if(ip_parse("",gw)!

=0){

return-1;

}

gw_exist_status=ip_exist("gateway",gw);

if(gw_exist_status==IP_EMPTY){

sys_status=sys_sk("gateway",gw);

if(sys_status==-1){

return-1;

}

}

elseif(gw_exist_status==GW_EXIST_OLD){

if(gw_del()!

=0){/*deletetheoldgw*/

printf("deletefail\n");

return-1;

}

sys_status=sys_sk("gateway",gw);/*addthenewone*/

if(sys_status==-1){

return-1;

}

}

if(ip_write_to_file("gateway",gw)){

printf("error469:

failtowritetoipfile\n");

}

/*******************dns**************************************/

printf("inputdnsserver:

\t");

scanf("%s",dns);

if(ip_exist("dns",dns)==IP_EMPTY){/*doesnotexist!

*/

FILE*fp_dns;

/*writeto"/etc/resolv.conf"first*/

if((fp_dns=fopen("/etc/resolv.conf","w"))==NULL){printf("failtoopen/etc/resolv\n");

return-1;

}

fputs("search\n",fp_dns);

fputs("nameserver",fp_dns);

fputs(dns,fp_dns);

fputs("\n",fp_dns);

fclose(fp_dns);

/*thenwritetoIP_FILE*/

if(ip_write_to_file

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2