使用 Snort 进行入侵检测

使用 Snort 进行入侵检测

Snort 是一种流行的开源入侵检测系统。您可以在http://www.snort.org/上获取它。Snort 分析流量并尝试检测和记录可疑活动。Snort 还能够根据其所做的分析发送警报。

Snort 安装

在本课中,我们将从源代码安装。此外,我们不会安装标准版的 snort,而是对其进行编译以将其记录的内容发送到 MySQL 数据库。此外,我们将安装一个基于 Web 的工具 SnortReport,以便我们可以轻松访问 Snort 提供的信息。让我们从 Snort 本身开始。

下载最新的 tarball 并将其解压到您方便的位置 - 也许是您正在解压源代码的地方对于我们在本课程中处理的其他软件包。我们将配置 Snort 以将其警报记录到 MySQL 数据库,因此我们假设您已安装 MySQL。如果您像我一样在 Fedora Core 上安装它,您还应该安装 Perl正则表达式开发库。它们以 RPM 形式提供。(从您最喜欢的 RPM 存储库中获取 pcre-devel.X.rpm)

此外,在编译之前,您应该为 snort 添加组和用户:

groupadd snort

useradd -g snort snort -s /dev/null

现在,您可以开始编译了。转到包含 snort 源代码的目录并发出以下命令:

./configure --with-mysql

然后:

make

并且(以 root 身份)

make install

Snort 的活动基于一组规则。需要将这些规则从 tarball 源中的目录规则复制到 /etc/snort/rules/。您还应该将在那里找到的所有配置文件复制到 /etc/snort/(本质上是 cp *.rules /etc/snort/rules/、cp *.conf /etc/snort、cp *.config /etc/snort、cp *.map /etc/snort)

设置 Snort

首先,我们需要修改 snort.conf 文件以反映我们网络的细节。在此文件中,您将找到以下变量:

var HOME_NET X.X.X.X/X

您需要将其更改为您的网络所在的范围。例如,对于典型的 C 类网络,您可以将 X 更改为 192.168.0.0/16。此外,请确保您的 RULE_PATH 变量指向 /etc/snort/rules。

由于我们配置了 Snort 以将其警报记录到 MySQL 数据库中,因此我们需要做一些事情来做好准备。首先,在 snort.conf 文件中,您需要添加以下行

output database: log, mysql, user=snort password=XXXXX dbname=snort host=localhost

现在我们需要创建"snort"数据库。为此,请执行以下命令(当然,这假设您在机器上拥有 MySQL"root"用户权限)

mysqladmin -u root -p create snort

现在,打开 MySQL shell 并创建"snort"用户并授予表的创建、插入、选择、删除和更新权限。

grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost;

然后为您上面使用的用户'snort'设置密码:

SET PASSWORD FOR snort@localhost=PASSWORD('XXXXX');

现在我们需要在 snort 数据库中创建主要表。为此,请进入放置 snort 源代码的"contrib"目录并发出以下命令:

mysql -u root -p < create_mysql snort

然后我们需要创建一些额外的表。最好的方法是使用以下命令:

zcat snortdb-extra.gz |/usr/local/mysql/bin/mysql -p snort

现在,您应该拥有 snort MySQL 系统所需的所有表。执行"show tables;"查询将显示以下内容:

+------------------+
| Tables_in_snort |
+------------------+
| data |
| detail |
| encoding |
| event |
| flags |
| icmphdr |
| iphdr |
| opt |
| protocols |
| reference |
| reference_system |
| schema |
| sensor |
| services |
| sig_class |
| sig_reference |
| signature |
| tcphdr |
| udphdr |
+------------------+

现在,一切准备就绪,'snort' 可以开始记录警报了。SnortReport有一个很棒的基于 Web 的前端,用于监控 snort 警报,名为 SnortReport。它用 PHP 编写,可轻松安装到 snort 所在机器的 Web 服务器中。它可从 Circuits Maximus 获得:http://www.circuitsmaximus.com/SnortReport 将按协议类型显示警报的图形表示。此图形需要 libphp-jpgraph 库。这实际上是 Debian 软件包的一部分,但源代码可在 Ibibilo 找到。您还需要启用 GD 库的 PHP 安装。这通常是默认启用的,因此如果您安装了 PHP4 或更新版本,则不需要您再做任何工作。

要安装,只需解压您的网页所在的 SnortReport 源。然后将组成 libphp-jpgraph 的 php 文件复制到名为"jpgraph"/snortreport 目录的子目录中 - 因为这是我们将告诉 SnortReport 查找它们的地方。然后打开文件"srconf.php"并将用户"snort"的 MySQL 密码变量更改为 ($pass = "XXXXX" ;)。接下来,确保"jpgraph"路径的变量指向我们想要的位置:

define("JPGRAPH_PATH", "./jpgraph/");

您不必启用图表。如果您没有启用 GD 的 PHP 安装或 jpgraph,则可以在文件 srconf.php 中将变量设置为"FALSE"。

现在,如果您将 Web 浏览器指向 SnortReport 所在的位置,则应该看到类似以下内容:

现在,您可以基于 Web 监控 Snort 入侵检测系统。

更新和添加 Snort 规则

正如我们提到的,snort 根据 /etc/snort/rules 中的一组规则开展活动。您可以在http://www.snort.org/dl/rules/下载新规则。您应该获取与您正在使用的 Snort 版本相对应的 tarball。在撰写本文时,Snort 的版本为 2.x。请确保获取特定".x"的 tarball。(即 2.1、2.2、ETC)。

如果您管理一两台服务器,那么在最新的 tarball 发布后获取它并手动更新可能比较实用。您可以重命名旧的"规则"目录 rules.YYYYMMDD 或任何您喜欢的名称,然后将新的规则目录放在其位置并重新启动 Snort。如果您是多台机器的系统管理员,那么创建一个脚本来完成此操作是有意义的。还有一个名为"Oinkmaster"的流行工具可用于更新和管理 snort 规则。它位于http://oinkmaster.sourceforge.net/。他们的页面有关于如何使用此工具来使您的规则保持最新的出色文档。

相关推荐
学Linux的语莫23 分钟前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
踏雪Vernon33 分钟前
[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker编译环境镜像下载以及使用方式
linux·docker·容器·harmonyos
学Linux的语莫1 小时前
搭建服务器VPN,Linux客户端连接WireGuard,Windows客户端连接WireGuard
linux·运维·服务器
legend_jz1 小时前
【Linux】线程控制
linux·服务器·开发语言·c++·笔记·学习·学习方法
Komorebi.py1 小时前
【Linux】-学习笔记04
linux·笔记·学习
黑牛先生1 小时前
【Linux】进程-PCB
linux·运维·服务器
友友马1 小时前
『 Linux 』网络层 - IP协议(一)
linux·网络·tcp/ip
猿java2 小时前
Linux Shell和Shell脚本详解!
java·linux·shell
A.A呐3 小时前
【Linux第一章】Linux介绍与指令
linux
Gui林3 小时前
【GL004】Linux
linux