开源USM之IDS suricata

  上次我们介绍到USM,想必大家对它已经有一个概貌的认识了,今天我要与大家分享的是安全管理平台百宝箱中的检测系统[IDS],检测系统是对防火墙的补充,有一个经典的比喻:防火墙相当于一个把门的门卫,对于所有进出大门的人员进行审核:只有符合安全要求的人,就是那些有入门许可证的人才可以进、出大门;门卫可以防止小偷进入大楼,但不能保证小偷100%地被拒之门外,而且对于那些本身就在大门内部的,以及那些具备入门证的、以合法身份进入了大门的人,是否做好事也无法监控,这时候就需要依靠检测系统来进行审计和控制,发现异常情况并发出警告。下面就让我们一起聊一聊Suricata吧。

1、简介

  随着安全威胁的不断发生,检测系统(IDS)在如今的数据中心环境中显得尤为必要。然而,随着越来越多的服务器将他们的网卡升级到10GB/40GB以太网,对如此线路上的硬件进行计算密集型的检测越来越困难。其中一种提升检测系统性能的途径是多线程检测系统,它将 CPU 密集型的深度包检测工作并行的分配给多个并发任务来完成。这样的并行检测可以充分利用多核硬件的优势来轻松提升检测系统的吞吐量。在这方面有两个知名的开源项目,分别是 Suricata 和 Bro。

IPS:预防系统(IPS: Intrusion Prevention System)是电脑网络安全设施,是对防病毒软件(Antivirus Programs)和防火墙(Packet Filter, Application Gateway)的补充。 预防系统(Intrusion-prevention system)是一部能够监视网络或网络设备的网络资料传输行为的计算机网络安全设备,能够即时的中断、调整或隔离一些不正常或是具有伤害性的网络资料传输行为。是新一代的侵入检测系统(IDS)。

IDS:英文“Intrusion Detection Systems”的缩写,中文意思是“检测系统”。依照一定的安全策略,通过软、硬件,对网络、系统的运行状况进行监视,尽可能发现各种企图、行为,以保证网络系统资源的机密性、完整性和可用性。

2、检测系统模型

IDS处理流程图
目前的检测系统模型,主要有两个国际组织在对IDS进行通用模型标准化的工作,分别是Common Intrusion Detection Framework(CIDF)和隶属于IETF(Internet Engineering Task Force)的Intrusion Detection Working Group(IDWG)。
开源USM之IDS suricata

  • suricata架构
    报文检测系统通常四大部分,报文获取、报文解码、报文检测、日志记录;suricata按不同的功能安装模块划分,一个模块的输出是另一个模块的输入,suricata通过线程将模块串联起来。
    suricata架构图

  • suricata各模块功能
    Receive:从NFQUEUE中接收数据包,并将封装在Packet结构中,然后放入下一个缓冲区。
    Decode:对数据包进行解码,主要是对数据包头部信息进行分析并保存在Packet结构中。
    StreamTCP:对数据包进行TCP流重组。
    Detect:检测数据包是否包含可疑行为。
    Verdict:对检测后的数据包进行判定,并将判定结果告诉内核(通过ipq_set_verdict函数),方便内核对数据包进行接收、丢弃等处理。
    RespondReject:通过libnet对那些要执行Reject操作的数据包进行相应的回应。

    3、安装

  • 官方软件包
    Suricata(稳定)版本是4.0.3 12月6日发布的2017年。
    Mac / FreeBSD / UNIX / Linux / Windows:
    suricata-4.0.3.tar.gz
    PGP签名:suricata-4.0.3.tar.gz.sig
    Windows安装程序(win32):Suricata-4.0.1-1-32bits.msi

  • Suricata(旧的稳定)版本是3.2.5 12月6日发布的2017年。
    Mac / FreeBSD / UNIX / Linux / Windows:
    suricata-3.2.5.tar.gz
    PGP签名:suricata-3.2.5.tar.gz.sig
    Ubuntu PPA beta (doc)

为了检测系统本身的安全,也可以将它部署在FreeBSD\OpenBSD上,具说是世界上最安全的操作系统。

  • 部署拓扑
    开源USM之IDS suricata

  • 安装软件
# yum install epel-release
# yum -y install gcc libpcap-devel pcre-devel libyaml-devel file-devel \
     zlib-devel jansson-devel nss-devel libcap-ng-devel libnet-devel tar make \
     libnetfilter_queue-devel lua-devel

# wget https://www.openinfosecfoundation.org/download/suricata-4.0.3.tar.gz
# tar -xvf suricata-4.0.3.tar.gz
# cd suricata-4.0.3
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-nfqueue --enable-lua
# make
# make install
# ldconfig
  • 安装配置

Suricata 源代码带有默认的配置文件。

# make install-conf

如果没有IDS规则集的话,Suricata 什么用也没有。幸好 Makefile 为我们提供了 IDS 规则集的安装选项。

# make install-rules

结合上面提到的(install-conf和install-rules),将运行(配置和设置)Suricata。

#make install-full

以上的规则安装命令会从 EmergingThreats.net [http://rules.emergingthreats.net/] 上下载可用的社区规则集快照,并且将其存储在 /etc/suricata/rules 目录下。

  • 使用 Suricata 进行监控

当使用 pcap 捕获模式的时候,强烈建议关闭 Suricata 监听网卡上的任何的包卸载(例如 LRO/GRO)功能。这些功能会干扰包的实时捕获行为。

# ethtool -K eth0 gro off lro off     [ 关闭eth0 接口的 LRO/GRO 功能 ]

这里要注意,在使用某些网卡的情况下,你会看到如下警告信息。忽略它们就行了,这些信息只不过告诉你你的网卡不支持 LRO 功能而已。***Cannot change large-receive-offload

Suricata 支持许多运行模式,运行模式决定着我们会使用何种线程。

# suricata --list-runmodes     [ 查看可用的运行模式 ] 

4、总结

  如何在一台多核 Linux 服务器上安装 Suricata 检测系统。不同於单线程的 Snort IDS ,Suricata 可以很容易的从多核硬件的多进程特性所带来的好处中获益,定制 Suricata 可以最大化其效能和检测范围。这是目前对suricata的一个整体的认识,接下来需要研究每个模块之间的交互、深入学习suricata是如何收集报文、如何将收集的报文传递给解码模块、解码模块做哪些工作、输出是什么。

常见报错解决方法:

1、YAML safe loading is not available. Please upgrade psych to a version that supports safe loading (>= 2.0).
*** LOCAL GEMS
# rvm install 2.2.7

2、前端页面不显示,netstat -lntp 没有3000端口
rvm use 2.2.7
gem install bundler
bundle install
rake snorby:setup
rails server -e production &

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章