使用 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 安装 在本课中,我们将从源代码安装。此外,我们不会安…...

C++ | Leetcode C++题解之第116题填充每个节点的下一个右侧节点指针
题目: 题解: class Solution { public:Node* connect(Node* root) {if (root nullptr) {return root;}// 从根节点开始Node* leftmost root;while (leftmost->left ! nullptr) {// 遍历这一层节点组织成的链表,为下一层的节点更新 next…...

计算机网络学习
文章目录 第一章信息时代的计算机网络因特网概述电路交换,分组交换,报文交换计算机网络的定义和分类计算机网络的性能指标常见的三种计算机网络体系计算机网络体系结构分层的必要性计算机网络体系结构分层思想举例计算机网络体系结构中的专用术语 第二章…...
代码随想录算法训练营第四天| 24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
24.两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 解题思路 很麻烦的一道题目,不是很理解。还是看视频文章才AC的。 解法1 …...

职业探索--运维体系-SRE岗位/CRE岗位/运维岗位-服务心态-运维职业发展方向-运维对象和运维场景
参考来源: 极客时间专栏:赵成的运维体系管理课 极客时间专栏:全栈工程师修炼指南 赵成大佬在鹏讯云社区的文章(77篇) 有了CMDB,为什么还要应用配置管理 故障没有根因,别再找了 如何理解CMDB的套…...
深入理解C++智能指针系列(五)
引言 前面两篇介绍了std::unique_ptr的自定义删除器以及如何优化删除器的使用。本文将介绍std::unique_ptr在使用过程中的一些“奇技淫巧”。 正文 删除器和std::move std::move是将对象的所有权转移给另一个对象,那如果通过std::move来转移带自定义删除器的std::…...
1.Nginx上配置 HTTPS
1.安装 Nginx: 如果还没有安装 Nginx,可以使用包管理工具安装。例如,在 Ubuntu 上: sudo apt update sudo apt install nginx2.上传证书和私钥文件: 将你的证书文件和私钥文件上传到服务器上的某个目录,…...

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

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

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

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

前端大师-高级Web开发测验
目录 前言 1.按正确的执行顺序排列脚本 2.哪些说法是正确的?(D) 3.填写正确的术语 4.程序的输出 5.将资源提示与其定义匹配 6.以下程序的输出是? 7.将PerformanceNavigationTimings按正确的顺序排列 8.将缓存指令与其定义…...
延迟初始化和密封类
Kotlin 延迟初始化(Lazy Initialization) 定义 在 Kotlin 中,延迟初始化允许你延迟一个对象的初始化,直到首次访问该对象时才进行初始化。这通常用于那些初始化开销较大,或者只在程序运行的某个特定点才需要的对象。…...
Kotlin基础之基本语法
Kotlin 简介 Kotlin 是一种由 JetBrains 开发的静态类型编程语言,设计用于与 Java 虚拟机 (JVM) 兼容,同时也可用于 Android、JavaScript(通过 Kotlin/JS)和原生(通过 Kotlin/Native)开发。Kotlin 旨在提供…...

多态(难的起飞)
注意 virtual关键字: 1、可以修饰原函数,为了完成虚函数的重写,满足多态的条件之一 2、可以菱形继承中,去完成虚继承,解决数据冗余和二义性 两个地方使用了同一个关键字,但是它们互相一点关系都没有 虚函…...
安装GO环境
#windows 1.下载go的安装包msi,下载完双击运行,指定一个目录进行安装 #msi安装时,会自动设置以下环境变量: #GOPATH(默认设置为C:\Users\hhx\go), #C:\Users\hhx\go\bin, #go安装位置下的bin目录 2.检查是否安装成功,终端中运行go version解释一些环境变量 GOROOT:go的安装位置…...
记一次由于代码原因导致Mysql连接被打满和唯一索引重复问题
先说一下事情产生的背景:原先的代码逻辑是消费MQ,然后请求其他服务的接口,对接口的返回值result做落库操作,现在要新加个逻辑,做完落库操作后还要再将result封装落到新表中;即消费一次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示例:使用 LTRIM…...
Android android.os.DeadObjectException aidl通信异常分析及解决
问题描述 做一款音乐播放应用,播放服务是通过AIDL形式对外暴露,允许跨进程调用且多个App同时操作音乐播放,偶现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、思路分析 本题前置题目: 1953. 你可以工作的最大周数 通过前置题目可以知道如何计算两两不同数对序列的最大长度 我们记最大数量为ma…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...

恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...

Java后端检查空条件查询
通过抛出运行异常:throw new RuntimeException("请输入查询条件!");BranchWarehouseServiceImpl.java // 查询试剂交易(入库/出库)记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...