当前位置: 首页 > news >正文

使用 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/。他们的页面有关于如何使用此工具来使您的规则保持最新的出色文档。

相关文章:

使用 Snort 进行入侵检测

使用 Snort 进行入侵检测 Snort 是一种流行的开源入侵检测系统。您可以在http://www.snort.org/上获取它。Snort 分析流量并尝试检测和记录可疑活动。Snort 还能够根据其所做的分析发送警报。 Snort 安装 在本课中&#xff0c;我们将从源代码安装。此外&#xff0c;我们不会安…...

C++ | Leetcode C++题解之第116题填充每个节点的下一个右侧节点指针

题目&#xff1a; 题解&#xff1a; class Solution { public:Node* connect(Node* root) {if (root nullptr) {return root;}// 从根节点开始Node* leftmost root;while (leftmost->left ! nullptr) {// 遍历这一层节点组织成的链表&#xff0c;为下一层的节点更新 next…...

计算机网络学习

文章目录 第一章信息时代的计算机网络因特网概述电路交换&#xff0c;分组交换&#xff0c;报文交换计算机网络的定义和分类计算机网络的性能指标常见的三种计算机网络体系计算机网络体系结构分层的必要性计算机网络体系结构分层思想举例计算机网络体系结构中的专用术语 第二章…...

代码随想录算法训练营第四天| 24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

24.两两交换链表中的节点 给定一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后的链表。你不能只是单纯的改变节点内部的值&#xff0c;而是需要实际的进行节点交换。 解题思路 很麻烦的一道题目&#xff0c;不是很理解。还是看视频文章才AC的。 解法1 …...

职业探索--运维体系-SRE岗位/CRE岗位/运维岗位-服务心态-运维职业发展方向-运维对象和运维场景

参考来源&#xff1a; 极客时间专栏&#xff1a;赵成的运维体系管理课 极客时间专栏&#xff1a;全栈工程师修炼指南 赵成大佬在鹏讯云社区的文章&#xff08;77篇&#xff09; 有了CMDB&#xff0c;为什么还要应用配置管理 故障没有根因&#xff0c;别再找了 如何理解CMDB的套…...

深入理解C++智能指针系列(五)

引言 前面两篇介绍了std::unique_ptr的自定义删除器以及如何优化删除器的使用。本文将介绍std::unique_ptr在使用过程中的一些“奇技淫巧”。 正文 删除器和std::move std::move是将对象的所有权转移给另一个对象&#xff0c;那如果通过std::move来转移带自定义删除器的std::…...

1.Nginx上配置 HTTPS

1.安装 Nginx&#xff1a; 如果还没有安装 Nginx&#xff0c;可以使用包管理工具安装。例如&#xff0c;在 Ubuntu 上&#xff1a; sudo apt update sudo apt install nginx2.上传证书和私钥文件&#xff1a; 将你的证书文件和私钥文件上传到服务器上的某个目录&#xff0c;…...

wordpress教程视频 wordpress教程网盘 wordpress教程推荐wordpress教程网

WordPress&#xff0c;作为一款强大且灵活的开源内容管理系统&#xff0c;已成为许多网站开发者与运营者的首选。其强大的功能、丰富的插件以及易于上手的特点&#xff0c;使得无论是初学者还是专业开发者都能轻松构建出个性化的网站。然而&#xff0c;对于初学者来说&#xff…...

vue3 3D炫酷模型banner图

项目场景&#xff1a; 在官网首页展示3D炫酷动画模型&#xff0c;让整个模型都展示出来。 问题描述 主要是3D动画的展示效果&#xff0c;有些3d模型网站可以从51建模网站中获取。 案例代码&#xff1a; <script setup> import * as imgs from ../units/img import { o…...

小程序内使用路由

一:使用组件 1)创建组件 2)在需要的页面的json/app.json可实现局部使用和全局使用 在局部的话,对象内第一层,window配置也是第一层,而在全局配置也是在第一层,window在window对象内.第二层.内部执行遍历不一样. 3)页面使用 上述所写可实现在页面内使用组件.效果是页面内可以将…...

【数据结构】第七节:堆

个人主页&#xff1a; 深情秋刀鱼-CSDN博客 数据结构专栏&#xff1a;数据结构与算法 源码获取&#xff1a;数据结构: 上传我写的关于数据结构的代码 (gitee.com) ​ 目录 一、堆 1.堆的概念 2.堆的定义 二、堆的实现 1.初始化和销毁 2.插入 向上调整算法 3.删除 向下调整算法…...

前端大师-高级Web开发测验

目录 前言 1.按正确的执行顺序排列脚本 2.哪些说法是正确的&#xff1f;&#xff08;D&#xff09; 3.填写正确的术语 4.程序的输出 5.将资源提示与其定义匹配 6.以下程序的输出是&#xff1f; 7.将PerformanceNavigationTimings按正确的顺序排列 8.将缓存指令与其定义…...

延迟初始化和密封类

Kotlin 延迟初始化&#xff08;Lazy Initialization&#xff09; 定义 在 Kotlin 中&#xff0c;延迟初始化允许你延迟一个对象的初始化&#xff0c;直到首次访问该对象时才进行初始化。这通常用于那些初始化开销较大&#xff0c;或者只在程序运行的某个特定点才需要的对象。…...

Kotlin基础之基本语法

Kotlin 简介 Kotlin 是一种由 JetBrains 开发的静态类型编程语言&#xff0c;设计用于与 Java 虚拟机 (JVM) 兼容&#xff0c;同时也可用于 Android、JavaScript&#xff08;通过 Kotlin/JS&#xff09;和原生&#xff08;通过 Kotlin/Native&#xff09;开发。Kotlin 旨在提供…...

多态(难的起飞)

注意 virtual关键字&#xff1a; 1、可以修饰原函数&#xff0c;为了完成虚函数的重写&#xff0c;满足多态的条件之一 2、可以菱形继承中&#xff0c;去完成虚继承&#xff0c;解决数据冗余和二义性 两个地方使用了同一个关键字&#xff0c;但是它们互相一点关系都没有 虚函…...

安装GO环境

#windows 1.下载go的安装包msi,下载完双击运行,指定一个目录进行安装 #msi安装时,会自动设置以下环境变量: #GOPATH(默认设置为C:\Users\hhx\go), #C:\Users\hhx\go\bin, #go安装位置下的bin目录 2.检查是否安装成功,终端中运行go version解释一些环境变量 GOROOT:go的安装位置…...

记一次由于代码原因导致Mysql连接被打满和唯一索引重复问题

先说一下事情产生的背景&#xff1a;原先的代码逻辑是消费MQ&#xff0c;然后请求其他服务的接口&#xff0c;对接口的返回值result做落库操作&#xff0c;现在要新加个逻辑&#xff0c;做完落库操作后还要再将result封装落到新表中&#xff1b;即消费一次MQ(MQ消息的频率非常高…...

redis数据类型之string,list

华子目录 key操作说明SCAN cursor [MATCH pattern] [COUNT count]dump与restorekeys 通配符 示例演示 string说明setbit key offset valuegetbit key offsetsetrange key offset value List结构图相关命令lrem key count valueltrim key count value示例&#xff1a;使用 LTRIM…...

Android android.os.DeadObjectException aidl通信异常分析及解决

问题描述 做一款音乐播放应用&#xff0c;播放服务是通过AIDL形式对外暴露&#xff0c;允许跨进程调用且多个App同时操作音乐播放&#xff0c;偶现android.os.DeadObjectException问题 12-15 09:28:12.371: W/System.err(5412): android.os.DeadObjectException 12-15 09:28:…...

dp + 计数,1954D - Colored Balls

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1954D - Codeforces 二、解题报告 1、思路分析 本题前置题目&#xff1a; 1953. 你可以工作的最大周数 通过前置题目可以知道如何计算两两不同数对序列的最大长度 我们记最大数量为ma&#xf…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...