zoukankan      html  css  js  c++  java
  • Centos7安装snort可视化IDS平台

    Centos

    一、基础安装

    1.1 安装依赖

    yum install -y gcc gcc-c++ flex bison zlib libxml2 libpcap pcre* tcpdump git libtool curl man make
    
    # 安装libpcap
    tar -zxvf libpcap-xxx.tar.gz
    ./configure
    sudo make
    sudo make install
    
    # 安装dnet
    ./configure
    sudo make
    sudo make install
    
    # 安装daq
    ./configure
    sudo make
    sudo make install
    # 编译时可能会遇到时钟源错误的问题,调整系统时间可以跳过该错误
    
    # 安装zlib
    ./configure
    sudo make
    sudo make install
    
    # 安装LuaJIT
    sudo make
    sudo make install
    
    # 安装openssl
    ./config
    sudo make
    sudo make install
    # 编译安装较慢,等待一段时间
    

    1.2 安装snort

    ./configure
    make
    make isntall
    

    1.3 配置snort

    添加用户和组。

    创建用户和组,并设置权限。在root身份下解包的文件权限都与root有关,所以要修改成Snort用户的属主和相关权限。

    #新添加一个Snort组
    groupadd -g 40000 snort
    
    #将Snort用户加入Snort组,并且不允许登录系统
    useradd snort -u 40000 -d /var/log/snort -s /sbin/nologin -c SNORT_IDS -g snort 
    
    新建目录/var/log/snort并设置其属性。
    mkdir /var/log/snort
    chown –R snort:snort /var/log/snort
    
    配置Snort。
    #新建目录/etc/snort/
    mkdir /etc/snort/ 
    cd /etc/snort
    
    #下载规则文件并解压,将其中的.map复制到/etc/snort 目录下
    cp sid-msg.map /etc/snort
    
    #将下载的Snort压缩包解压缩后复制到/etc/snort/目录下
    cp ~/snort-2.9.7.0/etc/* /etc/snort
    
    # 设置当前目录下所有文件的属主。
    cd /etc/snort
    chown -R snort:snort *
    
    #新建黑白名单规则文件
    touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules
    
    
    编辑配置文件snort.conf,修改以下几行的内容。
    设置网络变量,将第45行的ipvar HOME_NET any改为ipvar HOME_NET 192.168.x.x网段,并写成CIDR格式。也可以添加多个网段。
    ipvar HOME_NET [192.168.0.0/16,172.16.0.0/16]
    将48行ipvar EXTERNAL_NET any 改为 ipvar EXTERNAL_NET!$HOME_NET
    第104行 var RULE_PATH ../ruls 改为 var RULE_PATH /etc/snort/rules
    第105行 var SO_RULE_PATH ../so_rules 改为var SO_RULE_PATH /etc/snort/so_rules
    第106行 var PREPROC_RULE_PATH ../preproc_rules 改为 var PREPROC_RULE_PATH/etc/snort/ preproc_rules
    第113行 var WHITE_LIST_PATH ../rules 改为 var WHITE_LIST_PATH /etc/snort/rules
    第114行 var BLACK_LIST_PATH ../rules 改为 var BLACK_LIST_PATH /etc/snort/rules
    
    # 设置日志保存路径。
    config logdir:/var/log/snort/
    
    # 配置输出插件。
    Snort可通过数据库插件(spo_database.c和spo_database.h)将预处理器输出的日志写入数据库,但下面的配置一方面将报警写入alert文件,另一方面将预处理器输出的日志写入到unified2格式的二进制文件中,以供Barnyard2读取使用。
    将第521行修改成如下内容:
    output unified2:filename snort.log,limit 128
    
    新建目录snort_dynamicrules并设置权限
    mkdir -p /usr/local/lib/snort_dynamicrules
    chown -R snort:snort /usr/local/lib/snort_dynamicrules
    chmod -R 755 /usr/local/lib/snort_dynamicrules
    
    # 在/usr/sbin/目录下新建名为Snort的软链接文件。
    cd /usr/sbin
    ln -s /usr/local/bin/snort snort
    

    1.4 添加测试规则

    # 编辑 rules文件
    vi /etc/snort/rules/local.rules
    
    # 加入如下内容:
    alert icmp any any -> $HOME_NET any (msg:"ICMP Packet Detected";sid:1000003;rev:1;)
    

    1.5 测试Snort

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

    如果配置正确,则系统启动后显示如下内容。

    如出现“Snort successfully validated the configuration!”的提示,则表示安装配置成功。

    1.6 用ping命令测试。

    用ping命令进行测试的目的是为了产生报警。ping命令使用ICMP协议,在IDS中使用Libpcap函数所捕获的也是ICMP数据包。下面在Snort主机上操作:

    snort -i eth0 -c /etc/snort/snort.conf -A fast
    

    与此同时,用另一台主机进行ping操作,日志文件记录在/var/log/snort/alert/var/log/snort/snort.log

    在这里插入图片描述

    二、将Snort报警存入MySQL数据库并添加管理界面

    2.1 安装MySQL数据库及PHP扩展

    yum install -y mysql-server mysql-devel php-mysql php-pear php-gd libtool php-imap php-ldap php-mbstring php-odbc php-pear php-xml php-pecl-apc
    
    # 将MySQL服务设置为在运行级别为2、3、5时都是开启状态
    chkconfig --level 235 mysqld on 
    /etc/init.d/mysqld start
    

    2.2 配置mysql数据库

    # 为数据库管理员root赋予密码。
    /usr/bin/mysqladmin -u root password '******'
    
    # 创建Snort数据库并设定读取权限。
    mysql -u root -p
    
    # 输入步骤2中设置的密码“******”
    mysql> create database snort;
    mysql> use snort;
    mysql> create user 'snort'@'localhost' IDENTIFIED BY '******';
    
    在以上命令中,“******”是MySQL中用户Snort的密码。
    接着创建名为snort、密码为“123456”的数据库用户,并赋予名为“snort”的数据库权限
    mysql> grant create,select,update,insert,delete on snort.* to snort@localhost identified by '******';
    mysql> set password for ‘snort’@’localhost’=password('******'); //为用户snort设置访问密码
    mysql> source ~/barnyard2-2-1.12/schemas/create_mysql; //该命令不可重复输入,一定要执行此命令
    mysql> show tables;
    mysql> flush privileges; //刷新数据库权限
    mysql> exit
    
    

    2.3 barnyard2安装配置

    Barnyard2的作用是读取Snort产生的二进制事件文件并存储到MySQL中。Snort的配置文件自身含有插件,它允许将Snort报警记录到MySQL中,但这样一来,系统数据会激增。当IDS系统检测到异常行为时,它会用INSERT语句向数据库中写入数据,导致更新非常慢。所以如果直接将Snort输出到数据库,在数据量增大时这种方案的效率并不高,故使用外部代理将报警输出到Barnyard2。

    解压后安装
    ./autogen.sh
    ./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql 
    make
    make install
    
    

    编译时遇到如下错误,定位到源码,注释掉该行即可
    在这里插入图片描述

    配置
    # 首先在/var/log/中创建目录Barnyard2和文件barnyard2.waldo。
    mkdir /var/log/barnyard2
    touch /var/log/snort/barnyard2.waldo
    
    # 设置文件barnyard2.waldo的属主
    chown snort:snort /var/log/barnyard2
    chown snort:snort /var/log/snort/barnyard2.waldo
    
    # 复制Barnyard2的配置文件。
    # 与Snort配置类似,Barnyard的初始化配置也是通过复制已有的.conf配置文件来完成。因此先将Barnyard2的配置模板文件复制到/etc/snort目录下。
    cp ~/barnyard2-1.9/etc/barnyard2.conf /etc/snort
    
    # 修改配置文件barnyard2.conf。
    vi /etc/snort/barnyard2.conf
    
    # 找到对应行并将其修改成如下内容:
    第44行 config logdir:/var/log/barnyard2 //该目录权限为snort.snort
    第56行 config hostname: localhost
    第57行 config interface: eth0
    第131行 config waldo_file:/var/log/snort/barnyard2.waldo
    
    # 下面这条语句用来设置数据库访问权限,其中定义了用户名为snort,密码为123456,数据库名称为snort,主机名为localhost。
    第318行 output database: log,mysql,user=snort password=123456 dbname=snort host=localhost
    
    

    2.4 Snort和Barnyard2进行联合测试。

    snort -q -u snort -g snort -c /etc/snort/snort.conf -i enp3s0 –D
    

    2.5 安装pear插件

    yum install -y httpd mysql-server php php-mysql php-mbstring php-mcrypt mysql-devel php-gd mcrypt libmcrypt libmcrypt-devel php-pear
    pear channel-update pear.php.net
    pear install mail Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman mail_mime
    # 单次运行不成功可以尝试多次运行,必须安装所有插件
    

    2.6 安装配置adodb base

    Basic Analysis and Security Engine

    Adobd

    cd /var/www/html/
    unzip ~/adodb-5.20.14.zip
    mv adodb5 adodb
    tar -zxvf ~/base-1.4.5.tar.gz
    mv base-1.4.5 base
    
    # 修改/etc/php.ini
    gedit /etc/php.ini
    # 修改为 
    error_reporting = E_ALL & ~E_NOTICE
    
    #修改权限
    chmod 777 /var/www/html/adodb
    chmod 777 /var/www/html/base
    

    2.7 启动服务

    # 启动mysql服务
    service mysqld start      
    # 启动http
    service httpd start           
    # 关闭防火墙
    systemctl stop firewalld.service    
    # 查看防火墙状态
    firewall-cmd --state               
    

    2.8 Web配置

    访问:http://localhost/base/setup/index.php

    Step1:开始配置,该步骤需要配置adodb的路径

    Step2:选择数据库类型,数据库名,数据库用户和密码

    Step3:设置管理员账号密码

    Step4:开始创建BASE表结构,生成后如图所示


    Step5:完成配置后的界面

    三、启动IDS

    barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo -g snort -u snort
    # 如果报错可能是权限问题
    chown -R snort:snort /var/log/snort
    


    启动过程遇到上图中错误,文件权限存在问题,将报错文件添加读权限即可解决。

    该错误应该会有更优雅的解决方法,暂时未找到。在配置snort的过程中可能会涉及到日志文件权限的配置问题。可能没有注意。

    正常启动结果如图


    四、其他参考

    4.1 命令参考

    # web网址
    http://localhost/base/base_main.php
     
    # 数据库操作
    mysql -u snort -p -D snort -e "select count(*) from event"        #检查告警是否存库
    mysql -u snort -p -D snort -e "delete from event"                 #清空告警库
     
    snort -q -u snort -g snort -c /etc/snort/snort.conf -i ens33 -D
    -T:指定启动模式:测试
    -i:指定网络接口
    -u:指定运行用户
    -g:指定运行时用户组
    -c: 指定配置文件
    -q:以静默方式运行
    -D:后台以Daemon方式运行
     
    barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo -g snort -u snort
     
    snort -i ens33 -c /etc/snort/snort.conf -A fast -l /var/log/snort/
    cd /var/log/snort/
    tail -f ./alert
    

    4.2 下载链接

    下载链接下载链接
    libpcap下载地址dnet下载地址
    daq下载地址zlib下载地址
    LuaJIT下载地址openssl下载地址
    BASE下载地址snort下载地址
    barnyard2下载地址Adobd下载地址

    4.3 参考

    Ubuntu 16.04搭建LAMP开发环境

  • 相关阅读:
    hdu 1015 Safecracker 暴力搜索
    hdu 1239 Calling Extraterrestrial Intelligence Again 枚举
    hdu 3747 Download 菜鸟杯
    hdu 3744 A Runing Game 菜鸟杯
    Request.QueryString 使用时候应该注意的地方。
    图片 上一张 下一张 链接效果
    ASP.NET 输出缓存的移除
    RSS 消费
    RSS 订阅功能的实现
    创建型模式单件模式(1)
  • 原文地址:https://www.cnblogs.com/jiufang/p/14490361.html
Copyright © 2011-2022 走看看