您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Linux下如何安装入侵检测系统Snort
## 一、Snort简介
Snort是一款开源的网络入侵检测与防御系统(NIDS/NIPS),由Martin Roesch于1998年创建。它具有实时流量分析、数据包记录、协议分析、内容搜索/匹配等核心功能,被广泛认为是业界最强大的IDS/IPS解决方案之一。
### 主要功能特点
- **实时流量监控**:分析网络流量并检测攻击行为
- **协议分析**:支持IPv4/IPv6、TCP/UDP/ICMP等协议
- **模块化规则系统**:使用灵活的规则语言定义检测策略
- **多种工作模式**:
- 嗅探模式(Sniffer)
- 数据包记录模式(Packet Logger)
- 网络入侵检测模式(NIDS)
## 二、安装前准备
### 系统要求
- Linux操作系统(推荐Ubuntu/Debian/CentOS)
- 至少2GB内存(复杂规则集需要更多)
- 10GB以上磁盘空间(用于日志存储)
- root或sudo权限
### 依赖环境安装
```bash
# Ubuntu/Debian
sudo apt update
sudo apt install -y build-essential libpcap-dev libpcre3-dev libdumbnet-dev \
zlib1g-dev liblzma-dev openssl libssl-dev flex bison
# CentOS/RHEL
sudo yum install -y gcc gcc-c++ make flex bison zlib zlib-devel pcre pcre-devel \
libdnet libdnet-devel libpcap libpcap-devel openssl openssl-devel
建议从官方获取最新稳定版:
wget https://www.snort.org/downloads/snort/snort-2.9.20.tar.gz
tar -xzvf snort-2.9.20.tar.gz
cd snort-2.9.20
./configure --enable-sourcefire --enable-perfprofiling \
--enable-zlib --enable-active-response --enable-normalizer \
--enable-reload --enable-react --enable-flexresp3
make -j$(nproc)
sudo make install
sudo mkdir -p /etc/snort/{rules,preproc_rules,so_rules}
sudo mkdir /var/log/snort
sudo touch /etc/snort/rules/{local.rules,white_list.rules,black_list.rules}
复制默认配置文件:
sudo cp etc/*.conf* /etc/snort/
sudo cp etc/*.map /etc/snort/
编辑主配置文件:
sudo vim /etc/snort/snort.conf
需要修改的关键参数:
ipvar HOME_NET [your_network] # 例如: 192.168.1.0/24
ipvar EXTERNAL_NET !$HOME_NET
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
sudo snort -V
成功输出应显示版本信息:
,,_ -*> Snort! <*-
o" )~ Version 2.9.20
'''' By Martin Roesch & The Snort Team
需要注册Oinkcode(免费账户可用):
wget https://www.snort.org/rules/snortrules-snapshot-2983.tar.gz?oinkcode=[your_code] -O snortrules.tar.gz
tar -xzvf snortrules.tar.gz -C /etc/snort
编辑本地规则文件:
sudo vim /etc/snort/rules/local.rules
添加测试规则:
# 检测ICMP Ping
alert icmp any any -> $HOME_NET any (msg:"ICMP Ping Detected"; sid:1000001; rev:1;)
# SSH暴力破解检测
alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (msg:"SSH Brute Force Attempt"; \
flow:to_server; content:"SSH"; threshold:type threshold, track by_src, count 5, seconds 60; sid:1000002;)
建议设置cron任务自动更新:
0 3 * * * /usr/local/bin/pulledpork.pl -c /etc/snort/pulledpork.conf -l
编辑snort.conf添加:
output alert_syslog: LOG_AUTH LOG_ALERT
安装MySQL支持:
sudo apt install -y libmysqlclient-dev
重新编译时添加:
./configure --with-mysql
配置输出:
output database: log, mysql, user=snort password=your_pass \
dbname=snort host=localhost
config pcre_match_limit: 3500
config pcre_match_limit_recursion: 1500
config detection: search-method ac-split search-optimize max-pattern-len 20
测试模式(控制台输出):
sudo snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0
守护进程模式:
sudo snort -D -q -u snort -g snort -c /etc/snort/snort.conf -i eth0 -l /var/log/snort
生成测试流量:
ping -c 3 [your_ip]
检查日志:
tail -f /var/log/snort/alert
应看到类似输出:
[**] [1:1000001:1] ICMP Ping Detected [**]
[Priority: 0] {ICMP} 192.168.1.100 -> 192.168.1.1
需要编译时支持:
./configure --enable-active-response --enable-react --enable-flexresp3
配置规则:
# 阻止SQL注入尝试
drop tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:"SQL Injection Attempt"; \
content:"'"; content:"union"; content:"select"; sid:1000003;)
安装:
sudo apt install -y libcrypt-ssleay-perl liblwp-protocol-https-perl
wget https://github.com/shirkdog/pulledpork/archive/master.zip
配置:
rule_url=https://www.snort.org/reg-rules/|snortrules-snapshot.tar.gz|<oinkcode>
rule_url=https://www.snort.org/reg-rules/|opensource.gz|<oinkcode>
sudo ldconfig
# 限制检测线程
config detection: search-method ac-bnfa search-optimize max-pattern-len 64
sudo snort -c /etc/snort/snort.conf -T
注意:生产环境部署前建议在测试网络充分验证,复杂环境可考虑使用Barnyard2处理日志输出,或与SIEM系统集成实现集中管理。
本文档最后更新于:2023年11月 “`
这篇文章提供了从基础安装到高级配置的完整指南,包含约2800字内容,采用Markdown格式编写,包含代码块、列表、标题层级等标准元素。您可以根据实际环境调整具体参数值。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。