热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

snort构建入侵检测系统IDS

snort简介snort是一个基于libpcap的数据包嗅探并可以作为一个轻量级的网络入侵检测系统(NIDS)。所谓的轻量级是指在检测时尽可能低地影响网

snort 简介

snort是一个基于libpcap的数据包嗅探并可以作为一个轻量级的网络入侵检测系统(NIDS)。所谓的轻量级是指在检测时尽可能低地影响网络的正常操作,一个优秀的轻量级的NIDS应该具备跨系统平台操作,对系统影响最小等特征并且管理员能够在短时间内通过修改配置进行实时的安全响应,更为重要的是能够成为整体安全结构的重要成员。

snort工作模式

snort 有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。

嗅探器模式仅仅是从网络上读取数据并作为连续不断的流显示在终端上;

数据包记录器模式把数据包记录到硬盘上;

网络入侵检测模式是最复杂的,而且是可配置的,我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。

实验环境:

snort 主机:   192.168.101.90

模拟入侵主机:192.168.101.108

注:snort要与internet可以通信

一、snort 以及规则安装

yum  install php  php-gd  php-pear  php-mysql  mysql-server httpd  libpcap

yum localinstall --nogpgcheck snort-2.8.6.1    snort-mysql-2.8.0.1-1.RH5.i386.rpm

tar  -zxvf  snortrules-snapshot....  -C /etc/snort

修改环境变量

[root@readhat ~]# export  PCAP_FRAMES=max

启用服务

[root@readhat html]# service httpd start && chkconfig httpd on

[root@readhat html]# service mysqld start && chkconfig mysqld on

二、mysql配置

[root@readhat html]# mysqladmin  -u root password "123"

创建数据库

create database snort;

use  snort;

source  /usr/share/snort-2.8.0.1/schemas/create_mysql;         导入模版,生成数据表

三、adodb安装

[root@readhat html]# unzip  adodb514.zip -d /var/www/html/

[root@readhat html]# cd /var/www/html/

[root@readhat html]# mv adodb5/ adodb

四、base安装配置

[root@readhat html]# tar -zxvf  /root/base-1.4.5.tar.gz  -C /var/www/html/

[root@readhat html]# cd /var/www/html/

[root@readhat html]# mv base-1.4.5/  base

pear install --force  PEAR-1.8.1

pear  upgrade pear

[root@readhat html]# pear  install Image_Graph-alpha Image_Canvas-alpha  Image_Color Numbers_Roman Mail_Mime Mail

[root@readhat html]# cd /var/www/html/base

[root@readhat base]#  cp world_map6.png  world_map6.txt /usr/share/pear/Image/Graph/Images/Maps/

对base目录,添加可写属性,

[root@readhat html]# chmod o+w base

修改base内的符号链接

[root@readhat html]# ln -s /etc/snort/doc/signatures /var/www/html/base/signatures

访问 http://192.168.101.90/base

编辑php的配置文件

vim /etc/php.ini

error_reporting = E_ALL

改成

error_reporting = E_ALL & ~E_NOTICE

再次测试正常

五、base网页配置

选择语言格式,及adodb的存放目录,

设置数据库的相关属性,

创建管理员角色,

成功创建相关表、表选项,

base是从mysql中读取数据,而sort是怎样将信息输出到mysql数据库,并没有配置。

snortmysql的关联配置

[root@readhat ~]# vim /etc/snort/snort.conf 

[root@readhat ~]# snort -v  -c /etc/snort/snort.conf   &>/dev/null &

[1] 28542

[root@readhat html]# jobs

[1]+  Running                 snort -v -c /etc/snort/snort.conf >&/dev/null  &

查看扫描状态

局域网内模拟攻击,进行端口扫描

再次查看状态

详细的数据格式

附录:

snort的工作模式及规则简单编写

1嗅探器模式

所谓的嗅探器模式就是snort从网络上读出数据包然后显示在你的控制台上。首先,我们从最基本的用法入手。如果你只要把TCP/IP包头信息打印在屏幕上,只需要输入下面的命令:

#snort -v

使用这个命令将使snort只输出IPTCP/UDP/ICMP的包头信息。如果你要看到应用层的数据,可以使用:

#snort -vd

这条命令使snort在输出包头信息的同时显示包的数据信息。如果你还要显示数据链路层的信息,就使用下面的命令:

#snort -vde

注意这些选项开关还可以分开写或者任意结合在一块。例如:下面的命令就和上面最后的一条命令等价:

#snort -d -v –e

2数据包记录器:

如果要把所有的包记录到硬盘上,你需要指定一个日志目录,snort就会自动记录数据包:

snort -dev -l ./log

当然,./log目录必须存在,否则snort就会报告错误信息并退出。当snort在这种模式下运行,它会记录所有看到的包将其放到一个目录中,这个目录以数据包目的主机的IP地址命名,例如:192.168.10.1

如果你只指定了-l命令开关,而没有设置目录名,snort有时会使用远程主机的IP地址作为目录,有时会使用本地主机IP地址作为目录名。为了只对本地网络进行日志,你需要给出本地网络:

snort -dev -l ./log -h 192.168.1.0/24

这个命令告诉snort把进入C类网络192.168.1的所有包的数据链路、TCP/IP以及应用层的数据记录到目录./log中。

注意:生成的数据文件格式是tcpdump格式的,可使用#snort -r  数据文件名来查看

如果你的网络速度很快,或者你想使日志更加紧凑以便以后的分析,那么应该使用二进制的日志文件格式。所谓的二进制日志文件格式就是tcpdump程序使用的格式。使用下面的命令可以把所有的包记录到一个单一的二进制文件中:

snort -l ./log -b

3入侵检测系统:

snort最重要的用途还是作为网络入侵检测系统(NIDS),使用下面命令行可以启动这种模式:

snort -dev -l ./log -h 192.168.1.0/24 -c  /etc/snort/snort.conf

snort.conf是规则集文件。snort会对每个包和规则集进行匹配,发现这样的包就采取相应的行动。如果你不指定输出目录,snort就输出到/var/log/snort目录。

注意:如果你想长期使用snort作为自己的入侵检测系统,最好不要使用-v选项。因为使用这个选项,使snort向屏幕上输出一些信息,会大大降低snort的处理速度,从而在向显示器输出的过程中丢弃一些包。

此外,在绝大多数情况下,也没有必要记录数据链路层的包头,所以-e选项也可以不用:

snort -d -h 192.168.1.0/24 -l ./log -c  /etc/snort/snort.conf

这是使用snort作为网络入侵检测系统最基本的形式,日志符合规则的包,以ASCII形式保存在有层次的目录结构中。

编写snort 规则

snort使用一种简单的,轻量级的规则描述语言,这种语言灵活而强大。在开发snort规则时要记住几个简单的原则。

第一,大多数snort规则都写在一个单行上,或者在多行之间的行尾用/分隔。Snort规则被分成两个逻辑部分:规则头和规则选项。规则头包含规则的动作,协议,源和目标ip地址与网络掩码,以及源和目标端口信息;规则选项部分包含报警消息内容和要检查的包的具体部分。
下面是一个规则范例:

alert tcp any any -> 192.168.1.0/24 111 (content:"|00 01 86 a5|"; msg: "mountd access";)

规则动作协议源ip地址源端口号 ->目标ip地址目标端口号(规则选项)

第一个括号前的部分是规则头(rule header),包含的括号内的部分是规则选项(rule options)。规则选项部分中冒号前的单词称为选项关键字(option keywords)。注意,不是所有规则都必须包含规则选项部分,选项部分只是为了使对要收集或报警,或丢弃的包的定义更加严格。组成一个规则的所有元素对于指定的要采取的行动都必须是真的。当多个元素放在一起时,可以认为它们组成了一个逻辑与(AND)语句。同时,snort规则库文件中的不同规则可以认为组成了一个大的逻辑或(OR)语句。

规则动作:

规则的头包含了定义一个包的who,wherewhat信息,以及当满足规则定义的所有属性的包出现时要采取的行动。规则的第一项是"规则动作"(rule action),"规则动作"告诉snort在发现匹配规则的包时要干什么。在snort中有五种动作:alertlogpassactivatedynamic.

1Alert-使用选择的报警方法生成一个警报,然后记录(log)这个包。
2Log-记录这个包。
3Pass-丢弃(忽略)这个包。
4activate-报警并且激活另一条dynamic规则。
5dynamic-保持空闲直到被一条activate规则激活,被激活后就作为一条log规则执行。


本文转自 刘园  51CTO博客,原文链接:http://blog.51cto.com/colynn/1137198





推荐阅读
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
author-avatar
手机用户2602920263
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有