linux平台snort入侵检测系统实战指南


Linux 平台 Snort 入侵检测系统实战指南 我们都知道,企业的网络目前威胁主要来自两个位置:一个是内部,一个是 外部。来自外部的威胁都能被防火墙所阻止,但内部的攻击都不好防范。因为公 司内部人员对系统了解很深且有合法访问权限,所以内部攻击更容易成功。 IDS 为信息提供保护,已经成为深度防御策略中的重要部分。IDS 与现实世 界里的防窃报警装置类似,它们都对入侵进行监控,当发现可疑行为时,就向特 定的当事人发出警报。IDS 分为两类:主机 IDS(HIDS)和网络 IDS(NIDS)。HIDS 安装在受监控主机上,拥有对敏感文件的访问特权。HIDS 利用这一访问特权对 异常行为进行监控。NIDS 存在于网络中,通过捕获发往其他主机的流量来保护 大量网络设施。 HIDS 和 NIDS都有各自的优点和缺点,完整的安全解决方案应包括这两种 IDS, 对于这一点比较难做到。不了解这一领域的人常常认为 IDS 就像一把万能钥匙, 能解决所有安全问题。例如有的单位花了大笔的钱购置了商业 IDS 由于配置不当 反而搞得连连误报,一下子就把数据库塞满了大量丢包进而崩溃。这种态度使人 们以为只要将 IDS 随便安放在网络中就万事大吉了,不必担心任何问题,实际上 远非如此。没有人会认为 Email 服务器直接连在 Internet 上就能正确运作。同 样,你也需要正确的计划 IDS 策略,传感器的放置。下文以开源软件 Snort 的安 装与维护为例,介绍正确地安装和维护 IDS 的思路和方法。 安装 Snort 1、安装准备工作 我们在安装前我们要知道我们需要监控的内容,理想的状况是对一切进行监 控。所有网络设备和任何从外部到企业的连接都处在 Snort 的监视之下。尽管这 一计划对小公司只有几十台机器是很可能实现的,但是当大型企业中连接上天台 网络设备时,这成了难以施展的艰巨任务。 为了加强 snort 检测的安全性,最好能为监控网段提供独立的智能交换机, 如果你需要配置分布式的配置,可以吧服务器和控制台接在一个交换机上,二其 他传感器放置在不同的物理位置,但这样的成本会有所增加。Snort IDS 的维护 问题是无法回避的。你迟早要对 Snort 特征更新并编写定制的规则,所以你还需 要一个懂得维护 IDS 的专业人士。 2、深入 Snort Snort 包含很多可配置的内部组件,它们对误报、漏报以及抓包和记录日志 等的性能都有很大影响。能深入了解 Snort 的内幕有助于有效地利用 Snort 监控 人侵。还会帮助你根据自己的网络定制 Snort,并且避免它的一些常见缺陷。 2.1、用 Libpcap 输送 Snort 包 Snort 没有自己的捕包工具,它需要一个外部的捕包程序库:libpcap。Snort 利用 libpcap 独立地从物理链路上进行捕包,它可以借助 libpcap 的平台为一个 真正的与平台无关的应用程序。直接从网卡捕包的任务由 libpcap 承担。这一捕 获原始包的工具是由底层操作系统提供给其他应用程序使用的。Snort 需要数据 保持原始状态,它利用的就是原始包所有的协议头信息都保持完整,未被操作系 统更改的特性来检测某些形式的攻击。由于利用 libpcap 获取原始包,一次只能 处理一个包,这不是最好的方法,这也制约了它对千兆网络进行监控的瓶颈。 2.2、包解码器 包一被收集到 Snort 必须对每一个具体的协议元素进行解码。在包通过各种 协议的解码器时,解码后的包数据将堆满一个数据结构。包数据一被存人数据结 构中,就会迅速被送到预处理程序和检测引擎进行分析。 2.3、预处理程序 Snort 的预处理分为两类。它们可以用来针对可疑行为检查包或者修改包以 便检测引擎能对其正确解释。预处理的参数可以通过 snort.Conf 配置文件调整。 预处理器: • Frag2 • Stream4 • Stream4_reassemble • Http_decode • RPC_decode • BO • Telnet_decode • ARPspoof • ASNI_decode • Fnord • Conversation • Portscan2 • SPADE 2.4、检测引擎 检测引擎将流量与规则按其载人内存的顺序依次进行匹配。是 Snort 的一个 主要部件。 2.5、输出插件 Snort 的输出插件接收 Snort 传来的入侵数据。输出插件的目的是将报警数 据转储到另一种资源或文件中。 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.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: 开头的行,将其“#”号去掉。 3) 创建 snort 数据库 mysql> create database snort; mysql> connect snort; mysql> source /usr/local/src/snort-2.8.4.1/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.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.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 界面 特征: • snort 后台进程状态监视器; • 远程 snort 停止/启动/重启; • snortcenter 用户的访问控制; • 传感器组; • ACID 集成; SnortCenter 包括基于 PHP 的管理应用软件和 SnortCenter 代理。 SnortCenter 管理控制台安装在 Snort 服务器上,而 SnortCenter 传感器代理被 安装在所管理的传感器中。SnortCenter 增强了可能安装在分布式系统上的 Snort,服务器端需要如下的软件包: • MySQL; • Apache; • PHP; • ADODB; • OpenSSL; • cURL 这里,除了 cURL 软件包,其他的软件包应该都是大家比较熟悉的,因为绝 大多数的操作系统都包括这些软件包,SnortCenter 管理控制台可运行在 Windows、Linux 和 BSD 系统上。SnortCenter 传感器代理需要安装在基于 UNIX 操作系统的 Perl 上。该代理在一些附加的预编译程序帮助下可以运行在基于 Windows 的传感器上。 1、SnortCenter 的安装 前提是要安装并配置好 Acid,因此你应该预先在作为 Snort 服务器的机器 上安装 MySQL,Apache,PHP,ADODB 和 OpenSSL。你可以将 SnortCenter 安装在 Linux 系统上了。 1.1、SnortCenter 管理控制台 在安装 SnortCenter 之前惟一还需要安装的软件包是 cURL,这是一个不需 要用户干涉通过 URL 传输文件的命令行工具,它用于管理和控制 Snort 传感器。 你可以通过如下命令行检查在 Red Hat 上是否安装了该软件包: Rpm -qa | grep curl 该命令行将会查询包含了 curl 字符串的软件包,如果你没有安装 cURL,可 以去网上下载。 下一步在 WEB 根目录下建立 snortcenter 目录,将下载文件包解压到这个目 录里,然后就通过配置 config.php 文件来配置 SnortCenter 。 对于这个配置文件需要说明的有以下几点: • DBlib_path 设定 Adodb 库的位置。 • url_path 该变量应设为 cURL 可执行文件的位置。 • DBtype 这里设置你所安装的数据库的类型 • DB_dbname 这是你在下一步中要创建的 SnortCenter 数据库名 • DB_host DB_host 是 Snort 服务器的主机名。如果 SnortCenter 管理控制 台和数据库安装在同一台计算机上,应将该参数设为 localhost; • DB_user SnortCenter 登录数据库所用的帐号。 • DB_ password 数据库—用户的密码; • 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 和口令。 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 传感器代理所用的目录, 即创建下列目录: • 程序目录:/usr/local/snortcenter • 配置目录:/usr/local/snortcenter/conf • 日志目录:/usrAocal/snortcenter/log • 策略目录:/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 管理控制台中添加他们。
还剩10页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

熊猫_100

贡献于2016-06-02

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf