`
nmv884rp
  • 浏览: 24827 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Linux网络入侵检测软件

 
阅读更多

  本软件是本人的毕业设计"作品"。当年是因为Ubuntu而认识了Linux,进而知道了有个开源的图形界面开发工具--GTK+,机缘巧合之下在图书馆发现有一本刘文涛老师写的《Linux网络入侵检测系统》,翻开看看,觉得很好玩。Google之后,"歌"告诉我:没有人提供源代码?没有人自己尝试做过?……OK,哥自己干。 一、环境配置
  1.由于本软件使用了libpcap,因此首先安装它(到目前为止,选择的是最新版本1.1.1):
  1)downoad libpcap :http://www.tcpdump.org/release/ 2)install the dependence packages of libpcap:  sudo apt-get install flex  sudo apt-get install bison 3)install libpcap:  unzip   ./configure  make  sudo make install 4)install rpm:  sudo apt-get install rpm  or you may receive following message:  error while loading shared libraries: libpcap.so.1: cannot open shared object file...                                                                                                                                              ||                                                                                                                                              ||== /usr/local/lib/  5)run the program as root, or you may release: a. no suitable device found(function pcap_lookupdev());                                                                                      b. You don't have permission to capture on that device (socket: Operation not permitted) (function pcap_open(), pcap_open_live()). 因为使用了GENERIC_LINK_OTHER,ETHER_ADDR_LEN等变量以及is_ip_packet(),get_ip_proto()等函数,安装tcpstat: http://www.frenchfries.net/paul/tcpstat/ 其实可以不用安装(*^__^*) 嘻嘻……当时是因为用到了函数tcpport_string()和etheraddr_string()才装的,但运行时出现莫名其妙的问题,于是就把与tcpport_string()相关的所有变量、函数整体"移植"到我的程序中,而把etheraddr_string()函数舍弃掉了,换用了其它的方法,具体的替换方式可以参考刘文涛老师的《Linux网络入侵检测系统》和我的代码。 sudo apt-get install build-essential sudo apt-get install gnome-core-devel 做GTK+的开发还得安装这个,以方便查看相关的API函数:sudo apt-get install devhelp 第2步安装了tcpstat,现在要"include"它,得手动配置相关文件,使得编译器在编译时能够识别相关变量、结构体等,具体做法是将相关文件拷贝至/usr/local/include目录下:
  首先在终端切换至/usr/local/include目录(而不是/usr/include目录,因为此目录中的相关头文件是系统的,所以使用"用户自己的include目录"),接着输入以下命令:sudo mkdir tcpstat,创建一个文件夹tcpstat;
  然后切换到该文件夹,输入以下命令:sudo cp /home/ubuntu/Downloads/tcpstat-1.5/include/packetd ump.h .(个人具体环境不同,相应的路径自己改变),将 packetdump.h文件拷贝至tcpstat文件夹下,注意到在packetdump.h文件中引用了tcpstat.h,就如法炮制,把它也给拷过来。又注意到在tcpstat.h文件中引用了*.*文件,如法炮制(需要注意的是,诸如stdio.h,net/ethernet.h等系统自带的头文件就不用"炮"了,编译器知道去哪儿找这种头文件,需要"炮"的是ethernet_stub.h),接着接续"炮"……(总共"炮"了三个:packetdump.h、tcpstat.h、ethernet_stub.h)
  接着在/usr/local/include目录下创建tcpstat-packetdump.h文件:sudo gvim tcpstat-packetdump.h,在其中加入以下内容:#include 
  也许你会问:为什么这么干呢?不嫌麻烦吗?问的好!第1步安装成功libpcap后它会在/usr/local/include目录下创建一个pcap文件夹和三个头文件:pcap.h、pcap-bpf.h、pcap-namedb.h,大家看了这三个头文件的内容后就会明白的:-)
  第2步中提到使用了is_ip_packet(),get_ip_proto()等函数,由于这两个函数在安装好的tcpstat目录下的lib/utils.c文件中,下面继续"炮":
  将utils.c文件拷贝至/usr/local/include/tcpstat目录下,接着在/usr/local/include目录下建一个tcpstat-utils.c文件,加入相应内容。
  好了,一切就绪,切换到源代码目录下make(源代码将会在后面提供下载地址),咦~终端输出以下东东:
  In file included from /usr/local/include/tcpstat/packetdump.h:33, 
  from /usr/local/include/tcpstat-packetdump.h:3, 
  from callback.h:11, 
  from main.c:3: 
  /usr/local/include/tcpstat/tcpstat.h:261: error: conflicting types for 'inet_ntop' 
  /usr/include/arpa/inet.h:65: note: previous declaration of 'inet_ntop' was here 
  oh,由于头文件错综复杂,函数重复定义了,怎么办?将"炮"过去的 tcpstat.h文件的第261行注释掉。同样的utils.c中也是这种问题,那就同样的注释掉。 make之后,切换到root用户,接着输入./NIDS,敲下空格键,现在可以喝杯水了,当然有西瓜吃更好:-) 由于做毕设期间时间比较紧,因此只实现了ARP、IP、TCP协议的分析,诸如UDP、ICMP、HTTP、TCP连接过程等没有实现,还有就是没有和MySQL连接数据库。
  在第3步中提到把etheraddr_string()函数舍弃掉了,换用了其它的方法,我记得是关于MAC地址输出的问题,由于干毕设进度,没有深究,或许有错误。
  相较与刘老师的程序,改进的地方有:
  1)使用GtkUIManager来实现界面中的菜单栏和工具栏(不过其中的很多功能都没有实现哦,在终端中有相应的文字输出),关于GtkUIManager可以参考http://live.gnome.org/GnomeLove_2fUIManagerTutoria l。
  2)Content页面中的内容显示看起来更舒服,每一行显示16个字节的内容,且可打印字符用彩色显示,不过奇怪的是在Ubuntu10.04下显示的内容不齐,由于做毕设期间使用的9.10版,没有出现这种现象(不过在9.10下有时候程序会崩溃,由于时间原因,10.04下没发现,不知是GTK+的bug还是我的程序的问题)。截图分别如下(上面是Ubuntu9.10下的截图,下面是Ubuntu10.04下的截图):
  
  
  关于分行友好显示十六进制内容和可打印字符内容,借鉴于www.tcpdump.org/sniffex.c。
  3)Sniffer(下面的)和Content页面的内容都是动态显示的,即当捕获到一个数据包在界面显示时,屏幕会随着往下滚动。
  比较奇怪的一个问题是Sniffer(上面的)和Alert Event页面中的时间项与同一行的其它项显示的内容不在同一条直线上,而是往上偏点儿,不知是什么原因。
  由于时间的原因,刘老师书中所使用的旧的GtkClist widget没有用新的GtkTreeView重写,这也是有待改进的地方。
  另外就是没有使用pthread类方法,而是用的gdkthread类方法,而且只创建了一个线程,原书中的创建两个线程的妙处没那么多时间和精力去琢磨。
  至于使用的网卡设备,可以根据具体条件自己修改后再编译运行,比如我提供的源代码中的是eth0,若是无线网卡就是wlan0,这个可以通过在终端输入ifconfig等命令查看活跃网卡。捕获到的数据包数量也可以自定义,我提供的源码中是100个。 写完本文后我将投入到紧张的考研复习中,将有半年到一年的时间没法上网闲逛,上文中提到的相关问题我将没法和网友交流,望见谅。虽然我暂时没时间和大家一起探讨问题,但我又不想因为个人原因而将这么好的一个相互学习的机会给浪费掉,好的东西先分享,所以提供给大家,让大家先相互探讨,继续完善本软件。大家有什么好的想法、观点、解决办法等都可以发到我邮箱: river.shang@gmail.com,考研归来后,我会仔细查看的。 本软件的完成离不开众多人的关爱,没有他/她们,我将不会这么顺利的搞定它。他/她们是:
  爸爸:放假在家期间,独自一人学习GTK+编程,无聊的时候,和爸爸一起玩游戏Mahjongg、Klondike和Mines等,其乐无穷。
  妈妈:做的可口的饭菜使我在家享受到了在学校享受不到的神仙般的日子,有几个夜晚我敲着键盘,妈妈在旁边洗衣服静静地陪着我。有一次在电脑上为老爸和妈妈"弹奏"曲子--用的是VOS,得到他/她们的极大赞赏,他/她们对我的爱和鼓励、支持和包容是我前进的不竭动力。
  小妹:在学校下载动画片带回家和她一起欣赏,带着她到处玩,和她在一起的日子是我在家渡过的最快乐的时光。
  学校的好朋友:英子、琳妹妹、大小姐、小刚、哲哲、徒弟,感谢他/她们陪我在学校度过的毕设生活。记忆犹新的是英子的一句"老哥,我爱死你了"让我很感动。
  以及所有爱我的人。
  下面是源代码的下载地址(注意其中的rules文件中每一行的每个"变量"之间仅以一个tab键隔开):
  http://download.csdn.net/source/2514975
分享到:
评论

相关推荐

    入侵检测系统分析及其在Linux下的实现

    而且现在对于应用层协议只实现了HTTP协议分析,以后还可以加入其他协议分析,只有将入侵检测系统与 其他安全工具结合起来,才能构筑起一道网络安全的立体防御体系,最大程度地确保网络系统的安全。

    Linux下数据库备份恢复技术的应用

    为了抵御网络的攻击和入侵,虽然我们引入了日趋成熟的入侵检测系统、防火 墙系统等,黑客们的入侵手段也日益高明,他们总能找到这些系统的安全漏洞及不足进行入侵,因而网络入侵所引起的安全事件呈逐年增加之势。

    [Linux防火墙].(Linux.Firewalls.Attack.Detection.and.Response.with.iptables,.psad,.and.fwsnort)(美)拉什.中文高清PDF版1.pdf

     本书创造性地将防火墙技术和入侵检测技术相结合,充分展示开源软件的威力。书中全面阐述了iptables防火墙,并详细讨论了如何应用psad、 fwsnort、fwknop 3个开源软件最大限度地发挥iptables检测和防御攻击的效力。...

    Linux防火墙

    本书详细介绍linux操作系统中构建防火墙的方法,以及入侵检测和系统安全的技术。主要内容包括:防火墙的基础知识,linux防火墙管理程序iptable,构建防火墙的方法,防火墙的优化,数据包的转发,网络监控和攻击检测...

    Linux防火墙.pdf

     本书创造性地将防火墙技术和入侵检测技术相结合,充分展示开源软件的威力。书中全面阐述了iptables防火墙,并详细讨论了如何应用psad、 fwsnort、fwknop 3个开源软件最大限度地发挥iptables检测和防御攻击的效力。...

    Intrusion-Detection:此存储库包含与我们的软件工程项目相关的代码,以基于Python和OpenCV实施入侵检测系统

    基于Python和OpenCV入侵检测系统的实现。 人脸识别模块源自 设置 首先从克隆/下载项目 打开终端/ cmd,然后导航到项目文件夹。 安装项目所需的所有依赖项。 (如果您在Linux / MacOS平台上,请使用sudo特权运行...

    这是一个基于php的入侵检测与防御系统.zip

    操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络...

    操作系统安全:linux常用安全技术.docx

    linux常用安全技术包括PAM机制,linux能力机制,入侵检测系统,加密文件系统,安全审计,基于ACL的自主访问控制,强制访问控制,防火墙,杀毒软件,网络安全和DRM,等等。 PAM机制 PAM介绍 PAM(Pluggable ...

    Linux下查找漏洞的N种兵器

    Linux操作系统是一个开放源代码的免费操作系统,它不仅安全、稳定、成本低,而且很少发现有...网络漏洞扫描器则是指基于Internet远程检测目标网络和主机系统漏洞的程序,下面,我们选取一些典型的软件及实例进行介绍。

    一种分布式入侵检测系统的实现 (2004年)

    为了能够有效地检测到入侵行为,提出了一种基于部件的分布式入侵检测系统,并结合网管软件系统的开发,在Linux环境下进行了实现。系统主要由控制台、分析系统、存储系统、响应系统、网络引擎和主机代理构成。通过...

    《Linux防火墙 》 [PDF]

    本书创造性地将防火墙技术和入侵检测技术相结合,充分展示开源软件的威力。书中全面阐述了iptables防火墙,并详细讨论了如何应用psad、 fwsnort、fwknop 3个开源软件最大限度地发挥iptables检测和防御攻击的效力。...

    网络安全开发包详解代码

    详细讨论了几个著名的网络安全开发包,它们分别是网络数据包捕获开发包Libpcap,Windows网络数据包捕获开发包WinPcap,数据包构造和发送开发包Libnet,通用网络安全开发包Libdnet,网络入侵检测开发包Libnids。...

    12本精彩的Linux书籍

    但是这本书详述了如何用防火墙,psad, fwsnort配置一个入侵检测系统。如果你想要一本有关防火墙的详细参考,那么由Gregory N. Purdy 所著的《Linux Iptables Pocket Reference》将是你的最佳选择。 11.HULinux ...

    基于开源Linux的防火墙技术

    网络安全得到越来越多的关注, 防火墙无疑是保障网络安全的重要设备。开源软件项目为我们实现 防火墙技术提供了新的选择。文章介绍了入侵检测原理及开源Linux 操作系统下防火墙技术的基本原理和设 计思路。

    网络安全技术复习题.doc

    ( ) 单机病毒防御是传统防御模式,是在不同的操作系统上(UNIX/Linux、Windows/ 2000/ 2003/ 2007)安装和配置相适应的操作系统安全防范软件.( ) 网络病毒防护当然可以采用网络版防病毒软件.如瑞星杀毒软件网络版...

    计算机网络技术基础

    12.7.2 入侵检测技术的发展趋势  12.7.3 IDS的应用前景  小结  习题12  第13章 网络管理  13.1 网络管理概述  13.1.1 网络管理的基本概念  13.1.2 网络管理体系结构  13.2 网络管理的功能  13.3 ...

    LINUX防火墙

    本书创造性的将防火墙技术和入侵检测技术相结合,充分展示开源软件的威力。书中全面阐述了iptables防火墙,并详细讨论了如何应用psad,fwsnort,fwknop3个开源软件最大限度的发挥iptables检测和防御攻击的效力。大量...

Global site tag (gtag.js) - Google Analytics