AnshioRenin/Snort-IDS-Network-Intrusion-Detection-System-Setup-Configuration
GitHub: AnshioRenin/Snort-IDS-Network-Intrusion-Detection-System-Setup-Configuration
基于 Snort 在 Kali Linux 上搭建的网络入侵检测系统,包含 8 条覆盖常见攻击模式的自定义检测规则及完整的配置、测试与告警分析流程。
Stars: 0 | Forks: 0
# 🚨 Snort IDS — 网络入侵检测系统设置与配置




## 📌 概述
本项目展示了**Snort**的完整设置与配置过程——这是一款开源的、基于规则的入侵检测系统(IDS),涵盖了从创建目录结构到实时流量监控和告警生成的全过程。
针对8种不同的攻击类型编写了自定义检测规则,并在实时流量中进行了测试,通过分析告警日志验证了检测结果。该项目证实了 Snort 作为实时网络安全监控工具的能力。
**测试期间成功触发的告警:**
- ✅ ICMP echo request 检测(侦察)
- ✅ ICMP ping sweep(主机发现)
- ✅ TCP SYN 端口扫描检测
- ✅ SSH 暴力破解检测(端口 22)
- ✅ 可疑 HTTP user-agent(扫描器检测)
- ✅ SQL injection 尝试(`%27` 检测)
- ✅ FTP 暴力破解检测(端口 21)
- ✅ DNS zone transfer 尝试(端口 53)
## 🎯 目标
- 在 Kali Linux 上从零开始配置完整的 Snort IDS 环境
- 编写针对 8 种常见攻击模式的自定义检测规则
- 针对测试网络接口以实时监控模式运行 Snort
- 分析生成的告警日志并评估其安全影响
- 评估 Snort 作为网络防御工具的优势与局限性
## 🏗️ 目录结构
```
/etc/snort/ # Main configuration directory
├── snort.conf # Master configuration file
├── rules/
│ └── local.rules # Custom detection rules
├── builtin_rules/ # Snort pre-configured rules
└── so_rules/ # Shared object (dynamically loaded) rules
/var/log/snort/ # Alert and packet logs
/usr/local/lib/snort_plugins/ # Optional third-party plugins
```
### 设置命令
```
# 创建所有必需的目录
sudo mkdir -p /etc/snort
sudo mkdir -p /etc/snort/rules
sudo mkdir -p /etc/snort/builtin_rules
sudo mkdir -p /etc/snort/so_rules
sudo mkdir -p /var/log/snort
sudo mkdir -p /usr/local/lib/snort_plugins
```
## ⚙️ 配置
### snort.conf(关键设置)
```
sudo nano /etc/snort/snort.conf
```
```
-- Network scope
HOME_NET = "10.0.2.0/24" -- Internal network to monitor
EXTERNAL_NET = "any" -- All external traffic analysed
-- Enable all rules by default
ips = {
enable_builtin_rules = true,
rules = local_rules
}
-- Alert output format
outputs = {
alert_fast = {
enabled = true,
file = true,
packet = true
}
}
-- Include custom rules file
include = '/etc/snort/rules/local.rules'
```
## 📋 自定义规则(local.rules)
编写了 8 条自定义规则以检测常见攻击模式:
```
sudo nano /etc/snort/rules/local.rules
```
### 规则 1 — ICMP Echo Request 检测
针对任何发往家庭网络的 ICMP ping 发出告警——表明存在侦察活动。
```
alert icmp any any -> $HOME_NET any (msg:"ICMP Test"; sid:1000001; rev:1;)
```
### 规则 2 — ICMP Ping Sweep
检测 1 秒内来自同一来源的多个 ICMP 请求——主机发现扫描。
```
alert icmp any any -> any any (msg:"ICMP Ping Sweep"; detection_filter:track by_src, count 5, seconds 1; sid:1000002; rev:1;)
```
### 规则 3 — TCP 端口扫描
标记来自同一来源的多个 SYN packet——典型的端口扫描行为。
```
alert tcp any any -> any any (msg:"Potential TCP Port Scan"; flags:S; detection_filter:track by_src, count 5, seconds 2; sid:1000003; rev:1;)
```
### 规则 4 — SSH 暴力破解
检测针对端口 22 的快速重复连接尝试——自动化暴力破解攻击。
```
alert tcp any any -> any 22 (msg:"Potential SSH Brute Force"; flags:S; flow:stateless; detection_filter:track by_src, count 5, seconds 10; sid:1000004; rev:1;)
```
### 规则 5 — 可疑 HTTP User-Agent
针对来自已知扫描器 user-agent 字符串(Nmap, Spider, Proxy, Scan)的 HTTP 请求发出告警。
```
alert tcp any any -> any 80 (msg:"Suspicious User Agent - Possible Scanner"; flow:established,to_server; content:"User-Agent|3A| "; http_header; pcre:"/(?:Scan|Proxy|Spider|Nmap)/i"; sid:1000005; rev:1;)
```
### 规则 6 — SQL Injection 尝试
检测 HTTP 请求中的 `%27`(URL 编码的单引号)——常见的 SQL injection 指标。
```
alert tcp any any -> any any (msg:"SQL Injection Attempt"; flow:to_server,established; content:"%27"; sid:1000006; rev:1;)
```
### 规则 7 — FTP 暴力破解
监控针对端口 21 的多次登录尝试——针对 FTP 服务的暴力破解。
```
alert tcp any any -> any 21 (msg:"FTP Brute Force Attempt"; flow:established,to_server; detection_filter:track by_src, count 5, seconds 10; sid:1000007; rev:1;)
```
### 规则 8 — DNS Zone Transfer 尝试
检测未经授权的 DNS AXFR zone transfer 请求——可能会暴露完整的内部 DNS 结构。
```
alert tcp any any -> $HOME_NET 53 (msg:"DNS Zone Transfer Attempt"; flow:established,to_server; content:"|00 00 FC|"; offset:12; depth:3; sid:1000008; rev:1;)
```
## 🔒 文件权限
对所有 Snort 目录应用了安全权限:
```
# 允许 Snort 写入日志(所有人可读/写)
sudo chmod 666 /var/log/snort
# 限制 config、logs 和 plugins — 仅限 root(读/写/执行)
# 组成员:读和执行 | 其他:无访问权限
sudo chmod -R 750 /etc/snort
sudo chmod -R 750 /var/log/snort
sudo chmod -R 750 /usr/local/lib/snort_plugins
```
## 🚀 运行 Snort
### 步骤 1 — 测试配置(无实时捕获)
```
sudo snort -T -c /etc/snort/snort.conf -i eth0
```
验证 `snort.conf` 的语法和规则加载情况,而不启动实时监控。在继续之前,请修复显示的任何错误。
### 步骤 2 — 实时监控模式
```
sudo snort -c /etc/snort/snort.conf -i eth0 -A alert_fast
```
在 `eth0` 接口上以实时模式启动 Snort,以 `alert_fast` 格式输出告警——提供每个检测到的事件的快速摘要。
## 🚨 测试期间生成的告警
所有 5 种核心告警类型均已成功触发并记录:
| 告警 | 来源 | 描述 |
|-------|--------|-------------|
| **ICMP 测试** | 192.168.1.10 → 内部 | 检测到 ICMP echo request — 可能是侦察 |
| **ICMP Ping Sweep** | 单一来源 → 多台主机 | 几秒内的多个 ICMP packet — 主机发现扫描 |
| **TCP 端口扫描** | 外部 → 10.0.2.10 | 针对多个端口的多个 SYN packet — 服务发现 |
| **SSH 暴力破解** | 外部 → 端口 22 | 反复登录失败 — 自动化凭证攻击 |
| **可疑 User Agent** | HTTP 请求 | 在 HTTP header 中检测到扫描器/机器人 user-agent 字符串 |
### 示例告警日志格式(alert_fast)
```
[**] [1:1000001:1] ICMP Test [**]
[Priority: 0]
04/22-14:32:11.123456 192.168.1.10 -> 10.0.2.5
ICMP TTL:64 TOS:0x0 ID:1234 IpLen:20 DgmLen:84
Type:8 Code:0 ID:12345 Seq:1 ECHO
```
## 🔐 安全影响
| 告警类型 | 安全风险 | 严重程度 |
|-----------|--------------|----------|
| ICMP 泛洪 / ping sweep | DoS 或侦察 — 探测存活主机 | 🟠 高危 |
| TCP SYN 泛洪 | DoS/DDoS — 耗尽服务器资源 | 🔴 严重 |
| SSH/FTP 暴力破解 | 凭证泄露 — 未经授权的访问 | 🔴 严重 |
| SQL injection | 数据库篡改 — 数据窃取 | 🔴 严重 |
| DNS zone transfer | 网络拓扑泄露 — 为未来攻击提供便利 | 🟠 高危 |
## 📊 安全分析
**此 Snort 配置的优势:**
- `detection_filter:track by_src` 要求在告警前达到阈值次数,从而减少了误报
- 自定义规则针对与受监控网络相关的特定攻击模式
- 涵盖网络层(ICMP、TCP)和应用层(HTTP、SSH、DNS、FTP)威胁
**局限性:**
- 基于规则的检测无法识别 zero-day 攻击或新型 APT 技术
- 需要定期更新规则以跟上新威胁模式的步伐
- 仅作为 IDS(检测和告警)运行 — 而非 IPS(主动拦截)
**建议:**
- 将 Snort 与 Talos Intelligence 威胁情报源集成以获取规则更新
- 结合防火墙或 IPS(例如 Suricata)以实现主动拦截功能
- 添加 SIEM 集成(例如 Splunk、ELK)以进行集中式日志分析
## 🔧 工具与环境
| 工具 | 用途 |
|------|---------|
| Snort(开源) | 网络 IDS — 实时流量监控与告警 |
| Kali Linux | 测试环境 |
| Nano | 配置文件编辑 |
| eth0 接口 | 受监控的网络接口 |
## 📚 参考资料
- Snort 文档 — https://www.snort.org/documentation
- Talos Intelligence(Snort 规则源)— https://talosintelligence.com/
- SANS Institute — https://www.sans.org/
## 👤 作者
**Anshio Renin Micheal Antony Xavier Soosammal**
网络安全理学硕士 | 都柏林商学院
模块:通信与网络安全 (B9CY103) | 讲师:Arturo Vázquez Zepeda
🔗 [LinkedIn](https://linkedin.com/in/anshio-renin-ms) | 在爱尔兰开放工作机会
标签:CISA项目, DOE合作, rizin, 插件系统, 流量监控, 红队行动, 网络安全, 规则编写, 隐私保护