Snort:Barnyard2+MySQL+BASE 基于Ubuntu 14.04SNORT

首先明确操作系统平台是Ubuntu 14.04 LTS

现在我们要在Ubuntu 14.04上部署snort NIDS(入侵检测系统)。

需要这些东西:

SNORT / Barnyard2 / Mysql / Apache2 / BASE

在进行所有工作之前,请执行以下命令,确保安装必要的软件(工具链)

<span style="font-family:Hiragino Sans GB;">sudo apt-get install -y build-essential </span><span style="font-family:Comic Sans MS;">libpcap0.8-dev</span><span style="font-family: 'Hiragino Sans GB';"> </span><span style="font-family:Hiragino Sans GB;">libpcre3-dev libdumbnet-dev bison flex zlib1g-dev</span>

SNORT

在Ubuntu 14.04安装snort可以有两种方式

一种:

sudo apt-get install snort

另外一种是从源代码安装。

既然有简单地方法,那就选择从软件源安装,即选择第一种。

如果这种方式出错的话,你可能需要依次执行:

sudo apt-get update

sudo apt-get upgrade

测试看看,执行:

snort -V

如果显示出以下:

   ,,_     -*> Snort! <*-
  o"  )~   Version 2.9.7.0 GRE (Build 149)
   ''''    By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
           Copyright (C) 2014 Cisco and/or its affiliates. All rights reserved.
           Copyright (C) 1998-2013 Sourcefire, Inc., et al.
           Using libpcap version 1.5.3
           Using PCRE version: 8.31 2012-07-06
           Using ZLIB version: 1.2.8

说明安装成功了!祝贺!

接着我们要修改snort的配置文件(注意我们使用的软件源方式,故配置文件路径较为固定)

sudo vim /etc/snort/snort.conf

将115行(大概位置)修改如下(如果一样的话则不修改)

var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules

目的在于指定规则文件存放的路径。

在第51行 :

ipvar HOME_NET 192.168.1.0/24

第536行,修改成如下所示 :

output unified2: filename snort.log, limit 128, mpls_event_types, vlan_event_types

(如果文件本身就和我这里修改后的一样则没必要修改)

现在启动测试SNORT :

sudo service snort restart

删除之前日志中得内容(我们改变了日志格式,使用了时间戳格式)

sudo rm /var/log/snort/snort.log

(题外话:第51行没必要修改,因为被/etc/snort/snort.debian.conf覆盖了)

现在我们要测试下snort的规则。

/etc/snort/rules是我们的用于存放规则文件的路径。以后snort就是根据诸多的规则文件给我们提供预警和提示。

打开规则文件:

sudo vim /etc/snort/rules/local.rules

local.rules是用于自定义规则的规则文件。然后添加自己的规则到local.rules:

alert icmp any any -> $HOME_NET any (msg:"ICMP Test NOW!!!"; classtype:not-suspicious; sid:1000001; rev:1;)
alert tcp any any -> $HOME_NET 80 (msg:"HTTP Test NOW!!!"; classtype:not-suspicious; sid:1000002;  rev:1;)

这两条规则大概就是说任何发往本机的ICMP和HTTP数据包都会触发警告!

保存退出。

为了便于测试,继续修改snort.conf文件。大概在573行的位置。作如下操作:

将除了local.rules之外的规则文件全部去除(不包含进来)。(也就是接下来数十行的include)。

最终这样:

# site specific rules
include $RULE_PATH/local.rules

(这是为了便于测试)

sudo snort -T -c /etc/snort/snort.conf

如果看到显示结果如下:

...
Snort successfully validated the configuration!
Snort exiting

并且还能在诸多输出信息中找到如下输出:

+++++++++++++++++++++++++++++++++++++++++++++++++++
Initializing rule chains...
1 Snort rules read
    1 detection rules
    0 decoder rules
    0 preprocessor rules
1 Option Chains linked into 1 Chain Headers
0 Dynamic rules
+++++++++++++++++++++++++++++++++++++++++++++++++++

+-------------------[Rule Port Counts]---------------------------------------
|             tcp     udp    icmp      ip
|     src       0       0       0       0
|     dst       0       0       0       0
|     any       0       0       1       0
|      nc       0       0       1       0
|     s+d       0       0       0       0
+----------------------------------------------------------------------------

再次祝贺!规则成功加载,测试通过!

作了以上修改之后,下面开始真正的测试。

sudo snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0

随后,你可以使用另一台电脑或者开另外一个terminal使用ping命令,ping测试主机。

比如:ping localhost

你应该能在测试主机上看到相似的如下输出:

10/31-02:27:19.663643  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.74 -> 10.0.0.64
10/31-02:27:19.663675  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.64 -> 10.0.0.74
10/31-02:27:20.658378  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.74 -> 10.0.0.64
10/31-02:27:20.658404  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.64 -> 10.0.0.74
10/31-02:27:21.766521  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.74 -> 10.0.0.64
10/31-02:27:21.766551  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.64 -> 10.0.0.74
10/31-02:27:22.766167  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.74 -> 10.0.0.64
10/31-02:27:22.766197  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.64 -> 10.0.0.74
^C*** Caught Int-Signal

(按ctrl+c结束)

然后你去查看/var/log/snort,你也会发现有被命令为snort.log.nnnnnn(nnnn代表数字),这些文件中包含的和屏幕上打印出来的是一样的信息。

祝贺!现在我们已经能够根据自己的规则显示警告信息了。

Barnyard

这是来干嘛的?简单地说,他将读取snort的二进制文件,并将其存储在MySQL数据库中。

执行以下命令会安装一些必要的软件。还会用到LAMP,如何快速安装?

(请确保之前没有安装过LAMP组件中任何一个)请参考:点击打开链接

sudo apt-get install -y libmysqlclient-dev autoconf libtool

在/etc/snort/snort.conf文件的520行附近(大概位置)添加如下并保存文件。

output unified2: filename snort.u2, limit 128

接下来安装和配置Barnyard:

下载Barnyard:

wget https://github.com/firnsy/barnyard2/archive/v2-1.13.tar.gz -O barnyard2-2-1.13.tar.gz

依次执行:

tar zxvf barnyard2-2-1.13.tar.gz
cd barnyard2-2-1.13
autoreconf -fvi -I ./m4

64bit和32bit机器分别执行以下:

./configure --with-mysql --with-mysql-libraries=/usr/lib/x86_64-linux-gnu --with-mysql-includes=/usr/include/
./configure --with-mysql --with-mysql-libraries=/usr/lib/i386-linux-gnu --with-mysql-includes=/usr/include/

继续:

make
sudo make install
sudo cp /usr/local/etc/barnyard2.conf /etc/snort
sudo mkdir /var/log/barnyard2
sudo chown snort.snort /var/log/barnyard2
sudo cp schemas/create_mysql /usr/src

编辑:

sudo gedit /etc/snort/barnyard2.conf

#227行 改为:

output alert_fast                                      ( instead of output alert_fast: stdout )

#348行, 去掉注释:

output database: log, mysql, user=snort password=secret2 dbname=snort host=localhost

( 用你的snort用户的密码代替secret2 ,接下来在MySQL中会用到secret2)

MySQL

登录MySQL,使用你在安装lamp时设置的MySQL的root密码登录。

sudo mysql -u root -p

[ 输入MySQL的root密码 ]

在MySQL控制台依次输入以下内容(注意分号结尾):

create database snort;

create database archive;

grant usage on snort.* to [email protected];

grant usage on archive.* to [email protected];

set password for [email protected]=PASSWORD(‘secret2‘);

grant all privileges on snort.* to [email protected];

grant all privileges on archive.* to [email protected];

flush privileges;

exit

重新登录MySQL控制台,依次键入:

use snort;

source /usr/src/create_mysql;

show tables;                                                 

exit

Snort 和Barnyard 测试

运行:

<span style="font-size:12px;">sudo snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0 -D</span>

你不会看到输出结果,因为程序在后台运行的。

同样ping你的主机。

继续运行以下:

<span style="font-size:12px;">sudo barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.u2 -w /var/log/snort/barnyard2.waldo -g snort -u snort</span><span style="font-size: 18.6666660308838px;">
</span>

应该能看到以下输出:

--== Initialization Complete ==--

  ______   -*> Barnyard2 <*-
 / ,,_  \  Version 2.1.13 (Build 327)
 |o"  )~|  By Ian Firns (SecurixLive): http://www.securixlive.com/
 + '''' +  (C) Copyright 2008-2013 Ian Firns <[email protected]>

Using waldo file '/var/log/snort/barnyard2.waldo':
    spool directory = /var/log/snort
    spool filebase  = snort.u2
    time_stamp      = 1412527313
    record_idx      = 16
Opened spool file '/var/log/snort/snort.u2.1412527313'
Closing spool file '/var/log/snort/snort.u2.1412527313'. Read 16 records
Opened spool file '/var/log/snort/snort.u2.1412528990'
Waiting for new data

使用ctrl+c结束。

如果你好奇数据库发生了什么?可以检测下:

mysql -u snort -p -D snort -e "select count(*) from event"

应该会出现以下结果:

+----------+
| count(*) |
+----------+
|       4  |
+----------+

***如果出现少了一个sid-msg.map文件的错误,以下方式修复:

cd /usr/share/oinkmaster

sudo bash -c "sudo ./create-sidmap.pl /etc/snort/rules > /etc/snort/sid-msg.map"

BASE

首先:

sudo apt-get install libphp-adodb

继续修改配置文件:

编辑 "/etc/php5/apache2/php.ini", 找到这一行"error_reporting" ,修改它:

error_reporting = E_ALL & ~E_NOTICE

编辑/etc/apache2/apache2.conf 添加许可www/base :

-----------------------------------------------------------------------------------------------------
<Directory /var/www/html/base>
    AllowOverride All
    Require all granted
</Directory>
-----------------------------------------------------------------------------------------------------

重启apache2 :

sudo service apache2 restart

安装BASE依赖:

sudo apt-get install php-pear

sudo apt-get install libwww-perl                                                       

sudo apt-get install php5-gd

sudo pear config-set preferred_state alpha

sudo pear channel-update pear.php.net

sudo pear install --alldeps Image_Color Image_Canvas Image_Graph

如果得到以下错误: ‘ could not extract the package.xml file
‘ ,那么以下方法可以修复这个错误。

当下载了这6个pear包之后,我们手动安装 ( 3 + 3 dependencies ).

如下:

cd /build/buildd/php5-5.5.9+dfsg/pear-build-download
ls

这里应该有6个 .tgz 包. 手动安装:

sudo tar zxf Image_Color*.tgz

sudo cp package.xml ./Image_Color*/
cd Image_Color*
sudo pear install package.xml
cd ..

按照上面方法依次安装其余的五个包。

Image_Canvas

Numbers_Roman

Math_BigInteger

Numbers_Words

Image_Graph

BASE的安装:

cd /usr/src

sudo wget http://sourceforge.net/projects/secureideas/files/BASE/base-1.4.5/base-1.4.5.tar.gz

sudo tar -zxf base-1.4.5.tar.gz

sudo cp -r base-1.4.5 /var/www/html/base

sudo chown -R www-data:www-data /var/www/html/base

sudo service apache2 restart

BASE设置:

浏览器输入:http://localhost/base

(语言就选择默认的英文)

Step 1) 输入路径 : /usr/share/php/adodb

Step 2)  Database Name :                                         snort

Database Host :                                         localhost

Database User Name:                                 snort

Database Password :                                  secret2(之前输入的)

( tick ‘Use Archive Database‘ )

Archive Database Name :                            archive

Archive Database Host :                              localhost

Archive Database User Name :                    snort

Archive Database Password :                     secret2(之前输入的)

Step 3)

Full admin name ( xxx )

[GUI password]    ( Secret3 )

Full admin name ( XXXX )

Step 4)    点击 ‘ Create baseAG‘

Step 5)    点击 ‘ Now continue to Step 5 ‘ and login ( XXX/ secret3 )

然后ping主机的话,不出意外每3min就会跟新显示snort的信息。

时间: 2024-09-30 21:01:14

Snort:Barnyard2+MySQL+BASE 基于Ubuntu 14.04SNORT的相关文章

【转】基于Ubuntu 14.04 LTS编译Android4.4.2源代码

原文网址:http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源代码 Dennis Hu 2014-4-21 环境准备: 基本环境:ubuntu-14.04-desktop-64bit LTS(裸机或者Windows下虚拟机安装均可,12.04也可以,但10.04目前不支持了) 其他要求:空闲磁盘空间100G以上,代码部分接近10G,其他为git和编译中间和目标文件准备 ===

基于Ubuntu 14.04 LTS编译Android4.4.2源代码

转载自:雨水:http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源代码 Dennis Hu 2014-4-21 环境准备: 基本环境:ubuntu-14.04-desktop-64bit LTS(裸机或者Windows下虚拟机安装均可,12.04也可以,但10.04目前不支持了) 其他要求:空闲磁盘空间100G以上,代码部分接近10G,其他为git和编译中间和目标文件准备 =

基于Ubuntu 14.04构建tomcat7镜像

1.创建Dockerfile文件 # Pull base image FROM ubuntu:14.04 MAINTAINER shencq "[email protected]" # update source RUN echo "deb http://archive.ubuntu.com/ubuntu trusty main universe"> /etc/apt/sources.list RUN apt-get update # Install curl

mysql数据库的使用与理解( 基于ubuntu 14.0.4 LTS 64位)

1.mysql数据库的组成与相关概念 首先明白,mysql是关系型数据库,和非关系型数据库中最大的不同就是表的概念不一样. + 整个mysql环境可以理解成一个最大的数据库:A + 用mysql创建的 数据库 B是属于A的,是数据的仓库,相当于系统中的文件夹 + 数据表 C:是存放数据的具体场所,相当于系统中的文件,一个数据库B中包含若干个数据表C(注意此处的数据库B和A不一样) + 记录 D:数据表中的一行称为一个记录,因此,我们在创建数据表时,一定要创建一个id列,用于标识"这是第几条记录&

ubuntu 14 密码忘记-解决方法

尝试遍了各种Linux发行版,半年前成为深度Linux的脑残粉,脑残至今... Deepin本来就是基于Ubuntu,所以直接上手无压力,本地化和UI都是极好的 -_-!!  Linux Deepin 2014.2基于Ubuntu 14.04 TLS开发.该版本系统已经改由Grub2引导,昨天把系统玩坏了,愁死人,今天终于搞定,准备记篇博客,顺便讲解下新版grub2怎样用root权限启动. 以下演示以Linux Deepin 2014.2截图,Ubuntu类似(我猜的!) 1. 首先开机选择"A

[入侵检测系统][IDS]CentOS6.6搭建基于snort+barnyard2+base的入侵检测系统

CentOS6.6搭建基于snort+barnyard2+base的入侵检测系统 由于网上对于linux下搭建基于snort的入侵检测系统不是很详细,这里我写个文档给大家参考参考: 本文档主要使用的软件已上传至百度云:http://pan.baidu.com/s/1qWui0c0 密码:y80f,其他软件可以根据文档中的命令在线下载安装: 文档中的命令大多可以直接使用(除非时间太久导致系统/软件/链接失去支持等),顺利的话,可以在2小时内搭建完毕: 如果安装报错,请检查步骤是否正确,然后百度/g

ubuntu 14.04安装nginx+php+mysql

前段时间的折腾,颇费一番周折,过程中发现网上的许多资料比较老旧过时了,所以在这里也简单把过程重新整理一遍,争取一帖解决问题. 基于最新的Ubuntu 14.04(2014年9月)搭建nginx.php.mysql环境,以下全部命令行操作: 1,由于需要大量的权限操作,方便起见临时提升权限,使用root账号sudo su 2,安装apt源管理工具.添加nginx和php的安装源apt-get install python-software-propertiesadd-apt-repository

ubuntu 14.04下简易安装php5.5 + apache2 + redis + mysql

我是在Windows 10下安装的vagrant环境. 1.首先官网:https://www.vagrantup.com/ 下载最新版的vagrant,安装:安装虚拟机VirtualBox:https://www.virtualbox.org/ : BOX环境我以前用的是centos,后来感觉ubuntu用着更顺手,作为本机开发环境,直接选用了LTS版,也就是ubuntu 14.04 :https://atlas.hashicorp.com/ubuntu/boxes/trusty64 [我的bo

Linux Ubuntu 14.04安装LAMP(Apache+MySQL+PHP)网站环境

从虚拟主机到VPS/服务器的过度,对于普通的非技术型的站长用户来说可能稍许有一些困难,麦子建议我们如果能够在虚拟主机环境中满足建站需要的, 还是用虚拟主机比较好.除非我们真的有需要或者希望从虚拟主机过度到VPS/服务器中来,毕竟后者的自由度比较大,有些项目需要特点的环境支持. 在这篇文章中,麦子将分享我们常用的LAMP环境部 署,我比较喜欢用编译脚本的方法,因为编译脚本可以比WEB面板和网站公开的一键包,当然,对于初级上手的用户来说WEB面板和经过大量用户证明的一键包 也是比较好的,比如LNMP