基于Linux的物联网设备的安全案例
您是否属于将 Internet 连接和服务添加到原本不打算这样做的设备中的 OEM 和系统集成商?如果您是,那么您知道通过将这些产品连接到 Internet,客户正在发现新的收入形式,在某些情况下,还会发现全新的商业模式。更重要的是,他们能够使他们现有的产品更有价值和更具成本效益。
随着我们继续看到更多连接互联网的设备,我们必须承认它们将容易受到攻击、远程禁用或以其他不受欢迎的方式受到损害——每种情况都严重威胁到这些新商业模式的整个基础。
考虑以下家庭自动化领域的示例。它是物联网 (IoT) 的最大消费者应用程序之一,并且可能是攻击者最有利可图的应用程序之一。犯罪分子可以如何处理存储在可能被认为是无害的家庭自动化设备(如 IP 连接的智能恒温器)中的信息?嗯,这些设备是为了学习你的习惯而设计的。它们旨在识别或“学习”您何时在家和何时外出,以便它们可以优化用于加热和冷却房屋的能量。你可以猜到我会用这个去哪里。他们会了解您的习惯并跟踪您的日常生活——对于那些想不请自来的人来说,这是一种耸人听闻的素材。
还记得三星智能电视的案例吗?为了能够响应语音命令,它会不断地“倾听”您的谈话,对其进行解释,然后甚至可能将其发送给“授权”的第三方。是的,我是认真的。早在 2013年,智能电视就被证明是可破解的(不是没有锁定安全性)。这是一个完美的例子,证明了对多个可访问性级别的需求。在智能电视案例中,只有一个用户帐户可能,并且该用户(即攻击者)可以访问设备上的任何内容。
通过默默无闻的安全
在过去的许多情况下,产品开发人员会依靠他们的设备太少且对黑客来说太无趣这一事实来尝试利用它们。换句话说,这些设备是模糊的——网络上表面上未知的节点。不幸的是,这种策略将不再有效。预计在未来五年内将有数十亿台设备连接到互联网(功能种类繁多),这些曾经“不感兴趣”的设备将成为非常诱人的攻击目标。
这个特定的网站专门用于展示连接到 Internet 的设备的存在,以及(如果可能)的类型。此类设备可能是网络摄像头、恒温器或任何其他联网的家庭自动化设备。通过这个网站,订阅者可以扫描和搜索一系列连接的设备。
现在,如果您在这种情况下依靠默默无闻来保护您,您可能不会担心更改默认 root 密码。此密码由供应商设置为始终同名,因为如果默认密码始终相同,则编写文档非常简单。对消费者来说是个坏主意。..
未更改的默认 root 密码是对黑客的公开邀请,可以登录并控制摄像头。他们有效地获得了通过遥控器查看和录制视频的完全控制权,而所有者完全不知道。
您可能读过一个关于婴儿和父母用作婴儿监视器的网络摄像头的故事。父亲走进他孩子的房间,听到一个男人通过摄像头的扬声器在催促孩子“醒来”。当父亲走进房间时,镜头摇动,另一端的人开始对他大喊粗俗,直到他拔掉了相机。
这只是为什么互联网安全在未来几年将变得非常重要的众多例子之一。它需要成为联网设备制造商的首要考虑因素。
这些设备中的大多数都运行 Linux,这是世界上用于运行嵌入式设备的最流行的操作系统。在本文中,我们将探讨在保护连接 Linux 的设备时需要考虑的几种技术。
在我们详细介绍之前,重要的是您必须深入了解安全风险,识别与此类业务攻击相关的潜在成本,并最终了解如何设计您的软件并适当地建立智能安全策略。应该说,额外的安全性确实是有代价的,通常是在性能损失、功能受限和额外的开发成本方面。
为了说明这些考虑,我希望您考虑在笔记本电脑或工作站上运行增强的安全软件的体验。我说的是防病毒软件、驱动器或文件系统加密以及访问控制软件。我们大多数人都欣赏这些程序提供的额外安全性。但是,我可能会偏离基础,我猜大多数读者有时实际上禁用了部分或全部,特别是如果您是开发人员并且正在尝试运行一些 CPU 密集型任务,安装可能无法使用的软件工具或实用程序被 IT “批准”,甚至运行执行大量文件系统访问的程序,例如从源代码构建 Linux 发行版。
保护连接的 Linux 设备
在这里,我将分享一些简单的方法,可以让您的嵌入式 Linux 产品更安全地抵御某些类型的威胁,所有这些都无需安装太多额外的软件或专有(商业)软件。
禁用并删除(或不安装)不必要的服务
Linux 的优点之一是在开发过程中利用网络服务调试和部署应用程序是多么容易。这些服务(TFTP、SFTP、SSH、NTP、gdbserver 等)也是攻击者目标最丰富的切入点。您应该只在生产期间在您的 Linux 平台中实现特定的必需服务,并使用诸如 nmap 之类的端口扫描器来检查开放端口(例如,侦听服务)。
使用防火墙
防火墙的基本原因是在内部和外部网络之间提供屏障。这是网关或路由器的关键功能,因为假设内部网络是开放且受信任的。Linux 有许多可用的防火墙解决方案。其中包括iptables/netfilter、Shorewall和UFW(简单防火墙)。有不同级别的功能、易用性和可配置性[5][6][7]。
安全
Grsecurity是 Linux 内核源代码的一组补丁,可提供增强的安全性。它为内核提供了基于角色的访问控制 (RBAC) 系统,因此进程(和用户)只能访问最少数量的文件,仅此而已。此外,它还提供了一个名为 PaX 的不同名称的捆绑补丁。PaX 提供了其他安全功能,可以通过创建执行空间保护来消除某些其他类型的攻击,例如缓冲区溢出。它还可以解决进程的空间布局随机化问题,以击败依赖于了解任务的默认虚拟内存组织(缓冲区溢出和其他攻击)的漏洞[8]。
RBAC
RBAC 的目标是最小化用户或进程对系统其余部分的特权。例如,许多连接互联网的基于 Linux 的系统可以实现许多互联网服务,包括 Web 服务器以及安全外壳 (SSH) 服务器。这些提供对设备的各种级别的访问,允许用户使用漂亮的用户界面(通过 Web 服务器)进行简单的配置更改,或者使用 SSH 进行更精细的更改。RBAC 可以根据用户的特定角色限制用户对沙箱的读取、写入和执行权限。这类似于基于 Linux/Unix 组限制对文件的访问,其中 RBAC 中的角色类似于组。
RBAC 如何真正帮助保护您的设备?对于初学者,您可以设置一个策略来限制所有用户对特定文件和系统服务的访问,甚至包括 root 用户。如果使用不同的漏洞利用来获得 root,则攻击者可能无法获得对系统的完全访问权限,这是他们成为 root 用户时通常期望的。
PaX 功能
PaX(grsecurity 的一部分)有助于抵御缓冲区溢出攻击。缓冲区溢出是指攻击者将数据注入进程的堆栈,从而允许他们更改程序流程并执行恶意代码。
许多现代处理器架构都实现了一个位 (NX),它将内存部分标记为可执行或不可执行。PaX 可以关闭所有数据段的执行权限,并可以禁用内存中所有可执行段的写权限。这样,即使攻击者能够实现缓冲区溢出,他们也无法将代码加载到指定的可执行内存中。
此外,PaX 在加载时随机化进程的地址空间。大多数进程将加载到虚拟内存的特定区域,加载库,并将堆栈放置在已知的内存位置(映射)中。这使得攻击者很容易运行缓冲区溢出,因为堆栈在同一个地方。通过随机化堆栈位置,除了内存的其他部分之外,它确实很难运行缓冲区溢出,因为(A)攻击者必须猜测堆栈的位置,或者(B)攻击者可能会覆盖一部分可执行代码并使进程自身崩溃。
Grsecurity 实现和配置
grsecurity 的大部分功能都不需要额外的配置,这是其他 Linux 安全增强(例如 SELinux)所不能做到的。
您可以通过下载内核版本的补丁来实现 grsecurity,然后使用补丁实用程序将补丁更改应用到内核源代码树。在编译内核之前,您需要配置 grsecurity 的构建选项。有很多选项,但您可能想要开始将 GRKERNSEC_CONFIG_AUTO 设置为 Y。这将为您的内核配置 grsecurity 提供最简单的方法,并且可能是一个很好的开发基准。
把它包起来(安全,连接时)
对于物联网产品,在设计之初就将安全性构建到产品中是绝对必要的。如果您不这样做,您的业务的关键部分就会受到攻击。真的就是这么简单。您构建的安全级别需要与与给定受损设备相关的风险相匹配。不过,请记住,您可以做一些相当简单的事情来大大提高保护级别。
审核编辑:郭婷