Yanuarpr/Snort-IDS-Network-Lab
GitHub: Yanuarpr/Snort-IDS-Network-Lab
基于 Snort 构建的隔离式网络 IDS 实验环境,通过自定义检测规则实时识别端口扫描、SSH 暴力破解和 Web 目录扫描等攻击行为。
Stars: 0 | Forks: 0
# Snort-IDS-Network-Lab
"在 Linux Server 上使用 Snort 构建的自动化网络 IDS 实验环境,用于检测 Nmap 扫描、SSH 暴力破解和 Web 目录扫描攻击。"
# 🛡️ 使用 Snort 的自动化网络 IDS 实验室
选择语言:
👉 **[英文版本](#-english-version)** | 👉 **[印尼语版本](#-versi-bahasa-indonesia)**
## 🇺🇸 英文版本
### 📝 项目概述
本项目演示了在隔离的 Linux Server 环境中使用 **Snort** 部署和配置 **入侵检测系统 (IDS)** 的过程。该实验室旨在从*蓝队 / 初级 SOC 分析师*的角度,实时监控、检测和分析各种网络与 Web 应用程序攻击。
### 🌐 网络拓扑与环境
该实验室构建在 Oracle VirtualBox 中,使用 **Internal Network** 适配器以确保与生产网络完全隔离。
* **IDS / 目标服务器:** Linux Server(运行 Snort IDS 和 Apache Web Server)
* **攻击机:** Kali Linux / Parrot OS
### 🛠️ 自定义规则实施
除了社区规则外,本项目还重点实施了自定义特征码 (`local.rules`) 以检测特定的攻击行为:
1. **侦测检测**
* **规则:** `alert tcp any any -> any any (msg:"PERINGATAN: Deteksi Nmap Syn Scan"; flags:S; sid:1000002; rev:1;)`
2. **SSH 暴力破解检测 (Rate-Limiting Filter)**
* **规则:** `alert tcp any any -> any 22 (msg:"PERINGATAN: Potensi Brute Force SSH Dideteksi"; flags:S; detection_filter:track by_src, count 5, seconds 10; sid:1000004; rev:1;)`
3. **Web 目录扫描 (Content Inspection)**
* **规则:** `alert tcp any any -> any 80 (msg:"PERINGATAN: Pemindaian Direktori Web Dideteksi"; content:"dirb"; nocase; http_header; sid:1000005; rev:2;)`
### 🚀 概念验证与事件分析
当攻击机执行 `dirb http://` 时,Linux Server 上的 Snort 控制台会立即触发实时警报。
**日志分析:** 系统成功标记了该侦测活动,因为它与高频请求期间 HTTP Header 中的特定字符串内容相匹配。这为安全分析师提供了完全的可见性,以便执行进一步的缓解措施(例如,IP 封锁)。
## 🇮🇩 印尼语版本
### 📝 项目概述
本项目演示了在隔离的 Linux Server 环境中使用 **Snort** 构建和配置 **入侵检测系统 (IDS)** 的过程。该实验室旨在从*蓝队 / 初级 SOC 分析师*的角度,实时监控、检测和分析各种网络与 Web 应用程序攻击活动。
### 🌐 实验室网络拓扑与环境
该实验室构建在 Oracle VirtualBox 中,网络配置使用 **Internal Network**,以确保与生产网络完全隔离。
* **IDS / 目标服务器:** Linux Server(配置:Snort IDS 和 Apache Web Server)
* **攻击机:** Kali Linux / Parrot OS
### 🛠️ 自定义规则实施
除了使用内置规则外,本项目还重点实施了自定义规则 (`local.rules`) 以检测特定的攻击行为:
1. **侦测检测**
* **规则:** `alert tcp any any -> any any (msg:"PERINGATAN: Deteksi Nmap Syn Scan"; flags:S; sid:1000002; rev:1;)`
2. **SSH 暴力破解检测 (基于时间的过滤)**
* **规则:** `alert tcp any any -> any 22 (msg:"PERINGATAN: Potensi Brute Force SSH Dideteksi"; flags:S; detection_filter:track by_src, count 5, seconds 10; sid:1000004; rev:1;)`
3. **Web 目录扫描检测**
* **规则:** `alert tcp any any -> any 80 (msg:"PERINGATAN: Pemindaian Direktori Web Dideteksi"; content:"dirb"; nocase; http_header; sid:1000005; rev:2;)`
### 🚀 测试证明与事件分析
# 案例 2:SSH 暴力破解
为了测试我构建的 Snort IDS 的可靠性,我从基本的端口扫描转向了模拟生产服务器经常面临的战术性攻击。
#### 1. 缓解 SSH 暴力破解攻击
我使用 `detection_filter` 配置了自定义规则,以区分正常的登录失败尝试和基于速度的暴力破解攻击。
* **规则脚本:** alert tcp any any -> any 22 (msg:"PERINGATAN: Potensi Brute Force SSH Dideteksi"; flags:S; detection_filter:track by_src, count 5, seconds 10; sid:1000004; rev:1;)
* **分析:** 该规则成功减少了*误报 (false positive)*,因为它只有在检测到来自单个源 IP 在 10 秒内发生 5 次连接尝试的异常时才会被触发。
# 案例 3:Web 目录扫描
当攻击机执行命令 `dirb http://` 时,Linux Server 上的 Snort 控制台直接*实时*触发了*警报*。
**日志分析:** 系统成功识别了扫描活动,因为在向 Web 服务器发起的高频请求期间,*HTTP Header* 中存在特定的内容匹配。这为安全分析师提供了完全的可见性,以便采取进一步的缓解措施。
## 📈 关键要点 / 学到的技能
* 理解虚拟网络架构与隔离。
* 在 Console Alert 模式下配置和优化 Snort IDS。
* 分析网络数据包 (TCP/IP) 并编写基于特征码的检测规则。
* Apache Web Server 上的基础日志分析。
**日志分析:** 系统成功识别了扫描活动,因为在向 Web 服务器发起的高频请求期间,*HTTP Header* 中存在特定的内容匹配。这为安全分析师提供了完全的可见性,以便采取进一步的缓解措施。
## 📈 关键要点 / 学到的技能
* 理解虚拟网络架构与隔离。
* 在 Console Alert 模式下配置和优化 Snort IDS。
* 分析网络数据包 (TCP/IP) 并编写基于特征码的检测规则。
* Apache Web Server 上的基础日志分析。标签:安全, 实验环境, 密码管理, 插件系统, 网络流量分析, 超时处理