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

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

centos7 uginx命令 centos nc_php

如出现“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

centos7 uginx命令 centos nc_数据库_02

二、将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

编译时遇到如下错误,定位到源码,注释掉该行即可

centos7 uginx命令 centos nc_mysql_03

配置
# 首先在/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

centos7 uginx命令 centos nc_centos_04

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

centos7 uginx命令 centos nc_数据库_05


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

centos7 uginx命令 centos nc_centos_06


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

centos7 uginx命令 centos nc_mysql_07


Step3:设置管理员账号密码

centos7 uginx命令 centos nc_数据库_08


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

centos7 uginx命令 centos nc_centos7 uginx命令_09


centos7 uginx命令 centos nc_centos_10


Step5:完成配置后的界面

centos7 uginx命令 centos nc_centos7 uginx命令_11

三、启动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

centos7 uginx命令 centos nc_centos_12


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

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

正常启动结果如图

centos7 uginx命令 centos nc_数据库_13


centos7 uginx命令 centos nc_数据库_14

四、其他参考

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