一、基础实验环境搭建

1.实验环境介绍

主机IP:192.168.3.17  kali2022.1

目标机IP:192.168.3.22   CentOS 7

其他:apache2+php5.4+mariadb

二、攻击方案设计与实施

2.1 syn flood洪水攻击

Syn Flood攻击是网络攻击的一种手段, 又称为SYN洪水、SYN洪泛,是一种典型的DoS(Denial of Service,拒绝服务)攻击(阻断服务攻击),效果就是服务器TCP连接资源耗尽,停止响应正常的TCP连接请求。

  1. hping3 -c 1000  -S  -p 80 --flood --rand-source 192.168.3.22

被攻击后,被攻击终端CPU使用率上升,通过抓包能发现,攻击者向被攻击的主机发送大量伪造的TCP连接请求。被攻击方主机服务器的资源耗尽(CPU 满负荷或内存不足) 的攻击方式。

2.2 Smurf 攻击

攻击者尝试使用互联网控制消息协议 (ICMP) 数据包向目标服务器发起洪水攻击。攻击者使用目标设备的欺骗性 IP 地址向一个或多个计算机网络发出请求,计算机网络将响应目标服务器,因此会放大初始攻击流量并可能使目标不堪重负,使其无法访问。

  1. hping3  --icmp --icmptype 8 --icmpcode 0 192.168.3.255 -a 192.168.3.22 --flood

2.3 UDP 洪水攻击

UDP 洪水是一种拒绝服务攻击,攻击者将大量用户数据报协议 (UDP) 数据包发送到目标服务器,旨在让该设备的处理和响应能力无力承担。由于 UDP 洪水攻击,保护目标服务器的防火墙也可能不堪重负,导致对正常流量拒绝服务。

三、基于snort搭建IDS

3.1准备软件环境

https://sourceforge.net/projects/adodb/

https://sourceforge.net/projects/secureideas/

https://sourceforge.net/projects/libdnet/

https://www.snort.org/downloads

https://github.com/firnsy/barnyard2/

安装目录如下:

3.2安装相关依赖包

  1. yum install -y epel-release

  1. yum install -y gcc gcc-c++ flex bison zlib-devel zlib-static libpcap pcre-devel pcre-static libpcap-devel tcpdump git libtool luajit luajit-devel openssl openssl-devel net-tools

3.3安装libdnet

  1. tar -zxvf libdnet-1.11.tar.gz
  2. cd /usr/local/src/libdnet-1.11/
  3. ./configure
  4. make && make install

3.4安装daq

  1. tar zxvf daq-2.0.7.tar.gz
  2. cd daq-2.0.7
  3. aclocal
  4. autoconf
  5. automake
  6. ./configure
  7. make && make install

3.5安装snort2.9.20

  1. tar zxvf snort-2.9.20.tar.gz
  2. cd snort-2.9.20
  3. ./configure --enable-sourcefire
  4. make && make install

3.6添加用户和组

3.7配置snort

  1. mkdir /etc/snort/
  2. cd /etc/snort/
  3. tar zxvf /usr/local/src/snortrules-snapshot-29200.tar.gz -C .

  1. cp /etc/snort/etc/sid-msg.map /etc/snort
  2. cp /usr/local/src/snort-2.9.20/etc/* .

  1. 查看/etc/snort 目录

  1. touch /etc/snort/rules/white_list.rules
  2. touch /etc/snort/rules/black_list.rules

  1. vi /etc/snort/snort.conf

完成snort.conf配置,保存退出。

3.8测试snort

测试snort分为两部分内容:snort程序启动测试和snort报警测试。

  1. 添加测试规则 vi /etc/snort/rules/local.rules
  2. alert icmp any any -> $HOME_NET any (msg:"ICMP Packet Detected";sid:1000003;rev:1;)

  1. 输入测试命令

snort -T -i ens33 -u snort -g snort -c /etc/snort/snort.conf

显示Snort successfully validated the configuration!后程序自动退出。

  1. snort报警测试

打开两个终端分别输入下面的命令启动snort

  1. snort -i ens33 -c /etc/snort/snort.conf -A fast

  1. 在另一个终端先观察

在没收到ICMP包时,系统不会报警。

开始ping Snort服务器

收到报警

snort报警测试成功。

在启动snort的终端上,输入Ctrl+C退出程序。

3.9安装配置数据库

  1. yum install –y mariadb-server mariadb-devel

开机启动数据库    systemctl enable mariadb.service
启动数据库     systemctl start mariadb

  1. 为数据库管理员root赋予密码/usr/bin/mysqladmin -u root password '123456'

为了得到数据库的模板我们需要解压barnyard2-2-1.13.tar.gz文件

  1. cd /usr/local/src
  2. tar zxvf barnyard2-2-1.13.tar.gz

  1. 创建Snort数据库并设定读取权限。登录数据库。
  2. CREATE DATABASE snort; //新建数据库snort
    USE snort;
  3. CREATE USER 'snort'@'localhost' IDENTIFIED BY '123456';
    新建用户snort,访问本机数据库的密码是123456
  4. GRANT CREATE,SELECT,UPDATE,INSERT,DELETE ON snort.* TO snort@localhost IDENTIFIED BY '123456';
    赋予名为“snort”的数据库权限,授权用户snort对数据库的操作权限.
  5. SET PASSWORD FOR 'snort'@'localhost'=PASSWORD('123456');
    为用户snort设置访问密码
  6. SOURCE /usr/local/src/barnyard2-2-1.13/schemas/create_mysql;
    通过引入文件create_mysql来创建数据库结构
    FLUSH PRIVILEGES;
  7. 下面来查看数据库snort的表

3.10安装和配置Barnyard2

  1. cd /usr/local/src/barnyard2-2-1.13/
  2. ./autogen.sh

  1. ./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql

  1. make && make install

3.11配置barnyard2

  1. mkdir /var/log/barnyard2
  2. chown snort:snort /var/log/barnyard2
  3. touch /var/log/snort/barnyard2.waldo
  4. chown snort:snort /var/log/snort/barnyard2.waldo
  5. cp /usr/local/src/barnyard2-2-1.13/etc/barnyard2.conf /etc/snort

  1. vi /etc/snort/barnyard2.conf


配置完成,保存退出。

3.12测试banyard2

  1. barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo -g snort -u snort -T

3.13安装BASE

  1. yum install -y httpd php php-mysql php-gd

  1. tar zxvf adodb-5.22.3.tar.gz -C /var/www/html/
  2. mv adodb5 /var/www/html/adodb
  3. tar zxvf base-1.4.5.tar.gz -C /var/www/html/
  4. mv /var/www/html/base-1.4.5/ /var/www/html/base

  1. vi /etc/php.ini

  1. chown -R apache:apache /var/www/html/
  2. 重启服务设置防火墙
  3. systemctl restart mariadb #重启MariaDB
  4. systemctl enable httpd.service #开机启动Http服务
  5. systemctl restart httpd.service 重启http
  6. firewall-cmd --zone=public --add-port=80/tcp

 

  1. 检查PHP环境

 

  1. 临时关闭SELinux
    setenforce 0
  2. 设置BASE

 

 

 

 

四、验证IDS功能

4.1 snort+barnyard2测试

  1. 测试启动snort
  2. snort -q -u snort -g snort -c /etc/snort/snort.conf -i ens33 -D
  3. 启动barnyard2
  4. barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort/ -f snort.log -w /var/log/snort/barnyard2.waldo

 

  1. 观察/var/log/snort目录

 

  1. 没有ping包之前的状态。
    在其他机器上ping Snort服务器。再次观察snort目录

 

  1. 观察数据库中的报警记录条数

 

  1. 这样snort.log.时间戳在存储数据包的同时,将报警存入数据库。

由此证明实验成功。

4.2 泛洪攻击检测

  1. Snort 规则:
  2. alert tcp any any -> $HOME_NET any (msg:"synflood";flags:S; threshold:type both,track by_dst,count3,seconds 10;classtype:misc-attack; sid:10000003; rev:001; GID:1; )

  1. Snort -A console -c /etc/snort/snort.conf -q -i ens33

五、总结

snort作为一个开源代码的入侵检测工具,在入侵检测系统开发的过程中有着重要的借鉴意义,其主要有初始化工作,解析命令行,读入规则库,生成用于检测的三维规则链表,然后循环检测。

本次实验通过对snort环境的搭建和测试,增强了自己在网络安全方面的知识并且提高了自己的技术能力。在搭建环境的过程中,尝试过snort在kali、ubuntun、centOS7、centOS6这几种系统下的实现。几乎每个平台下的搭建都有着不同的错误和困难。例如kali2022中对mysql的停用造成数据库安装接问题;centOS 7中php版本较低导致页面空白显示等等。面对这些不断出现的问题也之只能是遇见什么解决什么。也在一定程度上提高了自己的动手能力。虽然实验至此算是勉强完成,但是在搭建的过程中,我对新的snort3及其可视化工具也产生的浓厚的兴趣,将继续学习搭建更新更全面的环境。同时也将继续探索snort的其他用法。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐