图1 基础蜜网架构IIoT的部署环境十分广泛,Javier等的研究将蜜网在IIoT的应用环境分为了6个大部分,分别为工业控制系统ICS、智能电网、水系统、燃气线路、楼宇自动化系统和综合IIoT蜜网,并从技术发展上对其进行了分类,图2是适用IIoT的蜜罐、蜜网分类,图3则描绘了IIoT蜜罐、蜜网的发展历史[8]。作为现有蜜罐的主要目标应用领域之一,一半以上的IIoT蜜罐都是针对ICS环境而设计。虽然针对特定IIoT应用的饵较少(大多数研究是针对ICS的),但类似的工业设备(如PLC)仍被ICS和智能基础设施(如电网、水、天然气)所使用。
图2 适用IIoT的蜜罐、蜜网分类
图3 IIoT蜜罐、蜜网的发展IIoT蜜网始于2004年思科的SCADA HoneyNet项目。SCADA HoneyNet是基于Honeyd的开源蜜罐框架,是一个低交互蜜网,支持模拟在PLC上运行的Modbus/TCP、FTP、Telnet和HTTP服务。Berman在美国空军技术研究所发布的2012年的论文是在文献中针对IIoT蜜罐、蜜网进行的第一个研究,次年第二篇该领域论文同样是在美国空军技术研究所发布,而这两篇论文的发布时间正好对应于震网病毒的时代。2013年,史上最受欢迎的ICS蜜罐Conpot开源项目完成,Trend Micro Research的Wilhoit发布了他们的低交互ICS蜜罐白皮书,这也为后来大量的IIoT/CPS方向的蜜罐、蜜网研究实践注入了新的动力。IIoT低交互蜜罐可以提供扫描、目标协议、攻击源和暴力尝试有关的有价值信息。另一方面,只有通过中/高交互蜜罐,才有可能发现并分析其他更高级的攻击、对具体工业协议及流程的攻击。IIoT高交互蜜罐允许攻击者对系统进行破坏,或利用蜜罐进行一些其他攻击行为,所以部署高交互蜜罐是一个很危险的行为,尤其是在IIoT这种具有特殊要求的环境,更不用说工业设备的高成本是IIoT蜜罐使用虚拟资源而非物理设备的最大驱动因素之一。IIoT环境因其独特的要求和功能,使得包括蜜罐在内的安全工具,即使有着很先进前沿的研究,却始终难以在这些领域积极部署应用。就蜜罐的用途而言,大多数蜜罐和蜜网都只有着研究目的而没有生产目的。SCADA设备需要连续工作,能够中断和停机的情况少之又少。除此之外,工业设备一般有高度的时效限制,需要严格保证响应时间。因此,在未部署蜜罐的ICS生产环境中插入蜜罐,或对已被淘汰或版本落后的蜜罐进行更新是非常困难的,这些行为极大可能影响ICS通信,并对系统有破坏风险(高交互蜜罐)。最常被用于在IIoT蜜罐、蜜网中检测/测试的攻击是扫描(scanning)攻击。大多数研究都对扫描攻击进行了不同时间周期的测试,这些蜜罐能统计扫描次数、进行流量分析、借助现有库判断扫描源合法性等。除了DoS和DDoS,SSH、暴力尝试和中间人攻击也是特定的蜜罐和蜜网环境中的重点检测对象。一些虽然没有上述攻击那么常见的,像勒索软件、挖矿后台等恶意软件和一些针对ICS的特定攻击,例如HAVEX RAT、PLC Blaster和tank overflow攻击也是防护重点。Linux是蜜罐和蜜网主流的操作系统环境,除此之外还有FreeBSD。编程语言上,Python最为流行,C/C++和Java也有使用。这应该与这些语言有支持工业协议的库有关,例如Python有Modbustk、pymodbus和cpppo EtherNet/IP库;C/C++有libiec61850和OpenDNP3库;Java有JAMOD Modbus库[8]。Conpot蜜罐作为最流行的IIoT/CPS开源蜜罐,也是用Python编写的。我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?
📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年
我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("
我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功
我希望用户从一个模型的三个选项中选择一个。即我有一个模型视频,可以被评为正面/负面/未知目前我有三列bool值(pos/neg/unknown)。这是处理这种情况的最佳方式吗?为此,表单应该是什么样的?目前我有类似的东西但显然它允许多项选择,而我试图将它限制为只有一个..怎么办? 最佳答案 如果要使用字符串列,让我们说rating。然后在你的表单中:#...#...它只允许一个选择编辑完全相同但使用radio_button_tag: 关于ruby-on-rails-Rails单选按钮-模
a=[3,4,7,8,3]b=[5,3,6,8,3]假设数组长度相同,是否有办法使用each或其他一些惯用方法从两个数组的每个元素中获取结果?不使用计数器?例如获取每个元素的乘积:[15,12,42,64,9](0..a.count-1).eachdo|i|太丑了...ruby1.9.3 最佳答案 使用Array.zip怎么样?:>>a=[3,4,7,8,3]=>[3,4,7,8,3]>>b=[5,3,6,8,3]=>[5,3,6,8,3]>>c=[]=>[]>>a.zip(b)do|i,j|c[[3,5],[4,3],[7,6],
默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同
我写了很多initialize代码,将attrs设置为参数,类似于:classSiteClientattr_reader:login,:password,:domaindefinitialize(login,password,domain='somedefaultsite.com')@login=login@password=password@domain=domainendend有没有更像Ruby的方式来做到这一点?我觉得我在一遍又一遍地编写相同的样板设置代码。 最佳答案 您可以使用rubyStruct:classMyClass或
我在一个ruby文件中有一个函数可以像这样写入一个文件File.open("myfile",'a'){|f|f.puts("#{sometext}")}这个函数在不同的线程中被调用,使得像上面这样的文件写入不是线程安全的。有谁知道如何以最简单的方式使这个文件写入线程安全?更多信息:如果重要的话,我正在使用rspec框架。 最佳答案 您可以通过File#flock给锁File.open("myfile",'a'){|f|f.flock(File::LOCK_EX)f.puts("#{sometext}")}