$ sudo apt-get install mysql-server libapache2-mod-php5 php5-mysql libphp-adodb
安装部署Snort工具
1. 安装Snort软件包
$ sudo apt-get install snort-mysql
在安装过程中会提示以下信息
这时,输入的网卡要与你的现在使用的网卡一致,否则安装不成功,查看你的网卡信息使用命令 $ ifconfig
接下来,选择要监听网络段,比如要监听整个192.168.0.0/16这个网络段,就填写上这个网络段,
最后,提示是否设置数据库,选择“Yes”。
安装结束,会提示以下错误信息
这个错误信息,提示我们还没有为snort配置一个mysql数据库。接下来我们为snort创建一个数据库
2. 创snortdb数据库
进入数据库后,创建数据库名为snortdb
创建一个snort的数据库用户,并设置密码为snortpassword
创建好数据库snortdb以后,我们需要将snort-mysql自带的软件包中附带的sql文件导入到数据库中;
$ cd /usr/share/doc/snort-mysql
$ zcat create_mysql.gz | mysql snortdb -u snort -psnortpassword
导入到数据库中以后,可以去snortdb数据库中查看是否导入成功。
如果导入数据完成以后,接着我们需要把/etc/snort/db-pending-config文件删掉,否则snort会认为数据库任然没有准备好。
$ sudo rm /etc/snort/db-pending-config
3. 配置Snort
上一步配置好了数据库,我们需要配置Snort配置文件(/etc/snort/snort.conf),告诉Snort以后日志写入到Snortdb数据库中.
$ sudo nano /etc/snort/snort.conf
首先,找到文件中“var HOME_NET any”一行,将其修改为我们邀监控的网络段,并启用临近下面几行的“var EXTERNAL_NET !$HOME_NET”,如图配置:
接着,找到该文件中“output database:log,mysql,”这行,默认它是注释的,如果没有将其注释掉,并在该行的下方填写以下内容,
该设置时将log和alert信息都写入到指定的数据库中。
然后, 检测snort.conf配置文件是否正常:
$ sudo snort -c /etc/snort/snort.conf
如果出现以上信息,有一个小猪出现,则说明配置成功了,按“Ctrl +C”退出。
最后,我们启动snort:
$ sudo /etc/init.d/snort start
启动成功以后需要使用
$ ps aux | grep snort
检测是否snort真的启动成功。一般安装我的步骤做的话是不会成功的,因为还有一个文件(/var/log/snort/alert)的所有者没有修改。
$ sudo chown snort /var/log/snort/alert
再启动snort
$ sudo /etc/init.d/snort start
通过$ ps aux | grep snort命令,查看是否启动成功。如果没有成功,可以通过/var/log/syslog日志文件查看具体的原因。
这里说一下为什么要先启动一下snort再修改(/var/log/snort/alert文件的所有者,因为默认在/var/log/snort/目录没有alert这个文件,只要通过先启动一下snort就会自动创建一个alert文件。
Snort不是很难使用,但是也存在着很多的命令行选项需要掌握,并且它们中许多很多时候并不能一起使用。这个文件的目的就是使新人能够更简单的使用snort。在我们进行下一步之前,有一些关于snort的基本概念需要了解。snort能够配置成三种模式运行:嗅探器(sniffer),包记录器(packet logger)和网络入侵检测系统(NIDS)。嗅探模式(sniffer mode)简单的读取网络中的数据包,并以连续的数据流显示在控制台上。包记录模式(packet logger mode)把捕获的数据包记录在磁盘上。网络入侵检测模式(NIDS mode)是最复杂的、有机的配置,在这个模式下,snort分析网络中的数据,并通过使用用户自定义的规则集进行模式匹配,并根据匹配的结果执行多种 *** 作。
2.0 嗅探模式(sniffer mode)
首先,让我们从基础开始。如果你只是想要在屏幕上打印出TCP/IP的包头信息(嗅探模式),使用下面的命令:
./snort –v
使用这个命令运行snort,将只显示IP和TCP/UDP/ICMP头信息,而不显示任何其它信息。如果你想要查看传输的有效负载信息,可以使用如下命令:
./snort –vd
这条命令在打印协议头信息的同时也打印相应的包数据。如果你想要一个更详细的现实,可以使用下面的命令来打印出数据链路层头信息:
./snort –vde
(注:这些选项参数能够分开或者拆散成任和结合的方式。比如上一个命令也可以写做这种方式:
./snort -d -v –e
来达到同样的效果)
3.0 包记录模式(PACKET LOGGER MODE)
好的,上面的命令运行的都相当的好。但是如果你想要记录包到磁盘上,你需要指定一个记录目录,然后snort将自动的进入包记录模式:
./snort -dev -l ./log
当然,这里假设你在当前目录下有一个叫做“log”的目录。如果没有这个目录,snort将退出并返回错误信息。当snort以这种模式运行,它收集所有捕获的数据包,并根据数据包中一个主机的IP地址放入对应的目录中。
如果你只是简单的指定“-l”选项,你可能会发现snort有时使用远程计算机的地址作为存放数据包的目录,有时使用本地主机的地址。为了比较本地的网络,你需要告诉snort本地网络的信息:
./snort -dev -l ./log -h 192.168.1.0/24
这条指令让snort能够记录数据链路信息和TCP/IP头和应用数据到目录./log,并且记录和192.168.1.0段C类网络相关的包信息。所有进来的包将记录到记录文件夹中对应的子文件夹中,子文件夹以远程主机(非192.168.1主机)的地址命名。注意,如果两个主机都是在本地网络内,然后他们将根据两个中高的端口号来记录,在端口号相等的情况下,将使用源地址来记录。
如果你在一个高速网络中,又或你想要使用一个更紧凑的格式来记录数据包为以后的分析所用,你可以考虑使用“二进制模式”来记录。二进制模式采用“tcpdump 格式”来记录数据包到指定目录下的单一二进制文件中。
./snort -l ./log –b
注意这里命令行的改变。我们不再需要指定一个本地网络,因为二进制模式记录所有的数据到一个单一的文件中,而不再需要定义输出的目录结构。另外,你不再需要使用详细(verbose)模式和指定-d/-e开关参数,因为在二进制模式下所有的包都会被记录而不是其中的某些部分。进入二进制包记录模式只需要做两点,一是在命令行中使用-l开关来指定一个日志目录,二是使用-b开关选择二进制模式代替ASCII文档模式记录包数据。
如果数据包以二进制文件的形式记录,你可以使用任何支持tcpdump二进制格式的嗅探器从文件中读取数据包信息,比如使用tcpdump或ethereal。snort也可以通过使用-r开关进入回放模式来读取记录的数据包信息。snort在任何运行模式下都能够接受tcpdump格式的文件并进行处理。比如,如果你想要以嗅探器模式来分析处理一个二进制文件并把数据包信息打印在屏幕,你可以使用类似下面的命令:
./snort -dv -r packet.log
你还可以以多种方式 *** 作二进制文件中的数据,比如包记录模式和入侵检测模式,你也同样可以在命令行中使用BPF接口。比如,如果你只是想查看记录文件中的ICMP数据包信息,可以在命令行中简单的指定一个BPF过滤器:
./snort -dvr packet.log icmp
更多的BPF使用信息请参阅相应的man信息。
4.0 网络入侵检测模式(NETWORK INTRUSION DETECTION MODE)
可以使用如下命令来启用snort的网络入侵检测模式(这个模式下,你不用记录所有的数据包):
./snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf
在这里snort.conf是你的规则文件名。这将对每一个数据包使用snort.conf文件中定义的规则集进行检测,并根据文件中定义的行为进行处理。如果你没有为程序指定输出目录,将使用默认的目录“/var/log/snort”。
有一点需要注意的是,使用上一命令行形式进入NIDS模式运行速度稍慢,可以去掉“-v”开关来提高效率。往屏幕输出数据速度很慢,在数据显示的过程中可能会造成数据包的丢失。
同样,对于大多数的应用而言,都不比要记录数据链路层包头信息,因此“-e”开关也是可以去掉的。最后命令如下:
./snort -d -h 192.168.1.0/24 -l ./log -c snort.conf
这个命令能够配置snort以最基础的NIDS模式运行。它将以ASCII格式记录规则指定的包信息到对应的目录结构中(和包记录模式中目录结构一致)。
4.1 NIDS MODE输出选项
在snort的NIDS模式中有几种输出方式可以配置。默认的记录和报警以ASCII形式记录,并使用“完全”报警。完全报警方式(full alert mechanism)输出所有的包头信息并在其后附上对应的报警信息。当然,在命令行中可以设置多种报警输出模式和两种日志记录格式。包信息可以以默认的ASCII格式记录,也可以通过使用命令行开关“-b”来用二进制文件记录。如果你想要完全禁用包记录信息,可以使用命令行开关“-N”。
报警模式相对要复杂一些。在命令行中可以设置多种报警模式:full、fast、socket、syslog、console、cmg、和none模式。这六种模式可以使用命令行开关“-A”来设置。详细如下:
u -A fast 快速报警模式,以一种简单的格式记录报警信息(时间、报警信息、源和目的主机的IP和端口)
u -A full 这是默认的报警模式,如果没有指定报警模式,将自动使用这种报警模式
u -A unsock发送报警信息到一个其它程序监听UNIX套接口
u -A none 关闭报警
u -A console 打印快速报警信息到控制台(屏幕)
u -A cmg 触发“cmg样式”报警
还可以使用“-s”开关来设置syslog报警。默认的两种syslog报警级别是LOG_AUTHPRIV和LOG_ALERT。如果你想要配置其它syslog日志级别的话,可以在规则文件中使用输出插件来设置(详细信息参见snort.conf文件)。
下面是几个输出配置实例:
1、使用默认格式(ASCII)向syslog发送报警信息:
snort -c snort.conf -l ./log -s -h 192.168.1.0/24
2、使用默认格式和默认目录(/var/log/snort)来向syslog发送报警信息:
snort -c snort.conf -s -h 192.168.1.0/24
3、使用二进制文件格式、快速报警模式、目录/var/snort来记录信息:
snort -c snort.conf -b -A fast -l /var/snort
4.2 性能配置
如果你想要提高snort运行效率(比如保持100Mbps网络环境下快速运行),可以使用“-b”和“-A fast”或者“-s”(syslog)选项。它将以tcpdump格式来记录包,并产生较少的报警信息。比如:
./snort -b -A fast -c snort-lib
在这个配置下,snort能够在100Mbps局域网内在80Mbps正常流量下检测同时进行的多重扫描和工具在这个配置下,记录将以二进制格式写入tcpdump格式文件snort.log中。然后可以重新使用“-r”选项和其它常用的选项运行snort,来从数据文件中解析为正常的snort格式的数据信息。比如:
./snort -d -c snort-lib -l ./log -h 192.168.1.0/24 -r snort.log
一旦这条指令执行,所有的数据将以正常的格式记录在日志文件夹中。很酷,不是吗?
4.3 其它信息
有很多人不喜欢snort默认的对包应用规则方式。在snort默认应用方式中,先使用报警(alert)规则,然后使用通过(pass)规则,最后使用记录(log)规则。这个顺序是违反直觉的,但是相对于允许用户定义了很多报警规则却因为使用了一条错误的通过规则而全部被禁止要简单有效。对于一些用户的需要,这里提供了“-o”开关来改变默认的规则应用顺序为:先使用pass规则,然后是alert规则,最后是log规则。命令如下:
./snort -d -h 192.168.1.0/24 -l ./log -c snort.conf -o
5.0 杂项信息
如果你想要以守护进程(daemon)模式运行snort,可以和其它选项一起加上“-D”开关设置。请注意,如果你想要向守护进程发送信号SIGHUP来重启snort的话,你需要在命令行中使用snort二进制文件的完全路径,比如你可以使用如下命令:
/usr/local/bin/snort -d -h 192.168.1.0/24 -l /var/log/snortlogs -c /usr/local/etc/snort-lib -s –D
由于安全关系,这里不提供对相对路径的支持。
如果你想要发送包记录信息到公共邮件列表,需要使用“-O”开关。这个开关将对包中输出的IP信息进行混淆处理。这使得你能够很容易的避免邮件列表中的用户获知相关的IP信息。你也可以把“-O”开关和“-h”开关联合使用,这样将只混淆本地网络中的主机地址。如果你不在意让人看见攻击主机的IP地址,这样设置是很有效的。命令如下:
./snort -d -v -r snort.log -O -h 192.168.1.0/24
这将从记录文件中读取数据包信息,并在屏幕上显示出来,在显示的过程中仅仅混淆了C类网络192.168.1.0/24中的地址信息。
如果你想要在不停止进程去查看snort包统计信息,可以向snort进程ID发送SIGUSR1信号,然后snort将在屏幕上显示统计信息,如果snort以守护进程模式运行,统计信息将发送到syslog中。你可以查看到snort检测的协议信息、报警数目、记录的包数、接收和丢弃的包数。这使得你能够很方便的提高snort的性能。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)