Code Flow Chart
Environment Building
ubuntu-14.04.5
daq-2.0.7
snort-2.9.16.1
ubuntu 配置
udo apt-get update
sudo apt-get dist-upgrade -y
sudo apt-get install -y openssh-server
sudo reboot
复制代码
2. 安装 snort 依赖
sudo apt-get install -y build-essential
sudo apt-get install -y libpcap-dev libpcre3-dev libdumbnet-dev
sudo apt-get install -y bison flex
mkdir ~/snort_src
cd ~/snort_src
wget http://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz
tar -xvzf automake-1.15
cd automake-1.15
./configure --docdir=/usr/share/doc/automake-1.15
make
sudo make install
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz
tar xzf autoconf-2.68.tar.gz
cd autoconf-2.68
./configure
make
sudo make install
sudo wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
sudo tar -zxvf LuaJIT-2.0.5.tar.gz
cd LuaJIT-2.0.5/
make
sudo make install
复制代码
3. 安装 DAQ
cd ~/snort_src
wget https://snort.org/downloads/snort/daq-2.0.7.tar.gz
tar -xvzf daq-2.0.7.tar.gz
cd daq-2.0.7
./configure
make
sudo make install
sudo apt-get install -y autoconf libtool pkg-config
cd ~/snort_src
wget https://github.com/nghttp2/nghttp2/releases/download/v1.17.0/nghttp2-1.17.0.tar.gz
tar -xzvf nghttp2-1.17.0.tar.gz
cd nghttp2-1.17.0
autoreconf -i --force
automake
autoconf
./configure --enable-lib-only
make
sudo make install
复制代码
4. 安装 snort
cd ~/snort_src
wget https://snort.org/downloads/snort/snort-2.9.15.1.tar.gz
tar -xvzf snort-2.9.15.1.tar.gz
cd snort-2.9.15.1
./configure --enable-sourcefire
make
sudo make install
复制代码
5. 安装 snort 规则
# 首先创建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
# 下载社区规则并解压到规则目录
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
复制代码
6. 安装完成后,简单试用三种模式
Features Use Report
嗅探器(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(行动)即可
评论