linux搭建snort-网络入侵检测
snort简介
Snort 是一个开源入侵防御系统(IPS)。Snort IPS 使用一系列规则来帮助定义恶意网络活动,并利用这些规则来查找与之匹配的数据包,并为用户生成警报。一般来说,IDS是作为防火墙的补充,所以IDS一般处于防火墙之后,可以对网络活动进行实时检测,并根据情况记录和禁止网络活动。
Snort 也可以在线部署来阻止这些数据包。Snort有三个主要用途。作为一个像tcpdump一样的数据包嗅探器,作为一个数据包记录器--这对网络流量调试很有用,或者它可以作为一个完整的网络入侵防御系统。Snort可以被下载和配置为个人和企业使用。
snort官网
官方文档:https://www.snort.org/documents
如果想使用snort图形化分析需要安装Acid+Adodb+Jpgraph, ACID(Analysis Console for Incident Databases)是snort使用的标准分析员控制台软件。ACID是一个基于PHP的分析引擎,它能够搜索、处理snort产生的数据库。(这里不提供)
安装依赖
如果不安装这些依赖,在后边执行configure时会有报错
yum install flex bison -y
yum install libpcap libpcap-devel -y
wget https://nchc.dl.sourceforge.net/project/libdnet/libdnet/libdnet-1.11/libdnet-1.11.tar.gz
tar -zxf libdnet-1.11.tar.gz
cd libdnet-1.11
./configure && make && make install
安装daq
wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz
tar -zxf daq-2.0.7.tar.gz
cd daq-2.0.7
./configure
make
make install
安装snort
wget https://www.snort.org/downloads/snort/snort-2.9.19.tar.gz
tar -zxf snort-2.9.19.tar.gz
cd snort-2.9.19
./configure --enable-sourcefire
make
make install
安装规则
# 首先创建snort配置(及规则)目录
mkdir -p /etc/snort/rules
# 创建运行需要目录
mkdir /usr/local/lib/snort_dynamicrules
# 首先将2.3解压出来的etc下的默认配置文件复制到snort配置目录下
cp etc/*.conf* /etc/snort
cp etc/*.map /etc/snort
# 下载社区规则并解压到规则目录,更新rules只需要下载最新的规则替换即可
wget https://www.snort.org/downloads/community/community-rules.tar.gz
tar -zxf community-rules.tar.gz -C /etc/snort/rules
# 注释掉所有默认要加载的规则文件
sudo sed -i 's/include \$RULE\_PATH/#include \$RULE\_PATH/' /etc/snort/snort.conf
# 启用社区规则文件
echo '' >> /etc/snort/snort.conf
echo '# enable community rule' >> /etc/snort/snort.conf
echo 'include $RULE_PATH/community-rules/community.rules' >> /etc/snort/snort.conf
# 重新设置snort.conf中的变量值
sed -i 's/var RULE_PATH ..\/rules/var RULE_PATH .\/rules/' /etc/snort/snort.conf
sed -i 's/var WHITE_LIST_PATH ..\/rules/var WHITE_LIST_PATH .\/rules/' /etc/snort/snort.conf
sed -i 's/var BLACK_LIST_PATH ..\/rules/var BLACK_LIST_PATH .\/rules/' /etc/snort/snort.conf
# 创建默认使用的白名单文件
touch /etc/snort/rules/white_list.rules
# 创建默认的黑名单文件
touch /etc/snort/rules/black_list.rules
# 创建默认自己设置的规则文件,其实我们注意了其他include只include了社区规则,所以这条根本没用这里只是意思一下
touch /etc/snort/rules/local.rules
# 测试配置文件是否有误
snort -T -c /etc/snort/snort.conf
使用
snort有三种用法:嗅探模式、记录模式和网络入侵检测模式。
嗅探模式
snort -v
该模式打印通信的双方IP及协议头部,类似tcpdump
记录模式
# 创建记录日志的文件夹
mkdir log
snort -dev -l ./log
该模式将截获的数据包记入文件(此处是当前log目录下),重点是-l 将日志输出到指定位置
网络入侵检测模式
# 创建记录日志的文件夹
mkdir log
snort -d -h 192.168.1.0/24 -l ./log -c /etc/snort/snort.conf
运行后,ctrl+z 退出
使用 ps -ef | grep snort 查看是否运行
告警信息在 log 里的 alert 文件里
问题:目前部署snort后导致某些端口无法访问,没有解决
snort的命令行参数
snort的命令行参数很多,可以使用 snort -?命令列出这些参数及其简单的解释,详细的解释可以使用 man snort命令查看帮助页
名称 | 含义 |
---|---|
-A | 设置报警模式:fast、full、none(只是使用报警文件)、undock(使用UNIX套接字记入日志,出于测试阶段) |
-a | 显示ARP(Address resolution protocol,地址解析协议)包 |
-b | 日志文件使用tcpdump格式(更快) |
-c | 使用规则文件 rules |
-C | 只使用字符方式打印负载信息(不使用hex方式) |
-d | 复制应用层 |
-D | 在后台运行 Snort(精灵状态) |
-e | 显示第二层(数据链路层)包头信息 |
-F | Read BPF filters from file |
-g | 初始化完成后,使 Snort的gid为 gname |
-h | Home网络为h |
-i | 在接口if监听 |
-I | 把界面名加入到报警输出界面 |
-I | 设置目录ld为日志目录 |
-M | 把SMB消息发送到文件 wrkst列出的工作站中(Requires smbclient to be in PATH) |
-n | 收到cnt个包后退出 |
-N | 关闭日志功能(警报功能仍然有效) |
-o | 把规则测试顺序修改为:Pass |
-O | 打乱被日志的IP地址 |
-p | 关闭混杂嗅探模式 |
-P | 设置复制的包的长度为 snaplen(默认:1514) |
-q | 安静模式。不输出 banner和状态报告 |
-r | 读取并处理 tcpdump文件tf(回放功能) |
-s | 把所有警告信息记入 syslog |
-S | 设置规则文件中的n的值等于v的值 |
-t | 初始化完成后 Chroot到dir目录 |
-u | 初始化完成后,把 Snort的uid设置为 uname |
-v | 设置冗余模式 |
-V | 显示版本号 |
-X | 从链路层开始复制包的数据 |
-? | 显示帮助信息 |
安装遇到的问题及解决
- 问题1:
ERROR! LuaJIT library not found. Go get it from http://www.luajit.org/ (or)
Try compiling without openAppId using ‘–disable-open-appid’
configure: error: “Fatal!”
解决方法:
./configure --disable-open-appid
- 问题2:
configure: error: C++ preprocessor “/lib/cpp” fails sanity check
See `config.log’ for more details.
解决办法:
yum install glibc-headers && yum install gcc-c++
- 问题3:
ERROR! dnet header not found, go get it from
http://code.google.com/p/libdnet/ or use the --with-dnet-*
options, if you have it installed in an unusual place
解决办法:
wget https://nchc.dl.sourceforge.net/project/libdnet/libdnet/libdnet-1.11/libdnet-1.11.tar.gz
tar -zxvf libdnet-1.11.tar.gz
cd libdnet-1.11
./configure && make && make install
- 问题4:
ERROR! Libpcre header not found.
Get it from http://www.pcre.org
解决办法
yum install pcre-devel
tar -zvxf pcre2-10.31.tar.gz
- 问题5:
configure: error: Your operating system's lex is insufficient
to compile libsfbpf. You should install both bison and flex.
解决办法:
yum install flex bison -y
- 问题6:
ERROR! Libpcap library/headers (libpcap.a (or .so)/pcap.h)
not found, go get it from http://www.tcpdump.org
or use the --with-libpcap-* options, if you have it installed
in unusual place. Also check if your libpcap depends on another
shared library that may be installed in an unusual place
解决办法:
yum install libpcap-devel
- 问题7:
ERROR: /etc/snort/rules/community-rules/snort.conf(249) Could
not stat dynamic module path "/usr/local/lib/snort_dynamicrules":
No such file or directory.
解决办法:
mkdir -p /usr/local/lib/snort_dynamicrules
- 问题8:
ERROR: /etc/snort/classification.config(0) Unable to open rules
file "/etc/snort/classification.config": No such file or directory.
解决办法:
将上边2.3解压出的snort包中的etc/classification.config复制到/etc/snort/classification.config
- 问题9:
ERROR! Libpcap library version >= 1.0.0 not found.
解决办法:
yum install libpcap libpcap-devel -y
参考链接:
https://www.cnblogs.com/lsdb/p/8023884.html
https://blog.csdn.net/rdgfdd/article/details/83420811
https://blog.csdn.net/Ananas_Orangey/article/details/122619481
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构