基于CentOS平台的Snort安装教程

基于CentOS平台的Snort安装教程


一、背景

入侵检测系统(IDS)不但可以主动发现网络内遭受攻击,还可以作为防火墙的补充,虽然不能阻止网络入侵行为,但是能够帮助系统对网络攻击进行报警和分析。相当于部署在网络中的隐形摄像头。

然而Snort作为一种开源IDS系统,网上遍布各种版本的不同类型的安装资料,给初学者带来诸多不便,往往参考了一堆文档,还是无法达到预期。本教程基于Cent OS 6.8 最小化安装为基础,展示了在其中安装Snort2.9.7.0的全过程。

适用于初级网络运维人员参考使用。


二、准备软件环境


(1).准备虚拟机工具Vmware or VirtualBox Or Other.


(2).下载操作系统镜像: http://pan.baidu.com/s/1pKSmNs3 附件中包含了实验里涉及到的软件包和脚本文件


(3).安装虚拟机(本文以Vmware workstation 12为例进行安装)

wKioL1hOWffB6XyHAAE5Vz8FtlM374.jpg-wh_50

图1

(4).将系统IP地址改为静态IP


认安装,网络IP是自动获取,我们需要改成固定IP。

#ifconfig-a \\查看所有网卡的状态

#vi/etc/sysconfig/network-scripts/ifcfg-eth0 \\编辑网卡配置文件

DEVICE="eth0"

BOOTPROTO="dhcp"

HWADDR="00:0C:29:BA:53:4E"

IPV6INIT="yes"

NM_CONTROLLED="yes"

ONBOOT="yes"

TYPE="Ethernet"

UUID="685d0725-02ab-41b9-b9bf-6a52fc68c0f8"

下面开始改成静态IP

BOOTPROTO="dhcp" -> BOOTPROTO="static"

接着,增加以下内容

IPADDR=192.168.91.29

NETMASK=255.255.255.0

GATEWAY=192.168.91.2

DNS1=192.168.91.2

DNS2=8.8.8.8 \\DNS配置根据当地网络供应商进行添加

DNS还可以在其他的文件进行配置

# vi /etc/resolv.conf

加入

nameserver 202.96.2.2

退出保存,重启网络服务。实际 /etc/resolv.conf 是自动调用之前网卡配置文件DNS配置信息。

(5).本套教程主要基于网络安装所以大家必须保证网络畅通。


三、准备环境


1.安装wget工具

#yum install -ywget

更换成阿里云的源

#wget -O/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

#yum clean all

#yum makecache

更新系统(完成后会升级所有包,改变软件设置和系统设置,系统版本内核都升级)

#yum-y update

安装epel源,EPEL,即ExtraPackages for Enterprise Linux,这个软件仓库里有很多非常常用的软件,而且是专门针对RHEL设计的,对RHEL标准yum源是一个很好的补充,完全免费使用,由Fedora项目维护,EPEL 包含一个叫做epel-release的包,这个包包含了EPEL源的gpg密钥和软件源信息。您可以通过yum安装到您的企业版Linux发行版上。

检查系统是否安装epel-release

#rpm -q epel-release

packageepel-release is not installed

#yuminstall -y epel-release

或者用下面的命令也有同样效果

rpm -ivhhttp://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

查看其所依附的软件文件

查看 EPEL Repo 中是否存在某个软件包

yumsearch package-name


2.安装基本环境和依赖包

#yum install -y gcc gcc-c++flex bison zlib* libxml2 libpcaP* pcre* tcpdump git libtool curl man make


3.解压DAQ、libdnet、snort

cd /usr/local/src

tar -zxvf/root/Desktop/libdnet-1.12.tgz

tar -zxvf/root/Desktop/daq-2.0.4.tar.gz

tar -zxvf /root/Desktop/snort-2.9.7.0.tar.gz


安装libdnet-1.12.tgz

cd/usr/local/src/libdnet-1.12/

./configure

make &&make install


wKiom1hOXs2DuWekAAAJnlMr88Y045.jpg

友情提示

有些初学者会选择安装rpm包,尤其手动安装libdnet这个包时会遭遇以下问题:

[root@localhost ~]# rpm -ivh libdnet-1.12-6.el6.i686.rpm

warning: libdnet-1.12-6.el6.i686.rpm:Header V3 RSA/SHA256 Signature,key ID 0608b895: NOKEY

error: Failed dependencies:

libc.so.6is needed by libdnet-1.12-6.el6.i686

libc.so.6(GLIBC_2.0)is needed by libdnet-1.12-6.el6.i686

libc.so.6(GLIBC_2.1)is needed by libdnet-1.12-6.el6.i686

libc.so.6(GLIBC_2.1.3)is needed by libdnet-1.12-6.el6.i686

libc.so.6(GLIBC_2.3)is needed by libdnet-1.12-6.el6.i686

libc.so.6(GLIBC_2.3.4)is needed by libdnet-1.12-6.el6.i686

libc.so.6(GLIBC_2.4)is needed by libdnet-1.12-6.el6.i686

libc.so.6(GLIBC_2.7)is needed by libdnet-1.12-6.el6.i686


安装DAQ 这是安装snort的前提。下面开始安装DAQ

cd daq-2.0.4

./configure

make &&make install

安装snort2.9,(安装snort前一定要编译安装libdnet-1.12.tgz)

cd/usr/local/src/snort-2.9.7.0

./configure--enable-sourcefire

make &&make install


四、添加用户和组


创建用户、组、设置权限因为在root身份下解包的文件权限都是跟root有关,所以要修改成snort用户的属主和相关权限。


groupadd -g 40000snort

useradd snort -u40000 -d /var/log/snort -s /sbin/nologin -c SnorT_IDS -g snort

cd /etc/snort

chown -Rsnort:snort *

\\执行这条命令前先看看文件的属主

执行之后:

[root@localhost snort]# ls -l

total 312

-rw-r--r--. 1 snort snort 1281 Nov 2806:14 attribute_table.dtd

-rw-r--r--. 1 snort snort 3757 Nov 28 06:14 classification.config

drwxr-xr-x. 2 snort snort 4096 Nov 182014 etc

-rw-r--r--. 1 snort snort 23058 Nov 28 06:14 file_magic.conf

-rw-r--r--. 1 snort snort 31643 Nov 28 06:14 gen-msg.map

-rw-r--r--. 1 snort snort 13478 Nov 28 06:14 Makefile

-rw-r--r--. 1 snort snort 190 Nov 28 06:14 Makefile.am

-rw-r--r--. 1 snort snort 12388 Nov 28 06:14 Makefile.in

drwxr-xr-x. 2 snort snort 4096 Nov 182014 preproc_rules

-rw-r--r--. 1 snort snort 687 Nov 28 06:14 reference.config

drwxr-xr-x. 2 snort snort 4096 Nov 28 06:15 rules

-rw-r--r--. 1 snort snort 26772 Nov 28 06:14 snort.conf

drwxr-xr-x. 4 snort snort 4096 Nov 112014 so_rules

-rw-r--r--. 1 snort snort 2335 Nov 28 06:14 threshold.conf

-rw-r--r--. 1 snort snort 160606 Nov 2806:14 unicode.map

chown -R snort:snort/var/log/snort


五、配置Snort


1.新建/etc/snort目录

#mkdir /etc/snort

#cd /etc/snort

cp/usr/local/src/snort-2.9.7.0/etc/*.

将/usr/local/src/snort-2.9.7.0/etc下配置文件复制到当前目录

tar -zvxf/root/Desktop/snortrules-snapshot-2970.tar.gz把规则包解压到当前目录

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

在/etc/snort/rules下新建white_list.rules和black_list.rules两个文件


2.编辑snort配置文件


vi /etc/snort/snort.conf

45 ipvar HOME_NET any > ipvar HOME_NET 192.168.x.x 自己的IP网段,写成CIDR格式,可以添加多个网段

举例:ipvarHOME_NET [192.168.0.0/16,172.16.0.0/16]

ipvar EXTERNAL_NET any >ipvar EXTERNAL_NET!$HOME_NET 也可以不改

104var RULE_PATH ../ruls > var RULE_PATH /etc/snort/rules

105var SO_RULE_PATH ../so_rules >var SO_RULE_PATH/etc/snort/so_rules

106var PREPROC_RULE_PATH ../preproc_rules> var PREPROC_RULE_PATH/etc/snort/preproc_rules

113var WHITE_LIST_PATH ../rules> 109 varWHITE_LIST_PATH /etc/snort/rules

114var BLACK_LIST_PATH ../rules> 110 var BLACK_LIST_PATH /etc/snort/rules



3.设置log目录属组 snort.snort

config logdir :/var/log/snort

4.配置输出插件


调到521行修改成如下内容


output unified2:filename snort.log,limit 128


注意:也可以启用tcpdump插件,启用后在/var/log/snort/目录下产生tcpdump.log.时间戳的文件

tcpdump -r 文件名来读取这个文件

在OSSIM里是这样写的“output unified2: filenamesnort,limit 128”

还可以,取消snort.conf文件中以下几行的注释,可以使snort向系统日志文件中日志数据:报警存储在哪儿?

output alert_syslog: LOG_AUTH LOG_ALERT

输出格式如下:

May 10 00:03:38 xxxxxx snort: INFO - ICQAccess [Classification:

content:"MKD / " Priority: 0]:1.1.1.1:5435 -> 1.2.2.5:80


六、配置开机自动启动 snort程序


cd/usr/local/src/snort-2.9.7.0/rpm

cp snortd /etc/init.d/snortd

cp/usr/local/src/snort-2.9.7.0/rpm/snort.sysconfig /etc/sysconfig/snort

chkconfig--add /etc/init.d/snortd

chkconfigsnortd on


新建连接文件

cd /usr/sbin

ln -s /usr/local/bin/snort snort

在/usr/sbin/目录中新建连接文件snort


新建目录设置权限

mkdir -p/usr/local/lib/snort_dynamicrules

chown -Rsnort:snort /usr/local/lib/snort_dynamicrules

chown -R 755/usr/local/lib/snort_dynamicrules


七、测试snort

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

如果配置正确系统提示成功。

#snort -vde


添加一条规则测试

#vi /etc/snort/rules/local.rules

加入如下内容

alert icmp any any -> $HOME_NET any (msg:"Ping";sid:1000003;rev:1;)


其他规则

dropicmp any any -> any any (itype:0;msg:"Chan Ping";sid:1000002;)

alerticmp any any -> $HOME_NET 81 (msg:"Scanning Port 81";sid:1000001;rev:1;)

alerttcp any any -> $HOME_NET 22 (msg:"Scanning Port 22";sid:1000002;rev:1;)

alerticmp any any -> any any (msg:"UDP Tesing Rule";sid:1000006;rev:1;)

alert tcp any any -> $HOME_NET 80(msg:"HTTP Test!!!"; classtype:not-suspicIoUs; sid:1000005; rev:1;)


Ping Snort主机,使其产生alert

在Snort主机上操作:

snort -i eth0 -c /etc/snort/snort.conf -A fast-l /var/log/snort/


如果顺利,便可以在alert中产生告警,用下面命令查看

#cd /var/log/snort/

#tail -f ./alert


八、安装 MysqL

#yum install -yMysqL-server MysqL-devel PHP-MysqL PHP-adodb PHP-pear PHP-gd libtool PHP-imapPHP-ldap PHP-mbstring PHP-odbc PHP-pear PHP-xml PHP-pecl-apc

chkconfig --levels235 MysqLd on

/etc/init.d/MysqLdstart


接着为数据库管理员赋密码,我们可以用MysqL_secure_installation(secure installation是安全的安装模式,用来安全的初始化我们的MysqL服务器)命令也可以用下面的方法


/usr/bin/MysqLadmin-u root password '123456'

注意以后用root用户登录PHPmyadmin是密码也是这个。


九、建库并设定读取权限

#MysqL -u root -p

输入刚 设置的密码123456

MysqL>create database snort;

MysqL>use snort;

MysqL>create user 'snort'@'localhost' IDENTIFIED BY '123456';

这里的123456是MysqL snort 的password

创建名为snort、密码为123456的数据库用户并赋予名为snort数据库权限

MysqL>grant create,select,update,insert,delete on snort.* tosnort@localhost identified by '123456';

MysqL>set password for ‘snort’@’localhost’=password('123456');


MysqL>source/usr/local/src/barnyard2-1.9/schemas/create_MysqL; 注意路径先解压barnyard2-2-1.13这个文件执行前确保snort库被选中,路径写对。

报错:ERROR 1046 (3D000): No database selecte

新建数据库也可以用以下命令:

#echo "create database snort;" |MysqL -u root -p

提示一下错误

ERROR:

Failed to open file'/usr/local/src/barnyard2-2-1.13/schemas/create_MysqL',error: 2

MysqL>usr snort;

MysqL>show tables;

+------------------+

|Tables_in_snort |

+------------------+

|data |

|detail |

|encoding |

|event |

|reference_system |

|schema |

|sensor |

|udphdr |

+------------------+

16rows in set (0.00 sec)

MysqL>flush privileges;

MysqL>exit


十、安装配置Barnyard2


Barnyard2的作用是读取snort产生的二进制事件文件并存储到MysqL

1.源码包方式安装

cd /usr/local/src/

tar zxvf /root/Desktop/barnyard2-1-9.tar.gz

cd barnyard2-1-9/

./configure--with-MysqL --with-MysqL-libraries=/usr/lib64/MysqL

make &&make install


2.GIT安装

也下面的可以安装

git clone git://github.com/firnsy/barnyard2.git

cd barnyard2/

./autogen.sh

autoreconf -fvi -I ./m4

./configure --with-MysqL --with-MysqL-libraries=/usr/lib64/MysqL/

make && make install


3.配置barnyard2

首先创建目录和文件

mkdir/var/log/barnyard2

touch /var/log/snort/barnyard2.waldo

[root@localhost barnyard2]# ls -l/var/log/snort/barnyard2.waldo

-rw-r--r--. 1 root root 0 Nov 28 06:56 /var/log/snort/barnyard2.waldo

#chown snort.snort /var/log/snort/barnyard2.waldo

ls -l /var/log/snort/barnyard2.waldo

-rw-r--r--. 1 snort snort 0 Nov 28 06:56 /var/log/snort/barnyard2.waldo

#cp/root/Desktop/barnyard2-1.9/etc/barnyard2.conf /etc/snort

4.修改配置文件,加入如下行内容

#vi/etc/snort/barnyard2.conf

config logdir:/var/log/barnyard2 \\该目录权限snort.snort

confighostname:localhost

configinterface:eth0

config waldo_file:/var/log/snort/barnyard2.waldo

output database: log,MysqL,user=snortpassword=123456 dbname=snort host=localhost

编辑完成后保存退出


接着新建一个文件

touch/var/log/snort/barnyard2.waldo


5.修改属主

chown snort.snort /var/log/barnyard2

chown snort.snort/var/log/snort/barnyard2.waldo

cp /etc/snort/etc/sid-msg.map/etc/snort


6.Snort 和Barnyard 测试

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

你不会看到输出结果,因为程序在后台运行,-D 参数表示后台运行。

同样ping你的主机。 继续运行以下内容

barnyard2 -c /etc/snort/barnyard2.conf-d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo -g snort -usnort

wKioL1hOY-aA0fH3AAC4lXkaeqs715.jpg

注意:跟snort命令类似,barnyard2后面还也可以跟参数 “-T”表示测试。另外,针对baryard2测试时的问题在http://edu.51cto.com/course/course_id-7896.html课程中有详细的视频讲解。


此时,报警到底存入到数据库了吗?,可以检测下:

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

wKioL1hOZIegO-1ZAAAkBbnRXHI059.jpg


如果没有那么下面需要检查配置文件并重启程序,对于他的参数解释如下:

#barnyard2-c /etc/snort/barnyard2.conf -d /var/log/snort/ -f snort.log -w/var/log/snort/barnyard2.waldo

解释

-c该选项告诉Barnyard 配置文件的路径,是必选项。

-d告诉Barnyard Snort Unified格式文件的路径,所有Unified文件必须放在该目录下,必选项。

-f该选项告诉Barnyard以连续方式运行时需要的Unified文件的基本名字,因为Snort在每次生成的Snort Unified文件后面加了一个UNIX时间戳;基本名字就是去掉时间戳后缀的文件名。

-w该选项开启检验指示功能,用于告诉Barnyard检验点文件的名字,也叫做waldo文件。这个文件用于记录文件中最近处理的报警。无果不使用waldo文件,则Barnyard必须完整的载入一个日志文件,这就好像把已经存在的报警信息又传送到了入侵数据库中。

-R 以调试模式运行


本文到此已经介绍的很多了,大家需要多花时间练习,在下回为大家介绍如何配置Web+BASE。完全根据本文录制的视频也已经上线,大家可以参考http://edu.51cto.com/course/course_id-7896.html

相关文章

Centos下搭建性能监控Spotlight
CentOS 6.3下Strongswan搭建IPSec VPN
在CentOS6.5上安装Skype与QQ
阿里云基于centos6.5主机VPN配置
CentOS 6.3下配置multipah
CentOS安装、配置APR和tomcat-native