Title

linux搭建snort-网络入侵检测

snort简介

Snort 是一个开源入侵防御系统(IPS)。Snort IPS 使用一系列规则来帮助定义恶意网络活动,并利用这些规则来查找与之匹配的数据包,并为用户生成警报。一般来说,IDS是作为防火墙的补充,所以IDS一般处于防火墙之后,可以对网络活动进行实时检测,并根据情况记录和禁止网络活动。
Snort 也可以在线部署来阻止这些数据包。Snort有三个主要用途。作为一个像tcpdump一样的数据包嗅探器,作为一个数据包记录器--这对网络流量调试很有用,或者它可以作为一个完整的网络入侵防御系统。Snort可以被下载和配置为个人和企业使用。

snort官网

官网:https://www.snort.org/

官方文档: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

解决办法

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

posted @   快乐小洋人  阅读(1247)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示