物联网和SIEM集成—铂。 2(使用SNMP陷阱)

介绍

本文将为集成企业环境中构建的IoT应用程序以使用SNMP陷阱发送事件数据提供一些实用指南。 该配置将利用“ net-snmp”堆栈。

市场上有许多商业(COTS)应用程序,可以轻松地以最少的编码量甚至不需要编码来提供这种类型的集成。 COTS软件的缺点是许可。 某些软件按每秒的事件数许可,某些按配置的事件数许可,有些按每个已安装的系统许可。 使用开放源代码技术进行集成的定制开发应用程序具有多种优势,但是还需要保留良好的文档资料,升级方法并随着输入提要的变化而跟上开发的步伐。 此外,定制开发解决方案的主要问题是缺乏接听电话和移交解决问题的责任的能力。 交付给应用程序供应商的SLA有时可能会带来正的投资回报(ROI)。 这也使应用程序主题专家(SME)可以在他们最了解的领域工作。 减少平均维修时间(MTTR),并使所有内容快速恢复在线状态。

作为一个解决方案架构师和集成商,我更喜欢使用net-snmp堆栈来构建此集成。 至少,我希望这为您提供了有关如何开发生产应用程序的指导,或者为您提供了在COTS软件中选择正确功能进行集成的途径。 我的一位同事,他是一位非常有才华的解决方案架构师和开发人员。 这个行业的Ops领导者大约十年前说过最好,我们做的不是火箭科学,而是我们的工作涉及到一些黑魔法。

在第一篇论文中,我将在较高级别上讨论SIEM架构以及高层IoT应用程序层次结构。 两种解决方案层次结构都有许多相似之处。 在当前设计中,SIEM解决方案构建有单独的网关,该网关直接连接到IoT设备以发出与安全相关的警报。 有一个单独的连接器和IoT应用程序,用于提供IoT设备支持的服务。

信息将标准化到IoT应用程序中,消息将存储在IoT应用程序数据存储中。 然后,物联网应用程序将通过对收集到的数据进行分析来运行。 这是我们开始构建集成的应用程序阶段。

我们的方法是采用需要发送到SIEM解决方案的消息并生成SNMP陷阱。 SNMP陷阱将发送到SIEM SNMP探针。 在SIEM SNMP探针端,我们可以加载管理信息库(MIB)或定义从我们在较早的步骤中生成的SNMP陷阱中解密变量所需的SNMP陷阱varbinds。

在IoT应用程序中,将存在一个设计元素,在对从IoT设备接收的数据进行分析之后,需要转换为SNMP陷阱的事件将被发送到SIEM SNMP探针。

在SIEM端,我们可以选择导入MIB。 陷阱也可以使用陷阱定义文件通过SIEM SNMP探针解密,可以在其中定义每个陷阱及其变量,以便在适当的字段中使用适当的细节对事件进行规范化。

在物联网应用程序的设计阶段以及随后的SIEM集成过程中,请仔细确定SNMP陷阱需要多少个变量绑定以及每个变量绑定将包含哪些数据。 需要在SNMP MIB中将每个varbind声明为一个对象,然后需要列出每个SNMP陷阱,以便可以将其标准化到SIEM数据库中。

由于我无法在个人实验室中访问Windows服务器,因此我正在使用安装了net-snmp,net-snmp-utils,标准开发构建包的CentOS 7虚拟机来生成SNMP陷阱。

net-snmp软件包将用于运行SNMP陷阱,该陷阱将被发送到我运行标准SNMP陷阱收集器的IP地址,以捕获SNMP陷阱并显示变量。

尽管我将使用Linux系统,但是可以使用基于Windows Server的解决方案对事件集成进行相同的步骤,并对Windows Shell命令进行调整。

例子1

场景是在达拉斯市各处部署温度传感器。 有一个阈值会生成一个安全警报。 使用超低窄带调制(例如Sigfox)通过低功率广域网发送此警报

在将规范化数据发送到大数据存储区后,来自温度传感器的警报会被捕获到IoT应用程序中心中,在大数据存储区中将设备地理数据进行汇总并运行分析以丰富消息。

此时需要将消息推送到SOC Operator SIEM控制台中的消息是

GPS坐标纬度:32.776664和GPS坐标经度:-96.796988(主机名称为IoT_Temp_Guage_1051)的传感器报告的温度为华氏104度。 这比设置的阈值高10度,从而导致警报。 需要派遣紧急技术人员。

上面的消息可以分解为多个变量,并用于调用net-snmp软件包中的snmptrap命令。 使用多个变量的原因是,一旦将消息放入SIEM事件数据库中并需要在SIEM Security Operator Console上显示,它就可以将消息与其他静态文字放在一起。

作为测试,我在开发测试系统的控制台窗口中使用了以下命令,并且能够捕获SNMP陷阱。

snmptrap -v 1 -c B1gS3cr3t 192.168.1.16’1.1.911”192.193.194.195’6 911”1.1.1.1.1.1 s“达拉斯市” 1.1.1.1.1.2 s“ IoT_Temp_Guage_1051” 1.1.1.1.1.3 s “ GPS坐标纬度:32.776664” 1.1.1.1.1.4 s“ GPS坐标经度:-96.796988” 1.1.1.1.1.5 s“ 104度华氏度” 1.1.1.1.1.6 s“超出范围” 1.1.1.1.1.7 s“ 10度” 1.1.1.1.1.8 s“调度技术” 1.1.1.1.1.9 s“警报应急人员”

上图显示了正在控制台中运行的命令,然后如下图所示,它在接收器系统上作为SNMP陷阱立即被接收。 在该示例中,接收方正在模拟SIEM SNMP探针如何工作。

一旦在SIEM探针侧接收到SNMP陷阱,我们就可以轻松解密SNMP陷阱中的每个varbind,如下例所示。

我在SNMP陷阱中添加了9个变量(varbinds)。 在显示的示例中,我使用的是静态数据,就像我从命令行添加的数据一样。 所有这些都可以通过使用SNMP陷阱varbinds中的变量来更改,以显示警报的输入数据。

一旦数据显示在SIEM SNMP探针中,就可以通过使用大多数SNMP探针中内置的规则和逻辑来丰富数据,这些规则和逻辑旨在处理大量数据。 最简单的规则是重复数据删除,它将抑制重复的事件,并且仅更新SIEM事件控制台中的最后一次出现时间戳。 在大多数情况下,SIEM控制台还应该能够显示混合了SNMP varbinds数据的静态文本消息。

对于上面的示例,如果在托管服务环境中,则可以进行分类以定义特定类型“ 911”的事件,以与特定类型或应用程序或客户相关。

可以使用发件人OID(对象标识符)进行操作或分类。 因此,基于从SNMP陷阱接收的数据,我们可以轻松地对问题进行分类并以标准SIEM事件格式(CEF等)对其进行标准化。

客户/组—达拉斯市

时间戳记-SNMP陷阱中的$ time变量

客户名称— $ varbind1 =达拉斯市

设备名称-$ varbind2 = IoT_Temp_Guage_1051

位置-$ varbind3 + $ varbind 4 = GPS坐标纬度:32.776664 GPS坐标经度:-96.796988

事件消息-$ varbind5,$ varbind6,$ varbind7,$ varbind8,$ varbind9。 我用带下划线的词来显示varbinds。 =设备报告的温度超出范围。 当前监控的温度为104华氏度。 要求派遣技术和警报紧急人员

例子2

在方案2中,我们假设将IoT血压监测器(BPM)部署到了家庭健康服务所有客户的所有患者。

当BPM检测到患者已超过预设阈值并可能因高血压而处于危险中时,BPM会生成一条消息。 BPM包含活动的SIM,并且正在与云应用程序通信。

该消息通过蜂窝网络发送到我们的物联网应用程序。 当没有蜂窝服务时,BPM消息将缓冲到其自己的板载内存中,然后在恢复连接时发送到IoT应用程序。

一旦我们的BPM将消息发送到基于云的IoT应用程序,该应用程序将基于BPM标识信息收集有关客户的其他数据。 消息被构建为发送到安全操作控制台以立即采取措施。

该消息将需要通知安全操作员,派出紧急人员,与客户联系,最后一次通过GPS坐标将BPM登录到IoT应用程序中的人员位置以及BPM检查的详细信息。

对于此示例,我在SNMP陷阱中使用了8个varbinds,并能够从CENTOS虚拟机生成它,在实验室环境中,它是IoT应用程序分析和SNMP陷阱发送方。

snmptrap -v 1 -c B1gS3cr3t 192.168.1.16’1.1.911”192.193.194.195’6 911”1.1.1.1.1.1 s“家庭健康服务” 1.1.1.1.1.2 s“ Onperson BP Monitor” 1.1.1.1。 1.3 s“ GPS坐标纬度:32.776664” 1.1.1.1.1.4 s“ GPS坐标经度:-96.796988” 1.1.1.1.1.5 s“检测到高血压” 1.1.1.1.1.6 s“ 161/84 mmHg” 1.1.1.1 .1.7 s“联系人:214–999–1234” 1.1.1.1.1.8 s“警报应急人员”

我使用的是相同的测试实验室环境,因此该应用程序在命令行上使用net-snmp发送SNMP陷阱。 陷阱是在简单陷阱接收器中的另一台机器上捕获的。 下图显示了通过命令行发送的陷阱,可以将其轻松更改为通过IoT应用程序中消息触发的操作或脚本来调用。

下图显示了SNMP陷阱的接收以及所有必要的变量,使其进入陷阱接收器,在我们的实验示例中,该接收器正在模拟SIEM SNMP探针。

在生产中,SIEM SNMP探针具有逻辑和智能功能。 我已经在第一个示例中说明了这些功能,因此在此不再赘述。

查看SNMP陷阱,我们看到有8个varbinds,每个varbinds都需要在SIEM操作员控制台中显示有关警报的详细信息。 SNMP陷阱varbinds的详细信息如下。

如以上示例中所述,SNMP陷阱是使用静态信息创建的,以填充每个varbind,但是可以使用IoT设备消息中的变量轻松创建SNMP陷阱,但是在显示消息时调用脚本作为操作。

对于此示例,如果在托管服务环境中,则也可以进行分类以定义特定类型“ 911”的事件,以与特定类型或应用程序或客户相关。

可以使用发件人OID(对象标识符)进行操作或分类。 因此,基于从SNMP陷阱接收的数据,我们可以轻松地对问题进行分类并以标准SIEM事件格式(CEF等)对其进行标准化。

客户/组—家庭保健服务

时间戳记-SNMP陷阱中的$ time变量

客户名称— $ varbind1 =家庭保健服务

设备名称-$ varbind2 = Onperson BP Monitor

位置-$ varbind3 + $ varbind 4 = GPS坐标纬度:32.776664 GPS坐标经度:-96.796988

事件消息-$ varbind5,$ varbind6,$ varbind7,$ varbind8。

我用带下划线的词来显示varbinds。 =检测到高血压。 在发出此警报时,BP为161/84 mmHg。 请求警报紧急人员。 客户的联系电话是214–999–1234。

如上例所示,通过适当的规划和设计,创建基于SNMP陷阱的集成是“简单的”。

最后的想法

上面的配置不限于用于IoT到SIEM的集成,因为我使用了类似的开发方法将各种应用程序集成到众多安全性,网络或元素管理平台中,以进行数据标准化和后续服务台集成。

下一篇文章将介绍相同的示例,但是我们将使用Syslog代替SNMP陷阱。

只要对解决方案体系结构进行了适当的规划和考虑,实际的应用就很多。 考虑一下物联网是一个狂野的西部,并且标准正在发展的事实。 保持专注并使用成熟的监视和管理技术很有意义,以后可以将其迁移到新的集成技术中。 这些类型的集成为希望进入基于IoT的应用程序服务的公司提供了最快的上市途径。

免责声明

这里表达的观点是我自己的,而不是我雇主的观点。 当我研究和学习不同的技术时,我的想法和观点将会改变。 随着技术的变化,我的观点也会变化。 感谢您抽出宝贵的时间阅读。