就采用DPI技术的防火墙而言,这就是实际发生的事情。防火墙会查看网络上该数据包中的特定字母(如果您愿意)。然而,基于签名的系统(如Snort)与真正特定于协议的DPI引擎有何不同?
使用标准防火墙,您可以识别消息来自谁(源),要去哪里(目的地)以及内容的语言(端口)。不过,你对这封信的内容一无所知。
基于签名的深度数据包检测 – 一种反应式数据包匹配策略
回到信封和信件的类比,在基于签名的方法的情况下,这类似于说信件只能有特定顺序的某些单词,并且它们只能以这种特定方式呈现。
基于签名的系统是一个反应式系统,其中必须已经知道漏洞(vuln),以便能够设计签名来识别它,这反过来也意味着漏洞已经在野外存在。此签名的功能基本上是覆盖在特定漏洞的数据包(将一组字节映射到已知字节模式)上。
有两种方法可以利用基于签名的方法。您可以使用它来识别已知漏洞(黑名单),因此您的签名仅识别这些特定的异常并允许其他所有内容通过防火墙 - 这意味着它肯定不会捕获任何新的或未发布的漏洞。
另一方面,如果您构建了一个签名列表以仅允许某个数据包集(这意味着您将拥有一个非常大的签名数据库)(白名单)并丢弃所有不在该集中的数据包,那么您的保护机制仅与您允许的签名集一样好。为了真正有效,允许的签名必须尽可能详细。
签名编写起来并不简单,应该尽可能细化到特定的工厂;这意味着工厂操作员或工程师必须编写自定义签名。在我看来,这太过分了。这就是为什么签名通常只是黑名单项目,默认策略允许其他所有内容。
通常,签名以大型数据库的形式出现,每周或每天更新(想想病毒软件)。这也意味着必须制定一些流程来主动抓取这些签名文件,并将它们带到工厂车间,然后推送到安全设备。众所周知,工厂网络应该很好地分段,因此不应直接连接到ICS。
基于签名的 DPI 在 IT 世界中很普遍,并被互联网服务提供商 (ISP) 大量使用。一个常见的用途是BitTorrent流量。
特定于协议的深度数据包检测 – 主动的“全知”策略
另一方面,在验证协议结构的DPI系统中,数据包和正确字节值的顺序比基于签名的系统(在我看来)要健壮得多。事实上,它还可用于限制协议的特定寄存器范围,甚至验证特定范围内的特定值只能是x,y,z。
这种对协议的“全知”知识是主动的,而不是被动的,因为它可以潜在地保护PLC协议实现中的漏洞,而无需更新。此外,从理论上讲,它可以防止未知的漏洞。这是因为它已经能够捕获“逐个关闭”错误或缓冲区溢出,因为它已经在验证协议规范中概述的最大字段大小。
使用基于签名的 DPI 时,仅当此邮件以这种确切格式存在于签名数据库中时,才会拒绝此邮件。另一方面,特定于协议的DPI具有知道这是“糟糕的语法”并会主动阻止它的聪明人。
深度数据包检测 – 对深度防御非常重要
在SCADA/ICS行业中,确实需要增强或实施安全性,现在一切都在迅速互联。基于签名和特定于协议的 DPI 都提供了额外的过滤层。在DPI之前,工厂工程师只能要求防火墙打开一个端口,让每个读取或写入命令流向PLC。
基于签名的DPI在纵深防御中可以发挥作用,尽管在与外部世界隔离且对变化高度敏感的工业网络中很难使签名保持最新状态。
基于协议的DPI更加强大,使工厂工程师能够限制写入命令的使用或完全阻止特定工业协议的写入。它也更适合工业环境,因为它不需要工程师编写签名,并且可以为PLC提供保护,而无需频繁更新。