Linux下如何安装入侵检测系统Snort

发布时间:2022-02-17 09:34:20 作者:小新
来源:亿速云 阅读:476
# 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

三、详细安装步骤

1. 下载Snort源码

建议从官方获取最新稳定版:

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

2. 编译安装

./configure --enable-sourcefire --enable-perfprofiling \
--enable-zlib --enable-active-response --enable-normalizer \
--enable-reload --enable-react --enable-flexresp3

make -j$(nproc)
sudo make install

3. 创建必要目录结构

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}

4. 配置文件设置

复制默认配置文件:

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

5. 验证安装

sudo snort -V

成功输出应显示版本信息:

   ,,_     -*> Snort! <*-
  o"  )~   Version 2.9.20
   ''''    By Martin Roesch & The Snort Team

四、规则配置与管理

1. 获取官方规则集

需要注册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

2. 自定义规则示例

编辑本地规则文件:

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;)

3. 规则更新方法

建议设置cron任务自动更新:

0 3 * * * /usr/local/bin/pulledpork.pl -c /etc/snort/pulledpork.conf -l

五、系统集成与优化

1. 与Syslog集成

编辑snort.conf添加:

output alert_syslog: LOG_AUTH LOG_ALERT

2. 数据库输出(MySQL示例)

安装MySQL支持:

sudo apt install -y libmysqlclient-dev

重新编译时添加:

./configure --with-mysql

配置输出:

output database: log, mysql, user=snort password=your_pass \
dbname=snort host=localhost

3. 性能调优建议

config pcre_match_limit: 3500
config pcre_match_limit_recursion: 1500
config detection: search-method ac-split search-optimize max-pattern-len 20

六、运行与测试

1. 启动命令

测试模式(控制台输出):

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

2. 测试规则有效性

生成测试流量:

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

七、高级配置

1. 启用内联模式(IPS)

需要编译时支持:

./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;)

2. 使用PulledPork管理规则

安装:

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>

八、常见问题解决

1. 启动报错:shared object not found

sudo ldconfig

2. 性能问题处理

# 限制检测线程
config detection: search-method ac-bnfa search-optimize max-pattern-len 64

3. 规则语法检查

sudo snort -c /etc/snort/snort.conf -T

九、安全加固建议

  1. 专用账户:始终使用非root账户(如snort)运行
  2. 日志保护:设置/var/log/snort目录权限为700
  3. 定期审计:每月审查规则有效性
  4. 网络隔离:将管理接口与监控接口分离

十、延伸阅读

注意:生产环境部署前建议在测试网络充分验证,复杂环境可考虑使用Barnyard2处理日志输出,或与SIEM系统集成实现集中管理。

本文档最后更新于:2023年11月 “`

这篇文章提供了从基础安装到高级配置的完整指南,包含约2800字内容,采用Markdown格式编写,包含代码块、列表、标题层级等标准元素。您可以根据实际环境调整具体参数值。

推荐阅读:
  1. linux下安装ecshop,
  2. Linux下安装Redis及Linux下php安装Redis扩展

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux snort

上一篇:Centos7.7怎么配置FreeIPA

下一篇:Centos中如何配置防火墙

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》