驱动管家:安全、高效、精准的专业驱动下载站!

入侵检测系统suricata ids怎么在linux服务器上安装?

2018-01-25 17:08:31责编:llp   来源:驱动管家     人气:

本篇文章将演示如何在Linux服务器上安装和配置Suricata IDS。

在Linux上安装Suricata IDS

不妨用源代码构建Suricata。你先要安装几个所需的依赖项,如下所示。

在Debian、Ubuntu或Linux Mint上安装依赖项

$ sudo apt-get install wget build-essential libpcre3-dev libpcre3-dbg automake autoconf libtool libpcap-dev libnet1-dev libyaml-dev zlib1g-dev libcap-ng-dev libjansson-dev

在CentOS、Fedora或RHEL上安装依赖项

$ sudo yum install wget libpcap-devel libnet-devel pcre-devel gcc-c++ automake autoconf libtool make libyaml-devel zlib-devel file-devel jansson-devel nss-devel

一旦你安装了所有必需的程序包,现在可以安装Suricata了,如下所示。

首先,从http://suricata-ids.org/download/下载最新的Suricata源代码,编译代码。截至本文撰稿时,最新版本是2.0.8。

这是配置的示例输出结果。

入侵检测系统suricata ids怎么在linux服务器上安装?

现在编译并安装它。

$ make

$ sudo make install

Suricata源代码随带默认的配置文件。不妨安装这些默认的配置文件,如下所示。

$ sudo make install-conf

正如你所知,要是没有IDS规则集,Suricata毫无用处。颇为方便的是,Makefile随带IDS规则安装选项。想安装IDS规则,运行下面这个命令即可。

$ sudo make install-rules

上述规则安装命令会从EmergingThreats.net(https://www.bro.org)安装可用的社区规则集的最新快照,并将它们存储在/etc/suricata/rules下。

入侵检测系统suricata ids怎么在linux服务器上安装?

首次配置Suricata IDS

现在就可以配置Suricata了。配置文件位于/etc/suricata/suricata.yaml。使用文本编辑工具打开文件,以便编辑。

$ sudo vi /etc/suricata/suricata.yaml

下面是一些基本的设置,供你开始入门。

“default-log-dir”关键字应该指向Suricata日志文件的位置。

default-log-dir: /var/log/suricata/

在“vars”这部分下面,你会找到Suricata使用的几个重要变量。“HOME_NET”应该指向由Suricata检查的本地网络。“!$HOME_NET”(被分配给EXTERNAL_NET)指本地网络以外的任何网络。“XXX_PORTS”表明不同服务所使用的一个或多个端口号。请注意:不管使用哪个端口, Suricata都能自动检测HTTP流量。所以,正确指定HTTP_PORTS变量并不是很重要。

vars:

HOME_NET: "[192.168.122.0/24]"

EXTERNAL_NET: "!$HOME_NET"

HTTP_PORTS: "80"

SHELLCODE_PORTS: "!80"

SSH_PORTS: 22

“host-os-policy”这部分用来防范一些利用操作系统的网络堆栈的行为(比如TCP重组)来规避检测的常见攻击。作为一项应对措施,现代IDS想出了所谓的“基于目标的”检测,检查引擎根据流量的目标操作系统,对检测算法进行微调。因而,如果你知道每个本地主机运行什么操作系统,就可以将该信息提供给Suricata,从而有望提高其检测速度。这时候用到了“host-os-policy“部分。在该例子中,默认的IDS策略是Linux;如果不知道某个IP地址的操作系统信息,Suricata就会运用基于Linux的检查策略。如果捕获到192.168.122.0/28和192.168.122.155的流量,Suricata就会运用基于Windows的检查策略。

host-os-policy:

# 这些是Windows机器。

windows: [192.168.122.0/28, 192.168.122.155]

bsd: []

bsd-right: []

old-linux: []

# 将Linux作为默认策略。

linux: [0.0.0.0/0]

old-solaris: []

solaris: ["::1"]

hpux10: []

hpux11: []

irix: []

macos: []

vista: []

windows2k3: []

在“threading”这部分下面,你可以为不同的Suricata线程指定CPU亲和性(CPU affinity)。默认情况下,CPU亲和性被禁用(“set-cpu-affinity: no”),这意味着Suricata线程将被安排在任何可用的CPU核心上。默认情况下,Suricata会为每个CPU核心创建一个“检测”线程。你可以调整这个行为,只要指定“detect-thread-ratio: N”。这会创建N x M个检测 线程,其中M是指主机上CPU核心的总数。

threading:

set-cpu-affinity: no

detect-thread-ratio: 1.5

就上述线程设置而言,Suricata会创建1.5 x M个检测线程,其中M是系统上CPU核心的总数。

想了解关于Suricata配置的更多信息,你可以阅读默认的配置文件本身,为了便于理解,加有大量注释。

使用Suricata执行入侵检测

现在可以试着运行Suricata了。在启动它之前,还有一个步骤要完成。

如果你使用pcap捕获模式,强烈建议关闭Suricata侦听的那个网卡上的任何数据包卸载功能(比如LRO/GRO),因为那些功能可能会干扰数据包实时捕获。

下面介绍如何关闭网络接口eth0上的LRO/GRO:

$ sudo ethtool -K eth0 gro off lro off

请注意:视使用的网卡而定,你可能会看到下列警示信息,可以忽视这个信息。它只是意味着你的网卡不支持LRO。

Cannot change large-receive-offload

Suricata支持多种运行模式。运行模式决定了不同的线程如何用于IDS。下面这个命令列出了所有可用的运行模式。

$ sudo /usr/local/bin/suricata --list-runmodes

Suricata使用的默认运行模式是autofp(代表“自动流绑定负载均衡模式”)。在这种模式下,来自每一路流的数据包被分配给单一的检测线程。流被分配给了未处理数据包数量最少的线程。

最后,不妨启动Suricata,看看它的实际运行情况。

$ sudo /usr/local/bin/suricata -c /etc/suricata/suricata.yaml -i eth0 --init-errors-fatal

入侵检测系统suricata ids怎么在linux服务器上安装?

在这个例子中,我们监控一个8核系统上的网络接口eth0。如上所示,Suricata创建了13个数据包处理线程和3个管理线程。数据包处理线程包括1个PCAP数据包捕获线程和12个检测线程(相当于8 x 1.5)。这意味着,一个捕获线程捕获的数据包经负载均衡处理后,变成了IDS面前的12个检测线程。管理线程是一个流管理器和两个计数器/统计相关线程。

下面是Suricata进程的线程视图(由htop描绘)。

Suricata检测日志存储在/var/log/suricata目录下。

$ tail -f /var/log/suricata/fast.log

04/01/2015-15:47:12.559075 [**] [1:2200074:1] SURICATA TCPv4 invalid checksum [**] [Classification: (null)] [Priority: 3] {TCP} 172.16.253.158:22 ->172.16.253.1:46997

04/01/2015-15:49:06.565901 [**] [1:2200074:1] SURICATA TCPv4 invalid checksum [**] [Classification: (null)] [Priority: 3] {TCP} 172.16.253.158:22 ->172.16.253.1:46317

04/01/2015-15:49:06.566759 [**] [1:2200074:1] SURICATA TCPv4 invalid checksum [**] [Classification: (null)] [Priority: 3] {TCP} 172.16.253.158:22 ->172.16.253.1:46317

为了易于导入,还有JSON格式的日志:

$ tail -f /var/log/suricata/eve.json

{"timestamp":"2015-04-01T15:49:06.565901","event_type":"alert","src_ip":"172.16.253.158","src_port":22,"dest_ip":"172.16.253.1","dest_port":46317,"proto":"TCP","alert":{"action":"allowed","gid":1,"signature_id":2200074,"rev":1,"signature":"SURICATA TCPv4 invalid checksum","category":"","severity":3}}

{"timestamp":"2015-04-01T15:49:06.566759","event_type":"alert","src_ip":"172.16.253.158","src_port":22,"dest_ip":"172.16.253.1","dest_port":46317,"proto":"TCP","alert":{"action":"allowed","gid":1,"signature_id":2200074,"rev":1,"signature":"SURICATA TCPv4 invalid checksum","category":"","severity":3}}

结束语

我在本教程中演示了如何在多核Linux服务器上安装一个Suricata IDS。不像单线程Snort IDS,Suricata轻松就能得益于采用多线程技术的多核硬件。想最大限度地提高性能、扩大检测覆盖范围,Suricata方面需要进行大量的定制工作。

你目前在使用Suricata吗?如果是的话,欢迎交流经验和心得!

  • 嗅探器是什么?嗅探时挂机怎么办?

    嗅探器是什么?嗅探时挂机怎么办?

    嗅探器可以窃听网络上流经的数据包。用集线器hub组建的网络是基于共享的原理的,局域网内所有的计算机都接收相同的数据包,而网卡构造了硬件的“过滤器“过识别MAC地址过滤掉和自己无关的信息,嗅探程序只需关闭

    详情2018-01-22 12:08:33责编:llp   来源:驱动管家     
  • 什么是傲游浏览器的sql注射漏洞?

    什么是傲游浏览器的sql注射漏洞?

    傲游浏览器的插件中心存在POST SQL注射漏洞http: extension maxthon cn all index phporhttp: chajian maxthon cn all index phppost data:keyword=%E6%90%9C%E7%B4%A2%E6%8F%92%E4%BB%B6修复方案:不敢献丑。。。作者 z@cx

    详情2018-01-15 14:04:51责编:llp   来源:驱动管家     
  • 黑客入侵网站的途径及防御方法

    黑客入侵网站的途径及防御方法

    1 桌面缝隙Internet Explorer、Firefox和Windows操作系统中包括许多可以被黑客运用的缝隙,特别是在用户常常不及时装置补丁的情况下。黑客会运用这些缝隙在不经用户赞同的情况下主动下载歹意软件代码——也称作

    详情2018-01-18 12:14:14责编:llp   来源:驱动管家     
  • oracle教程 oracle的相关问题及解答

    oracle教程 oracle的相关问题及解答

    1 如何查看ORACLE的隐含参数?ORACLE的显式参数,除了在INIT ORA文件中定义的外,在svrmgrl中用 "show parameter * ",可以显示。但ORACLE还有一些参数是以“_”,开头的。如我们非常熟悉的“_offline_rollback_

    详情2018-01-15 16:49:57责编:llp   来源:驱动管家     
  • 黑客入门教程 黑客入门的知识大讲解

    黑客入门教程 黑客入门的知识大讲解

    第一节、黑客的种类和行为以我的理解,“黑客”大体上应该分为“正”、“邪”两类,正派黑客依靠自己掌握的知识帮助系统管理员找出系统中的漏洞并加以完善,而邪派黑客则是通过各种黑客技能对系统进行攻击、入侵

    详情2018-01-16 08:54:11责编:llp   来源:驱动管家     
  • 0day漏洞出现在aspcms企业建站系统上?0day漏洞怎么修复?

    0day漏洞出现在aspcms企业建站系统上?0day漏洞怎么修复?

    aspcms企业建站系统0day 2 0以上通杀2011-08-14 19:21aspcms开发的全新内核的开源企业建站系统,能够胜任企业多种建站需求,并且支持模版自定义、支持扩展插件等等,能够在短时间内完成企业建站。漏洞出现在 pl

    详情2018-01-22 15:11:54责编:llp   来源:驱动管家     
  • fso是什么意思?fso组件怎么开启?怎么关闭?

    fso是什么意思?fso组件怎么开启?怎么关闭?

    FSO(FileSystemObject)是微软ASP的一个对文件操作的控件,该控件可以对服务器进行读取、新建、修改、删除目录以及文件的操作。是ASP编程中非常有用的一个控件。但是因为权限控制的问题,很多虚拟主机服务器的FSO

    详情2018-01-16 11:02:53责编:llp   来源:驱动管家     
  • 永恒之蓝病毒爆发 小心中招永恒之蓝病毒要如何防范?

    永恒之蓝病毒爆发 小心中招永恒之蓝病毒要如何防范?

    此前微软爆出的0day EternalBlue(永恒之蓝)漏洞病毒昨日全球全面爆发,Windows系统中招后服务器无限蓝屏,为了保障您服务器的安全,我司建议查看本地服务安全策略是否开启,打开内置安全策略可以杜绝此类安全漏

    详情2018-01-21 11:57:31责编:llp   来源:驱动管家     
  • 什么是efs的加密技术?怎么解开efs的加密?

    什么是efs的加密技术?怎么解开efs的加密?

    EFS(Encrypting File System,加密文件系统)加密是一种基于NTFS磁盘技术的加密技术。EFS加密基于公钥策略。在使用EFS加密一个文件或文件夹时,系统首先会生成一个由伪随机数组成的FEK(File Encryption Key,

    详情2018-01-15 08:59:19责编:llp   来源:驱动管家     
  • telnet命令的字符有哪些?telnet特殊命令模式escape

    telnet命令的字符有哪些?telnet特殊命令模式escape

    除了在Telnet是如何工作的例子介绍的以外,Telnet还有很多的特点。Telnet可发送除了 "escape "的任何字符到远程主机上。因为 "escape "字符在Telnet中是客户机的一个特殊的命令模式,它的默认值是 "Ctrl-] "。但要注意不

    详情2018-01-24 09:30:59责编:llp   来源:驱动管家