Snort企业部署实战

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://chenguang.blog.51cto.com/350944/969641

Snort企业部署实战

背景

      我们知道企业网络目前威胁来自两个位置:一个是内部,一个是外部。来自外部的威胁都能被防火墙所阻止,但内部攻击都不好防范。因为公司内部人员对系统了解很深且有合法访问权限,所以内部攻击更容易成功。IDS为信息提供保护,已经成为深度防御策略中的重要部分。IDS与现实世界里的防窃报警装置类似。他们都对入侵进行监控,当发现可疑行为时,就向特定的当事人发出警报。IDS分为两类:主机IDS(HIDS)和网络IDS(NIDS)。HIDS安装在受监控主机上,拥有对敏感文件的访问特权。HIDS利用这一访问特权对异常行为进行监控。NIDS存在于网络中,通过捕获发往其他主机的流量来保护大量网络设施。HIDS和NIDS都有各自的优点和缺点,完整的安全解决方案应包括这两种IDS,对于这一点比较难做到。不了解这一领域的人常常认为IDS就像一把***,能解决所有安全问题。例如有的单位花了大笔的钱购置了商业IDS由于配置不当反而搞得练练误报一下子就把数据库塞满了,大量丢包,进而崩溃。这种态度使人们以为只要将IDS随便安放在网络中就万事大吉了,不必担心任何问题,实际上远非如此。没有人会认为Email服务器直接连在Internet上就能正确运作。同样,你也需要正确的计划IDS策略,传感器的放置。下文以开源软件Snort的安装与维护为例,介绍正确地安装和维护IDS的思路和方法。

安装Snort

2.1安装准备工作

我们在安装前我们要知道我们需要监控的内容,理想的状况是对一切进行监控。所有网络设备和任何从外部到企业的连接都处在Snort的监视之下。尽管这一计划对小公司只有几十台机器是很可能实现的,但是当大型企业中连接上天台网络设备时,这成了难以施展的艰巨任务。为了加强snort检测的安全性,最好能为监控网段提供独立的智能交换机,如果你需要配置分布式的配置,可以吧服务器和控制台接在一个交换机上,二其他传感器放置在不同的物理位置,但这样的成本会有所增加。Snort IDS的维护问题是无法回避的。你迟早要对Snort特征更新并编写定制的规则,所以你还需要一个懂得维护IDS的专业人士。

2.2深入Snort

Snort包含很多可配置的内部组件,它们对误报、漏报以及抓包和记录日志等的性能都有很大影响。能深入了解Snort的内幕有助于有效地利用Snort监控人侵。还会帮助你根据自己的网络定制Snort,并且避免它的一些常见缺陷。

2.2.1用Libpcap输送Snort包

Snort没有自己的捕包工具,它需要一个外部的捕包程序库:libpcap。Snort利用libpcap独立地从物理链路上进行捕包,它可以借助libpcap的平台为一个真正的与平台无关的应用程序。直接从网卡捕包的任务由libpcap承担。这一捕获原始包的工具是由底层操作系统提供给其他应用程序使用的。Snort需要数据保持原始状态,它利用的就是原始包所有的协议头信息都保持完整,未被操作系统更改的特性来检测某些形式的攻击。由于利用libpcap获取原始包,一次只能处理一个包,这不是最好的方法,这也制约了它对千兆网络进行监控的瓶颈。

2.2.2包解码器

包一被收集到Snort必须对每一个具体的协议元素进行解码。在包通过各种协议的解码器时,解码后的包数据将堆满一个数据结构。包数据一被存人数据结构中,就会迅速被送到预处理程序和检测引擎进行分析。 

2.2.3预处理程序

Snort的预处理分为两类。它们可以用来针对可疑行为检查包或者修改包以便检测引擎能对其正确解释。预处理的参数可以通过snort.Conf配置文件调整。

预处理器:

 Frag2

 Stream4

 Stream4_reassemble

 Http_decode

 RPC_decode

 BO

 Telnet_decode

 ARPspoof

 ASNI_decode

 Fnord

 Conversation

 Portscan2

 SPADE

2.2.4检测引擎

检测引擎将流量与规则按其载人内存的顺序依次进行匹配。是Snort的一个主要部件。

2.2.5输出插件

Snort的输出插件接收Snort传来的入侵数据。输出插件的目的是将报警数据转储到另一种资源或文件中。

2.2.6 Snort的性能问题

Snort有效工作的性能可能会受到以下几种选择的限制:硬件、操作系统和连网的组件。

对snort的性能影响最大的是snort的配置设定以及规则集设置。内部瓶颈则主要出现在包解码阶段,要snort检查包的容,那么它比一般的规则都要更加耗费系统资源。启用的检查包内容的规则越多,snort的运行就需要越多的系统资源。如果要激活预处理程序中的某些设置选项,就会需要消耗额外的系统资源。最明显的例子就是启用在frag2预处理程序和stream4预处理程序中的“最大存储容量(memcap)”选项。如果您打算激活大量耗费资源的预处理程序选项,最好确定有足够的硬件资源的支持。我曾经遇到过一个用户花了大笔的钱购买了最先进的 IDS由于配置不当,连检测100M网都出现了丢包现象。

1)SPAN端口监控

在监控时我们必然需要做SPAN,SPAN端口监控是另外一种在现有网络结构中引入监控网段的方法。Cisco交换机的中高端产品都有SPAN端口或镜像端口。Span端口既可以是一个专用端口,也可以通过该端口实现交换机上所有的端口的配置选项设定。利用SPAN端口的特点实现监控功能是一种实用的方法。使用SPAN端口监控法并不会给所要监控的网络引入单点错误的问题。与网内Hub监控法相比,这是使用SPAN端口监控最大的优点。

注意:镜像顺序问题:当所监控的网络要升级为高带宽网络时,可以先是只镜像一个端口,对snort的性能观察一段时间,并根据需要进行调整。当snort的这个端口调整好了之后,可以切合实际的、循序渐进的增加别的端口,要注意的是,千万不能一下子增加过多的端口。用SPAN端口监控法将会降低本生交换设备的性能用SPAN端口会使交换设备的内存负担过重,从而使设备的性能下降。对流量的映是一个非常耗费内存的过程,

2.2.7.安装Snort 

操作系统:Red Hat Enterprise Linux 5.5 

数据库:MySQL:mysql-5.1

Web服务器:Apache:httpd-2.2

WEB语言:PHP:php-5.4

首先我们需要安装MySQL 、Apache(必须安装mod_ssl模块) 、PHP、并进行配置Apache,其详细安装过程可以参见《Linux企业应用案例精解》

1)安装主程序

#tar zxf snort-2.8.5.2.tar.gz

#cd snort-2.8.5.2

#./configure --with-mysql=/usr/local/mysql & make & make install

创建配置文件目录mkdir /etc/snort

创建日志目录mkdir /var/log/snort

2)安装snort规则

tar zxf snortrules-snapshot-2860.tar.gz

tar zxf snortrules-snapshot-CURRENT.tar.gz

mv rules/ /etc/snort

cp * /etc/snort/

修改/etc/snort/snort.conf文件

监听的本地网段var HOME_NET 192.168.150.0/24

有五行以output database: 开头的行,将其“#”号去掉。

知识点:Snort规则信息是由Sourcefire VRT(Sourcefire Vulnerability Research Team)开发和维护,Sourcefire VRT由一组研究网络安全前沿技术的专家组成,他们时时刻刻发现、评估、处理黑客活动、入侵尝试、恶意软件和系统漏洞的最新型动向。
Snort规则信息又叫Sourcefire VRT规则.

3) 创建snort数据库

mysql> create database snort;

mysql> connect snort;

mysql> source /usr/local/src/snort-2.8.5.2/schemas/create_mysql;

mysql>grant CREATE,INSERT,SELECT,DELETE,UPDATE on snort.* to snort;

mysql>grant CREATE,INSERT,SELECT,DELETE,UPDATE on snort.* to snort@localhost;

另外有兴趣的读者可以尝试使用phpMyadmin这一工具,phpMyAdmin是一个基于web的MySQL数据库管理工具。它能够创建和删除数据库,创建/删除/修改表格,删除/编辑/新增字段,执行SQL脚本等。

2.2.8启动snort

正确安装并配置完成以后,下一步我们需要启动snort

#snort -c /etc/snort/snort.conf

为了snort安全应避免用root身份运行snort,这时需要创建专用的用户和组

#useradd snort ,如果是redhat在创建用户的同时就创建了snort组

#snort –u snort –g snort –U –d –D –c /etc/snort/snort.conf

接下来就需要安装Acid+Adodb+Jpgraph, ACID(Analysis Console for Incident Databases)是snort使用的标准分析员控制台软件。ACID是一个基于PHP的分析引擎,它能够搜索、处理snort产生的数据库。下面是安装及配置过程。这一过程也非常简单将adodb和jpgraph的tar包复制到Apache根目录下,解开acid包后,修改acid_conf.php配置即可。注意Acid配置参数都在acid_config.php文件里,所有的值都必须放在双引号内(“),而且后面要加上分号(;)必须现已SSL模式启动Apache,定位到ACID的主页https://IP地址/acid/,如图1所示。

图1 ACID界面

2.2.9提高性能

如果是监控10/100M的网络还行,如果流量过大就需要提高snort的监控性能,目前最经济的方法是,在双网卡上运行Snort程序,可以配置Snort来侦听多个网卡,问题是Snort每个命令行选项(-i)只接受一个网卡。有种在多种网卡上运行Snort的方法:

 为每个网卡运行一个独立的Snort进程;

 通过绑定Linux内核的特征将所有的网卡绑定在一起。

用Snort监控多个网卡时选择哪种方法取决于你的环境和优先级等多种因素。运行多个Snort进程会增大工作量,并浪费大量的无法接受的处理器时间周期。如果你有可用的资源来运行两个或多个Snort进程,那么你应该考虑一下数据管理问题。假设所有的Snort实例以同样的方式配置,那么同样的攻击会被报告多次。这会令人侵检测系统管理员头疼,尤其是启用时报警的时候。当你面对不同的网卡有不同的入侵检测需求时,为每个网卡分配单个Snort程是最理想的。如果你为每个网卡都分配了一个独立的Snort进程,那么你就为每个网卡创建一个类似虚拟的传感器。在一个机器上架设几个“传感器”,你就可以为每个独立的Snort进程载入不同的配置、规则和输出插件。这最适合于独立的Snort进程。另一方面,如果你不能这样、或者不想为每个网卡启用额外的Snort进程,你可以将两个网卡绑定在一起。这样当你启用Snort时,就能用 -i命令选项指定个已被绑定的网卡(如bond0)。

为了实现这个目的,请编辑/etc/modules.conf,加入如下行:

alias bond0 bonding

现在,每次重启机器,你都需要在将IP地址信息分配给网卡之后输入下而的侖今桌渐活绑定的网卡:

ifconfig bondup

ifenslave bond0 eth0

ifenflave bond0 eth1

注意,你可将这些命令放在一个脚本里,在系统启动时运行该脚本。当运行Snort时,可以按如下方式使用的bond0网卡:

snort < options> -i bond0

维护Snort 

当你安装好系统后就必然会对系统进行维护,或是对Snort做一些重要的改动以保持它的相关性,比如升级规则集,修改配置选项,最后升级Snort应用程序本身。如果你运行的是多个传感器构成的分布式系统,虽然这些手工方法也是可取的,但手工修改多个传感器就会变得相当困难,还容易出错。

这是我们需要管理助手SnortCenter,它是一款基于Web方式升级和维护Snort配置的管理应用软件。是一款用于远程管理Snort传感器的应用软件。它用的是PHP/MySQL Web界面,安装完成启动界面如图2所示。

图2 SnortCenter 界面

特征:

l snort后台进程状态监视器;

l 远程snort停止/启动/重启;

l snortcenter用户的访问控制;

l 传感器组。

l ACID集成;

SnortCenter包括基于PHP的管理应用软件和SnortCenter代理。SnortCenter管理控制台安装在Snort服务器上,而SnortCenter传感器代理被安装在所管理的传感器中。SnortCenter增强了可能安装在分布式系统上的Snort,服务器端需要如下的软件包:

l MySQL;

l Apache;

l PHP;

l ADODB;

l OpenSSL;

l cURL

这里,除了cURL软件包,其他的软件包应该都是大家比较熟悉的,因为绝大多数的操作系统都包括这些软件包,SnortCenter管理控制台可运行在Windows、Linux和BSD系统上。SnortCenter传感器代理需要安装在基于UNIX操作系统的Perl上。该代理在一些附加的预编译程序帮助下可以运行在基于Windows的传感器上。

3.1 SnortCenter的安装

前提是要安装并配置好Acid,因此你应该预先在作为Snort服务器的机器上安装MySQL,Apache,PHP,ADODB和OpenSSL。你可以将SnortCenter安装在Linux系统上了。

3.1.1 SnortCenter管理控制台

在安装SnortCenter之前惟一还需要安装的软件包是cURL,这是一个不需要用户干涉通过URL传输文件的命令行工具,它用于管理和控制Snort传感器。你可以通过如下命令行检查在Red Hat上是否安装了该软件包:

Rpm -qa | grep curl

该命令行将会查询包含了curl字符串的软件包,如果你没有安装cURL,可以去网上下载。

下一步在WEB根目录下建立snortcenter目录,将下载文件包解压到这个目录里,然后就通过配置config.php文件来配置SnortCenter 。

对于这个配置文件需要说明的有以下几点:

l DBlib_path设定Adodb库的位置。

l url_path该变量应设为cURL可执行文件的位置。

l DBtype这里设置你所安装的数据库的类型

l DB_dbname这是你在下一步中要创建的SnortCenter数据库名

l DB_host DB_host是Snort服务器的主机名。如果SnortCenter管理控制台和数据库安装在同一台计算机上,应将该参数设为localhost;

l DB_user SnortCenter登录数据库所用的帐号。

l DB_ password数据库—用户的密码;

l DB_ port DB_ port是数据库运行的端口号。

保存修改并关闭config.php,下一个任务是建立DB_dbname变量指定的数据库,首先需要登录MysqL数据库,然后创建SnortCenter数据库,命令如下:

>create database snortcenter;

创建好数据库之后,在Web浏览器中就可以看到SnortCenter管理控制台(地址为https: //localhost/snortcenter)了。这里建立了SnortCenter需要的所有表。你也可以用位于tarball的snortcenter db.Mysql脚本创建它们。这就完成了SnortCenter管理控制台部分的安装。第一次登录时,你需修改用户名admin和口令。

3.1.2安装SnortCenter传感器代理

要完成SnortCenter的安装,还需在你想用SnortCenter管理的传感器上安装SnortCenter传感器代理。安装基于UNIX的代理需要Perl、OpenSSL和Perl模块Net::SSLeay。前面我们已经在传感器上安装了OpenSSL和Perl,现在只需要进行Net::SSLeay模块的安装。你可以在网址http://search.cpan.org下载该模块。

下载并安装Net::SSLeay,首先在源目录下执行下列命令:

Perl Makefile.pl

Make install

安装好Net::SSLeay模块后,需创建SnortCenter传感器代理所用的目录,即创建下列目录:

l 程序目录:/usr/local/snortcenter

l 配置目录:/usr/local/snortcenter/conf

l 日志目录:/usrAocal/snortcenter/log

l 策略目录:/usr/local/snortcenter/rules

接着,你还需为SnortCenter创建一个SSL证书。用下面的命令行创建它:

#openssl req -new -x509 -days 365 -nodes -out snortcenter.pem -keyout snortcenter. pem

将snortcenter.pem文件复制到/usr/local/snortcenter/conf目录下。现在你就可以准备安装SnortCenter传感器代理了,在http://users.pandora.be/larc/download/下载合适的版本。

将文件解压并移动到/usr/local/snortcenter/目录下。运行安装的shell脚本:

#./setup.sh

安装脚本会向你提出许多问题。你已经为Snort和SnortCenter创建所需的文件夹,当询问时依次输入这些目录。代理可以运行在任何端口上的,可以任意指定,但要记住你选择的是哪一个端口。指定SnortCeneter管理和侦听的网卡IP地址。当出现启用SSL选项时,选择Yes。你也应该注意记住代理的登录名和口令,在管理器控制台中输入认证信息。最后的选项是设置Snort服务器的IP地址。这样就完成了SnortCenter传感器代理的安装。重复这个安装过程,为你的Snort环境中的每个传感器安装代理。

注意:配置snortcenter,要想升级传感器的多种配置,必须首先在snortcenter管理控制台中添加他们。早期OSSIM系统采用Snort,因为在大流量环境中,Snort系统处理能力跟不上,导致严重丢包,所以在目前新版OSSIM都采用升级的Suricata。下面看看为什么要升级。Snort采用单线程运行,我们通过pstree就能看到,当标准的Snort系统对数据包进行处理时,从数据包的截取到进行输出处理过程,采用1个线程,即使使用再多线程的CPU都发挥不了作用。这就意味着当数据包在某个细节上进行处理时,内存中整个数据包处理系统的其他部分处于闲置状态。而在Suricata中可以利用四线程,同时对多个数据包进行处理。提高单位时间内系统对数据包的处理量,减少了丢包的概率。

本文出自 “李晨光原创技术博客” 博客,请务必保留此出处http://chenguang.blog.51cto.com/350944/969641

时间: 2024-10-29 09:54:58

Snort企业部署实战的相关文章

企业安全拥抱开源之FREEOTP部署实战

企业安全拥抱开源之FREEOTP部署实战.安全建设过程中,总体预算.投入产出比均是首先需要考虑的问题,缺少具备开发能力的人员.缺少资金预算的情况下,开源产品就成了必然的选择. 0×01 前言 虎符是古代皇帝调兵遣将用的兵符,用青铜或者黄金做成伏虎形状的令牌,劈为两半,其中一半交给将帅,另一半由皇帝保存,只有两个虎符同时合并使用,持符者即获得调兵遣将权.虎符也大致可看做是双因素身份认证的早期应用了. 0×02 2FA&OTP 2FA,双因素认证.一是你知道什么,一是你有什么或者你是什么,比如说,你

PaaS平台OpenShift企业部署的“脑图”

本文讲的是PaaS平台OpenShift企业部署的"脑图"[编者的话]这篇文章是来自红帽,是关于OpenShift企业部署的"蓝图",通过"脑图"帮助客户实现企业级部署OpenShift. [烧脑式Kubernetes实战训练营]本次培训理论结合实践,主要包括:Kubernetes架构和资源调度原理.Kubernetes DNS与服务发现.基于Kubernetes和Jenkins的持续部署方案 .Kubernetes网络部署实践.监控.日志.Ku

《微软System Center 2012 R2私有云部署实战》——1.4 微软私有云

1.4 微软私有云 微软System Center 2012 R2私有云部署实战 1.4.1 微软私有云的软件组成 微软私有云的软件组成包含两大部分:Windows Server 2012 R2和System Center 2012 R2.其中Windows Server 2012 R2作为底层的虚拟化架构存在,通过其自带的Hyper-V3.0 R2角色,为私有云提供创建.删除.修改.迁移.复制虚拟机等虚拟化方面的功能. System Center 2012 R2是微软系统管理软件的最新产品,通

《微软System Center 2012 R2私有云部署实战》——第二章 微软私有云选型2.1 服务器选型

第二章 微软私有云选型 私有云和虚拟化是相辅相成的,拥有虚拟化的私有云才能做到更加灵活.在部署微软私有云之前,我们要做的第一件事情是对运行这套私有云的底层硬件和软件设备进行选型.面对市面上如此众多的硬件设备,我们应该遵循何种标准来选择,也是有多重考量的.4核.8核,还是16核?2颗.4颗又有什么门道?存储是用iSCSI还是光纤或者直连,网卡用吉比特(千兆)还是10吉比特(万兆)?操作系统是Windows Server 2008 R2 SP1还是Windows Server 2012 R2?选择理

core模式下部署域控制器[为企业部署Windows Server 2008系列六]

在上一回 <一步步开始集中管理[为企业部署Windows Server 2008系列五]> 一文中我们在完 全安装模式的server 2008 中安装了域控制器,我们知道windows server 2008 还支持core模式(核心 安装模式).对于负载比较大的域控制器,为了增加他的性能,我们也可以在core模式下部署域控制器 .这样我们的域控制器性能和稳定性都会大大增强.很多朋友害怕core模式下的命令,或者担心不好管 理(毕竟core模式安装的系统是没有图形管理界面的).那么,在这里给大

DC的网络连接端口与防火墙设置[为企业部署Windows Server 2008系列十]

在前面9篇文章中跟大家分享了2008上dc的搭建以及core模式下的一些应用,当我们为企业部署好基 础架构服务后为了安全起见都会启动 windows server 2008自带的windows 防火墙,并且很多企业还会 单独部署一些安全解决产品(如ISA).那么,要很好的完成这些产品的部署,我们就要了解活动目录的 服务以及DC上的网络连接端口,以便大家在部署防火墙产品的时候开放必要的端口来让我们的企业合法 用户及时连接服务. DC的网络连接端口:在这里我解释为DC上为域用户和成员计算机提供的与域

强化管理远程分支机构利器之coreRODC[为企业部署Windows Server 2008系列九]

core模式下部署DC在<core模式下部署域控制器[为企业部署Windows Server 2008系列六]> 一文中 已经和大家分享过了,如果现在你已经选择了2008域环境作为IT资源集中管理的基础架构,那么恭喜您 ,因为您的公司的竞争力一定会上升,尤其在IT环境管理这里是非常具有竞争力的.您的公司随着业务的扩展,产品销量也增加了,并且很快在具有市场潜力的异地城市开设了分支机构.那么基于域环境的IT基础架构和业务支持系统如何对远程分支机构进行高效低成本的集中管理呢?如何在保证本地市场的 竞

企业部署Windows 7指南

从 Windows 7测试版到RC版,相信大家都在体验它给我们带来的各种新特性.无论是安全性,可控性,高效 性,简化管理等,Windows 7给我们带来了前所未有的期待.目前大多数企业都把XP系统升级到了SP3,而 有一部分企业也早已部署了VISTA,而个人电脑中XP和VISTA基本持平,VISTA略显偏高,服务器级别 Windows Server 2003还是占大数,但很明显升级到Windows Server 2008的趋势已经很清晰.以我个人观 点,未来部署Windows 7的市场应该非常大

做好准备!迎接Windows 7系统企业部署

Windows 7系统争议多多 早在去年年底,Windows 7操作系统测试版就已经遍布网络中,很多 用户也在第一时间体验到了微软即将主推的Windows 7系统的强大.并且诸多PC厂商也承诺过免费提供 Windows 7操作系统升级服务,联想公司曾宣布今年6月26日到明年1月31日之间购买其产品的用户,随机 附带的Windows Vista系统,包括Home Premium.Business以及Ultimate版本在内,都可享受免费升级服务.而在联想提出此项优惠政策之前,惠普就曾推出了类似的免