专栏首页ffffffff0x[ffffffff0x] 开源IDS与IPS的搭建与使用 Snort
原创

[ffffffff0x] 开源IDS与IPS的搭建与使用 Snort

前言

在过去的几年里,网络攻击所带来的安全威胁严重程度已经上升了很多倍,几乎每个月都会发生数起严重的数据泄露事件。各种模式的IDS/IPS并不是一种新出现的技术,但是考虑到网络攻击技术的最新发展趋势,IDS和IPS的实现方式仍然是我们需要理解和考虑的内容。

什么是IDS

IDS是英文“Intrusion Detection Systems”的缩写,中文意思是“入侵检测系统”。专业上讲就是依照一定的安全策略,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。

简单的比喻:假如防火墙是一幢大楼的门锁,那么IDS就是这幢大楼里的监视系统。一旦小偷爬窗进入大楼,或内部人员有越界行为,实时监视系统就能发现情况并发出警告。

什么是IPS

侵入保护(阻止)系统(IPS)是新一代的侵入检测系统(IDS),可弥补 IDS 存在于前摄及假阳性/阴性等性质方面的弱点。IPS 能够识别事件的侵入、关联、冲击、方向和适当的分析,然后将合适的信息和命令传送给防火墙、交换机和其它的网络设备以减轻该事件的风险。

介绍完基本的概念,接下来以开源的snort为例,实际搭建并测试。

Snort

简介

Snort是一个多平台(Multi-Platform),实时(Real-Time)流量分析,网络IP数据包(Pocket)记录等特性的强大的网络入侵检测/防御系统(Network Intrusion Detection/Prevention System),即NIDS/NIPS。

Snort采用规则匹配机制检测网络分组是否违反了事先配置的安全策略。安装在一台主机上就可以监测整个共享网段,一旦发现入侵和探测行为,即有将报警信息发送到系统日志、报警文件或控制台屏幕等多种实时报警方式。Snort不仅能够检测各种网络攻击,还具有网络分组采集、分析和日志记录功能。相对于昂贵与庞大的商用产品而言,Snort 具有系统规模小、容易安装、容易配置、规则灵活和插件(plug-in)扩展等诸多优点。

组成

Snort主要由分组协议分析器、入侵检测引擎、日志记录和报警模块组成。协议分析器的任务就是对协议栈上的分组进行协议解析,以便提交给入侵检测引擎进行规则匹配。入侵检测引擎根据规则文件匹配分组特征,当分组特征满足检测规则时,触发指定的响应操作。日志记录将解析后的分组以文本或 Tcpdump 二进制格式记录到日志文件,文本格式便于分组分析,二进制格式提高记录速度。报警信息可以发送到系统日志;也可以采用文本或 Tcpdump 二进制格式发送到报警文件;也容许选择关闭报警操作。记录到报警文件的报警信息有完全和快速两种方式,完全报警记录分组首部所有字段信息和报警信息,而快速报警只记录分组首部部分字段信息。

搭建

rpm 包安装

这里以 2.9.16-1 为例,最新版访问官网了解 https://www.snort.org

yum install -y https://www.snort.org/downloads/snort/snort-2.9.16-1.centos7.x86_64.rpm

安装 snort 的时候可能会报错 : 缺少 libnghttp2.so.14()(64bit) ,使用以下命令安装相应依赖

yum install -y epel-release -y
yum install -y nghttp2

测试: snort ,如果没有报错则安装成功.

如果报错 snort: error while loading shared libraries: libdnet.1: cannot open shared object file: No such file or directory 使用以下命令安装相应依赖

wget http://prdownloads.sourceforge.net/libdnet/libdnet-1.11.tar.gz
tar -xzvf libdnet-1.11.tar.gz
./configure
make && make install

Centos 下源代码编译安装

安装依赖

yum install -y gcc flex bison zlib zlib-devel libpcap libpcap-devel pcre pcre-devel libdnet libdnet-devel tcpdump openssl openssl-devel
wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz
wget https://www.snort.org/downloads/snort/snort-2.9.15.tar.gz
tar xvzf daq-2.0.6.tar.gz
 cd daq-2.0.6
./configure && make && sudo make install
cd ../
wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
tar xvzf LuaJIT-2.0.5.tar.gz
cd LuaJIT-2.0.5
make install
tar xvzf snort-2.9.15.tar.gz
cd snort-2.9.15
./configure --enable-sourcefire && make && sudo make install

测试: snort ,如果没有报错则安装成功.

配置

在使用 snort 之前,需要根据保护网络环境和安全策略对 snort 进行配置,主要包括网络变量、预处理器、输出插件及规则集的配置,位于 etc 的 snort 配置文件 snort.conf 可用任意文本编辑器打开。除内部网络环境变量 HOME_NET 之外,在大多数情况下,可以使用 snort.conf 的默认配置。

由于我们不想使用 root 权限来运行 snort,所以需要创建相关用户。同时也需要建立工作目录。

# Create the snort user and group:
sudo groupadd snort
sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort
# Create the Snort directories:
sudo mkdir /etc/snort
sudo mkdir /etc/snort/rules
sudo mkdir /etc/snort/rules/iplists
sudo mkdir /etc/snort/preproc_rules
sudo mkdir /usr/local/lib/snort_dynamicrules
sudo mkdir /etc/snort/so_rules
# Create some files that stores rules and ip lists
sudo touch /etc/snort/rules/iplists/black_list.rules
sudo touch /etc/snort/rules/iplists/white_list.rules
sudo touch /etc/snort/rules/local.rules
sudo touch /etc/snort/sid-msg.map
# Create our logging directories:
sudo mkdir /var/log/snort
sudo mkdir /var/log/snort/archived_logs
# Adjust permissions:
sudo chmod -R 5775 /etc/snort
sudo chmod -R 5775 /var/log/snort
sudo chmod -R 5775 /var/log/snort/archived_logs
sudo chmod -R 5775 /etc/snort/so_rules
sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules
# Change Ownership on folders:
sudo chown -R snort:snort /etc/snort
sudo chown -R snort:snort /var/log/snort
sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules

移动配置文件

cd ~/snort_src/snort-2.9.16/etc/
sudo cp *.conf* /etc/snort
sudo cp *.map /etc/snort
sudo cp *.dtd /etc/snort
cd ~/snort_src/snort-2.9.16/src/dynamic-preprocessors/build/usr/local/lib/snort_dynamicpreprocessor/
sudo cp * /usr/local/lib/snort_dynamicpreprocessor/
sudo sed -i "s/include \$RULE\_PATH/#include \$RULE\_PATH/" /etc/snort/snort.conf

修改配置文件,将 HOME_NET 更改为自己电脑所在的 CIDR 地址

sudo vim /etc/snort/snort.conf
ipvar HOME_NET 10.0.0.0/24
...104
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
var WHITE_LIST_PATH /etc/snort/rules/iplists
var BLACK_LIST_PATH /etc/snort/rules/iplists
...564
include $RULE_PATH/local.rules

测试使用

vim /etc/snort/rules/local.rules
alert icmp any any -> $HOME_NET any (msg:"ICMP test detected"; GID:1; sid:10000001; rev:001; classtype:icmp-event;)
sudo /usr/local/bin/snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0

启动,此时用其他机器 Ping Snort 主机可以看到日志信息

当然,snort也可以直接读取 pcap 包

sudo /usr/local/bin/snort -r foo.pcap

alerts机制

当一个入侵正在发生或者试图发生时,IDS系统将发布一个alert信息通知系统管理员。如果控制台与IDS系统同在一台机器,alert信息将显示在监视器上,也可能伴随着声音提示。如果是远程控制台,那么alert将通过IDS系统内置方法(通常是加密的)、SNMP(简单网络管理协议,通常不加密)、email、SMS(短信息)或者以上几种方法的混合方式传递给管理员。

Snort采用规则来发布alert信息,Snort 官方提供的三类规则

  • Community rules : 无需注册 or 购买,可直接下载使用
  • Registered rules : 需要注册才可以下载
  • Subscriber rules : 需要注册花钱购买

访问官网 https://www.snort.org/ 下载规则

下载完,解压至相应目录

cd /etc/snort/rules/
wget https://www.snort.org/downloads/community/community-rules.tar.gz -O community-rules.tar.gz
tar -xvf community-rules.tar.gz
mv /etc/snort/rules/community-rules/community.rules /etc/snort/rules/

sudo vim /etc/snort/snort.conf
include $RULE_PATH/community.rules

我们也可以自定义规则,例如下面的规则用于检测PLC inject攻击

alert tcp any any -> $any 502 (msg:”plcinject”; content:”|d0 9d 00 00 00 06 01 03 00 80 00 01|”; sid:001111111; GID:001; priority:0;)

总结

本文介绍linux环境下的snort安装和配置,同时测试编写规则和加载规则。随着物联网设备和智能家居设备的兴起,IDS和IPS系统的重要性也不言而喻。开源的IDS系统安装使用便捷,非常适合个人或小型网络进行部署。下一篇文章,将介绍另一种开源的IDS产品Suricata。


本文作者 r0fus0d

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [ffffffff0x] 开源IDS与IPS的搭建与使用 Suricata

    多年来,Snort 一直是开源入侵检测/防御系统(IDS / IPS)的实际标准,但随着越来越多的服务器网卡带宽提升,Snort对线路上的数据包进行计算密集型的...

    r0fus0d
  • pytbull - 入侵检测/预防系统(IDS / IPS)测试框架

    pytbull是Snort,Suricata和任何生成警报文件的IDS / IPS的入侵检测/预防系统(IDS / IPS)测试框架。它可用于测试IDS / I...

    C4rpeDime
  • PF_RING ZC | 高速流量处理DPDK替代方案

    目前大多需要进行高速流量处理的场景,基本都是使用DPDK进行数据包处理加速,DPDK虽然是开源免费的,但是DPDK提供的API很简单,进行开发十分复杂,耗时,应...

    虹科网络可视化与安全
  • IDS和IPS的部署细节科普

    摘要 这篇文章主要介绍的是入侵检测系统(IDS)和入侵防御系统(IPS),而这两者均是保护我们网络安全的重要机制。在过去的几年里,网络攻击所带来的安全威胁严重程...

    FB客服
  • 安全工具Snort

    在本文中,我们将了解Snort是什么以及如何配置它。Snort是最流行的IPS(入侵防御系统)和IDS(入侵检测系统)方法之一。

    随心助手
  • 21 | IDS:当黑客绕过了防火墙,你该如何发现?

    在前面两节课中,我们讲了防火墙和 WAF 的工作模式,以及它们是如何作为内外网的隔离设备,在网络边界进行安全防护的。

    斑马
  • 关于PLC安全的一次实验

    (1)随着工业 4.0 的高速发展,工业自动化程度越来越高,但工控设备暴露在公网的情况也越发明显。而其中尤其以PLC最为明显,这些PLC设备的来源多为国外厂商,...

    FB客服
  • 工业控制系统蜜罐的初步介绍

    随着科技的发展,工业控制系统逐渐的接入互联网,而当前互联网上存在着大量的攻击,直接影响着工业控制系统的安全,工控系统面临的安全形势也越来越严重。2010年的伊朗...

    FB客服
  • 开源软件创建SOC的一份清单

    现在各个公司都有自己的SOC安全日志中心,有的是自己搭建的,有的是买厂商的,更多的情况是,各种复合类的的组织结构。这些日志来自不同的服务器,不同的部门五花八门。...

    FB客服

扫码关注云+社区

领取腾讯云代金券