写点什么

网络入侵检测系统之 Snort(二)-- 数据流图与环境搭建

作者:于顾而言
  • 2022 年 9 月 17 日
    江苏
  • 本文字数:2183 字

    阅读完需:约 7 分钟

网络入侵检测系统之Snort(二)--数据流图与环境搭建

Code Flow Chart


Environment Building

ubuntu-14.04.5

daq-2.0.7

snort-2.9.16.1

  1. ubuntu 配置

udo apt-get updatesudo apt-get dist-upgrade -ysudo apt-get install -y openssh-serversudo reboot
复制代码

2. 安装 snort 依赖

sudo apt-get install -y build-essentialsudo apt-get install -y libpcap-dev libpcre3-dev libdumbnet-devsudo apt-get install -y bison flexmkdir ~/snort_srccd ~/snort_src
wget http://ftp.gnu.org/gnu/automake/automake-1.15.tar.gztar -xvzf automake-1.15cd automake-1.15./configure --docdir=/usr/share/doc/automake-1.15makesudo make install
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gztar xzf autoconf-2.68.tar.gzcd autoconf-2.68./configuremakesudo make install
sudo wget http://luajit.org/download/LuaJIT-2.0.5.tar.gzsudo tar -zxvf LuaJIT-2.0.5.tar.gzcd LuaJIT-2.0.5/make sudo make install
复制代码

3. 安装 DAQ

cd ~/snort_srcwget https://snort.org/downloads/snort/daq-2.0.7.tar.gztar -xvzf daq-2.0.7.tar.gzcd daq-2.0.7./configuremakesudo make install
sudo apt-get install -y autoconf libtool pkg-configcd ~/snort_srcwget https://github.com/nghttp2/nghttp2/releases/download/v1.17.0/nghttp2-1.17.0.tar.gztar -xzvf nghttp2-1.17.0.tar.gzcd nghttp2-1.17.0autoreconf -i --forceautomakeautoconf./configure --enable-lib-onlymakesudo make install
复制代码

4. 安装 snort

cd ~/snort_srcwget https://snort.org/downloads/snort/snort-2.9.15.1.tar.gztar -xvzf snort-2.9.15.1.tar.gzcd snort-2.9.15.1./configure --enable-sourcefiremakesudo make install
复制代码

5. 安装 snort 规则

# 首先创建snort配置(及规则)目录mkdir -p /etc/snort/rules# 创建运行需要目录mkdir /usr/local/lib/snort_dynamicrules
# 首先将2.3解压出来的etc下的默认配置文件复制到snort配置目录下cp etc/*.conf* /etc/snortcp etc/*.map /etc/snort
# 下载社区规则并解压到规则目录wget https://www.snort.org/downloads/community/community-rules.tar.gztar -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.confecho '# enable community rule' >> /etc/snort/snort.confecho '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.confsed -i 's/var WHITE_LIST_PATH ..\/rules/var WHITE_LIST_PATH .\/rules/' /etc/snort/snort.confsed -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
复制代码

6. 安装完成后,简单试用三种模式





Features Use Report

  1. 嗅探器(snort -dev)

所谓的嗅探器模式就是 snort 从网络上读出数据包然后显示在你的控制台上,snort -vd 命令可以输出包头信息的同时显示包的数据信息:



访问http://www.baidu.com后,tcp/ip 数据探测如下:



退出探测模式后,snort 会给出本次探测信息的摘要总结,包括运行时间、吞吐量、内存使用、数据 IO 和协议分类统计等。



2. 数据包记录器(snort -l)

如果要把所有的包记录到硬盘上,你需要指定一个日志目录,snort 就会自动记录数据包,命令采用探测+记录的方式:./snort -dev -l ./20201105/log



访问http://www.sina.com后,关闭 sniffer 模式后,log 文件就将访问新浪过程中所有数据包都记录在 snort.og.1604647136 中,我们 vi 打开后,可以看见访问 sina 中 http 报文的 host。

另一方面,如果想记录特定端口号或协议特征的报文,可以在规则文件中定义:log udp any any -> 192.168.1.0/24 1:1024




3. 入侵检测(snort -c)

网络入侵检测模式是共有 5 种动作,pass、log、alert、dynamic 及 activate,而且是可配置的。我们可以让 Snort 分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。

首先配置一些规则(snort规则语法),新建一个 local.rules,这里试用最简单的例子,当发现任何 icmp 协议报文时,给出告警并记录,内容显示为 guyang:icmp packet;则,语法配置如下:alert icmp any any -> ant any (msg: "guyang:icmp packet"; sid:1993; rev:1;)



配置完规则后,启动 NIDS 模式:snort -c local.rules



启动另一个终端,并 ping 8.8.8.8



屏幕持续显示告警,当关闭终端后,可见监测报告:




由于是 alert 模式,数据包的告警细则会记录到/var/log/snort/alert 中:




三种模式使用后,可以明显感觉 Snort IDS 易用性非常高,界面显示友好,并且支持的协议广泛,规则配置非常灵活简单,只要关注 4 个要素: who , where, what,how(行动)即可

发布于: 刚刚阅读数: 3
用户头像

于顾而言

关注

| 且将新火试新茶 × 诗酒趁年华诗酒 2022.09.10 加入

| SASE | SangFor | Senior Developer | 知乎专栏:https://www.zhihu.com/people/whisper-of-the-Koo

评论

发布
暂无评论
网络入侵检测系统之Snort(二)--数据流图与环境搭建_网络安全_于顾而言_InfoQ写作社区