50 种避免在 2017 年被黑客入侵的方法

保罗·西蒙概述了“离开爱人的 50 种方法”,而我们介绍了 50 种保护您系统的方法。
830 位读者喜欢这个。
Improve your DevOps security game with Ansible Vault

Opensource.com

当我年轻的时候,保罗·西蒙发布了他的热门歌曲 离开爱人的 50 种方法。受这首歌的启发,我收集了 50 种系统管理员和普通人可以避免被黑客入侵的方法

“你只需悄悄溜出去,杰克”

1. 备份您的数据。如果您遭到勒索软件攻击,如果您有备份,则无需支付赎金。

2. 当您不得不在公共场所为手机充电时,请使用 syncstop,或携带自己的备用电池。

3. 利用审计子系统。有很多很棒的工具可以帮助监控您的系统。如果您确实遭到入侵,审计系统很可能能够告诉您发生了什么以及攻击者做了什么。

4. 说到日志,将日志卸载到中央服务器始终是一个好主意,因为如果黑客侵入您的系统,他要攻击的第一件事就是日志记录系统以掩盖他的踪迹。拥有一个良好的入侵系统来监视日志也很有帮助。

“制定新计划,斯坦”

5. 以强制模式运行 SELinux(请参阅 stopdisablingselinux.com)。没想到我会花这么长时间才提到这一点?SELinux 可以防止零日漏洞的升级。当 Shell Shock 出现时,SELinux 是唯一的防御手段。

6. 尽可能在 SELinux 沙箱中运行应用程序——它在容器流行之前就已经是容器了。还要关注 Flatpack 的发展,它很快应该会开发沙箱功能。

7. 不要安装或使用 Flash。Firefox 不再支持它,希望大多数 Web 服务器都在远离它。

8. 使用 受限的 SELinux 用户来控制用户在您的系统中的操作。如果您正在运行共享登录系统,请将用户设置为 guest_t

“你无需腼腆,罗伊”

9. 利用 systemd 工具来帮助保护您的服务。大多数系统攻击都将通过在网络上侦听的服务进行。Systemd 提供了锁定服务的绝佳方法。例如,使用 PrivateTmp=yes。PrivateTmp 利用挂载命名空间为服务器的 /tmp 设置私有的 tmpfs 挂载。这可以防止被黑客入侵的服务访问主机 /tmp 中的内容,并可能基于侦听 /tmp 的服务攻击系统的其余部分。

10. InaccessibleDirectories=/home 是一个 systemd 单元标志,它使用挂载命名空间从服务视图中消除 /home(或任何其他目录),这使得被黑客入侵的服务更难以攻击内容。

11. ReadOnlyDirectories=/var 是另一个 systemd 单元标志,它使用挂载命名空间将目录内容转换为只读模式。您可能应该始终以 ReadOnlyMode 运行 /usr。这将防止被黑客入侵的应用程序重写二进制文件,因此下次启动服务时,您就已经被黑客入侵了。

12. 从服务中删除功能 (CapabilityBoundingSet=CAP_CHOWN CAP_KILL)。在内核中,特权进程被分解为一系列不同的功能。大多数服务不需要很多(如果有的话),systemd 提供了一个简单的开关来从服务中删除它们。

13. 如果您的服务不打算使用网络,那么您可以使用 PrivateNetwork=yes 为服务关闭网络。只需在服务单元文件中打开此选项即可利用网络命名空间并关闭服务可用的所有网络。通常,黑客实际上并不想侵入您的机器,他只是想将其用作攻击服务器来攻击其他机器。如果服务看不到网络,它就无法攻击网络。

控制您的服务可用的设备。

14. 控制您的服务可用的设备。Systemd 提供了 DeviceAllow 指令,用于控制服务可用的设备。DeviceAllow=/dev/null rw 将限制对 /dev/null 的访问,并且仅限于此设备节点,从而禁止访问任何其他设备节点。该功能是在设备的 cgroup 控制器之上实现的。

15. 即将到来的 systemd 系统的一个新功能是 ProtectSystem Strict,它可以打开所有这些命名空间,以完全锁定服务运行的环境。

“只需让自己自由”

16. 不要使用没有以强制模式运行 SELinux (SEAndroid) 的手机。幸运的是,我听说超过 90% 的 Android 手机现在都以强制模式运行 SEAndroid。这让我很高兴。现在,如果我们能让那些 Apple 的家伙使用 SELinux 就好了。

仅从受信任的来源安装软件。

17. 仅从受信任的来源安装软件。不要安装您在互联网上找到的可疑的东西。这适用于您的手机、计算机系统、虚拟机、容器等等。

18. 我不在手机上进行网上银行操作,只在我的 Linux 计算机上进行。如果黑客窃取了我的信用卡,我损失 50 美元;如果他进入我的银行帐户,我损失的就更多了。我想我已经老了。(别烦我。)

19. 我用手机做的一件很酷的事情是设置我的信用卡公司,以便每次我的信用卡被收费时都向我发送短信。这样,如果号码被盗,我会更快知道。

我不在手机上进行网上银行操作,只在我的 Linux 计算机上进行。

20. 当您需要安全地通信时,请使用 Signal 安全消息应用程序

“跳上巴士,格斯”

21. 在您的系统上运行 Linux。当我第一次为我父亲安装计算机系统时,我几乎刚到家,他的系统就被病毒感染了。我返回并在他的系统上安装了 Linux,从那以后他一直在运行它。我相信 Linux 通常是一个更安全的系统,因为它的设计方式,但我也相信桌面不太可能被黑客入侵,因为用户群较小。有些人会争辩说 Windows 多年来已经有了很大的改进,但对我来说,我仍然坚持我所知道的。

22. 仅运行具有 安全响应团队 监控发行版安全性的发行版。企业软件很重要。

23. 运行企业级内核。在容器中,单点故障是内核。如果您想保持安全,请使用企业级内核,这意味着它具有最新的安全修复程序,但不是最前沿的。请记住,最新的内核带有最新的安全修复程序,但它也带有大量可能存在漏洞的新代码。

“你无需多说”

24. 大多数黑客攻击都是社会工程——例如,电子邮件链接、Web 浏览器攻击和电话。这里最好的选择是受过教育并持怀疑态度。没有人从尼日利亚给你钱。美国国税局不会打电话到你家要钱。如果您从您的银行收到电子邮件中的网站链接,请不要使用该链接。直接在 Web 浏览器上键入地址。

25. 始终使您的系统完全更新到最新的安全修复程序。过时且具有已知安全漏洞的系统数量令人担忧。脚本小子依赖于您更新您的系统。

始终使您的系统完全更新到最新的安全修复程序。

26. 连接到网络上的服务时,始终使用 HTTPS。Chrome 和 Firefox 现在都具有强制执行此操作的模式。如果一个网站到 2016 年还不支持安全通信,那么它可能不值得您访问。

27. 在您的容器中使用 seccomp。这限制了内核上的攻击面,内核是单点故障。限制进程可以讨论的内容。

“只需放下钥匙,李”

28. 使用 YubiKey 存储私钥。

29. 加密您系统上的数据。至少对于笔记本电脑,保持您的 homedir 和其他数据目录加密。几年前我在伦敦乘坐地铁,我的笔记本电脑被“偷”了——火车车厢的门关上了,我注意到我的笔记本电脑不见了,火车正在驶出车站。幸运的是,磁盘已加密。

30. 为您的所有网站使用 Let's Encrypt。现在没有理由不运行 HTTPS 了。

31. 永远不要在不同的 Web 服务器上使用相同的密码。这一个很难不陷入陷阱。像 Let's Encrypt 这样的工具帮助很大。如果您使用 ssh 密钥登录系统,那就更好了。

32. 使用双因素身份验证 (2FA)。密码几乎变得毫无用处。使用 YubiKey 等工具使双因素身份验证变得容易。我们都有手机。在您的大脑中拥有一个秘密,并在手机上生成一个秘密总是比密码更好。

33. 没有什么比网站总是要求我设置帐户更让我恼火的了——我们不能做得更好吗?始终为您的网站密码使用密码生成工具。我是老派:我使用 Password Safe 并剪切并粘贴到 Web 浏览器中。我听说其他人使用 LastPass 和其他集成您的手机和 Web 服务的工具效果良好。

34. 设置像 FreeIPA 这样的服务用于身份服务。使用像 Kerberos 这样的工具进行身份验证和授权使得跟踪员工及其对系统的访问变得更加容易(并且它具有很酷的加密服务)。使用 Active Directory 还可以,但我有点偏见。

当您必须使用经常需要键入的密码时,请使用容易记住的句子而不是单词。

35. 当您必须使用经常需要键入的密码时,请使用容易记住的句子而不是单词。我记住密码的首选方式是使用一个容易键入的几个词长的短语。

“让自己自由”

36. 使用 USBGuard 保护您的系统免受恶意 USB 设备的影响。

37. 过去几年,我一直在研究容器,所以现在让我们深入研究容器的安全性。首先在以强制模式打开 SELinux 的系统上运行它们。如果您的系统不支持 SELinux,请将发行版切换到支持 SELinux 的发行版。SELinux 是防止使用文件系统容器突破的最佳工具。

38. 尽可能在容器内运行您的服务。我相信这是未来——应用程序使用 OCI 镜像格式 和 Linux 容器技术。使用 Docker、runC、OCID、RKT、Systemd-nspawn 等启动这些容器。虽然我经常说“容器不包含”,但它们确实比不在容器内运行更好。

39. 在 VM 中运行您的容器。虚拟机提供比容器更好的隔离。像在虚拟机上运行容器一样运行容器为您提供可扩展性和彼此隔离。

40. 在不同的虚拟机上运行具有不同安全需求的容器化应用程序。在 DMZ 中的虚拟机上运行您的 Web 服务容器,但在 DMZ 之外的虚拟机上运行数据库容器。

41. 还要记住在不同的物理机器上运行最需要安全性的虚拟机,在容器内的不同虚拟机上运行(又名,深度防御)。

42. 在 只读模式下运行您的容器。 开发中的容器需要能够写入 /usr,但生产中的容器应该只能写入 tmpfs 和挂载到容器中的卷。

43. 从您的容器中删除功能。我们在容器内外运行进程时,使用的“功能”比它们需要的要多得多。您可以通过删除功能来使您的进程更安全。

44. 不要以 root 身份在容器中运行您的进程。大多数服务永远不需要 root 权限,或者它们需要 root 权限才能绑定到端口 < 1024,然后切换到非 root 用户。我建议始终以非 root 用户身份运行应用程序。

45. 使您的容器保持最新的 CVE 修复程序。使用像 OpenShift 这样的系统来构建和维护您的容器镜像是一个好主意,因为它会在出现新的安全修复程序时自动重建容器镜像。

46. 我的一位同事说,“Docker 完全是在您的主机上以 root 身份运行来自 Internet 的随机代码。” 从受信任的来源获取您的软件。不要从 docker.io 抓取您找到的第一个 Apache 应用程序。操作系统很重要

47. 在优化的受限容器化主机(例如 Atomic Host)上在生产中运行您的容器,该主机随附所有已打开的安全性,针对运行容器进行了优化,具有有限的攻击面和原子更新。有什么理由不喜欢呢?

48. 使用像 OpenScap 这样的工具扫描您的系统是否存在漏洞。可悲的是,新的漏洞总是不断涌现,因此您必须保持扫描仪的更新。(也请查看 atomic scan 以扫描您的容器。)

49. OpenScap 还具有扫描 安全配置 的功能,例如 STIG(安全技术实施指南)。

50. 为您的孩子收到的所有圣诞节 IoT 设备设置一个特殊的访客网络。我喜欢我的 Amazon Echo 和自动化灯光和电源开关(“Alexa,打开圣诞灯”),但这些设备中的每一个都是一个具有可疑安全性的 Linux 操作系统。

“一定还有 50 种以上避免被黑客入侵的方法”

您会在列表中添加什么?请在评论中告诉我们。

Josh Bressers 为本文做出了贡献。

User profile image.
Daniel Walsh 在计算机安全领域工作了近 30 年。Dan 于 2001 年 8 月加入 Red Hat。

15 条评论

这是一个很棒的建议!而且非常及时。

我儿子刚刚因为可疑活动被关闭了帐户,并且正在设置可用的恢复地址和身份验证方法。

您会认为在第 1 项下列出的内容应该是管理员已经做的事情。我可以说这并非总是如此。我见过这种情况会导致重大问题,但外面的公司就是不明白。他们认为“我太小了,黑客不会关心我”。这与事实相去甚远。

> 7. 不要安装或使用 Flash。Firefox 不再支持它,希望大多数 Web 服务器都在远离它。

说 Firefox 不再支持 Flash 是不正确的。Firefox 只是阻止了一些跟踪 SWF,Firefox 53 可能会使 Flash 成为点击播放。Web 服务器与 Flash 无关,而是网站。

我赞扬您列出的这份详尽的清单,但它的详尽性同时也是人们做得如此之少的原因,它似乎太难了。
我不确定它是否在您的列表中,因为它要读的内容太多了,但我遵循的一个基本原则是永远不要将任何真正重要的东西(例如我的银行帐户)无线连接起来。我拒绝使用任何要求我提供信用卡信息的公司的“有帮助”的应用程序。这些是合法的公司,但他们怎么会如此愚蠢/鲁莽?

很棒的列表,感谢您整理出来。在一段时间以来(孩子、家庭、工作……)比我应该做的更宽松之后,我一直在努力使我的世界更加安全。我喜欢您关于网站加密的观点,并且能够非常轻松地为我的个人博客设置 SSL。看起来有很多替代方案都提供简单的一键式 SSL,即使在几年前也截然不同!

令人惊叹的列表。谢谢您,特别是 SELinux 技巧!

我前几天发现,很多人不知道 Security Focus 已经备案了 CVE 的 RSS。我订阅了它,并密切关注任何适用于我维护或使用的软件包的内容。各种订阅源的链接在这里:http://www.securityfocus.com/rss

规则 50-52:不要从浏览器复制并粘贴到终端;
如果第 50 条,那么不要胆敢按回车键。慢慢撤消走开一会儿。
如果第 50 条和第 51 条:在我看来,头号会被解雇的罪行——以 sudo/root 身份同时执行这两项操作。

免责声明——我指的是“管道下载”eval,没有任何检查或考虑 HTTPS、哈希总和、gpg 等。curl -L this.sh | bash; 安装程序例如 hashbang dot sh 站点对于任何不熟悉它的人来说都是一个很好的例子。我在 GitHub 等网站上看到了很多这些“安装程序”,有人愿意为了方便而牺牲安全性/常识。但是……这只是一个人对日益增长的趋势的看法。

很棒的文章,感谢分享!

是啊,是啊。每当我看到一个项目鼓励其用户通过运行管道连接到 root shell 的 curl 命令来安装他们的软件时,我都会感到震惊。这是不负责任的、自以为是的,并且开了一个坏的先例。

回复 ,作者:Stephen(未验证)

很棒的综合文章,我可能会补充一点,永远不要从管理员用户帐户运行您的日常工作系统,而是设置一个单独的非管理员帐户作为您的常规工作站。

啊,你现在有了一个普通 Linux 高级用户无法使用的系统。

首先,SELinux 管理仍然不适合胆小者。请告诉我什么时候有一个体面的前端来管理它的权限,我会再看一眼。在那之前,我会等待。

其次,“企业级内核”?这甚至意味着什么?只有 Red Hat 或 Suse 作为您的发行版选择?抱歉,我是一个铁杆 Debian 粉丝,很高兴运行测试版。:-)

第三,安全响应团队?再次,只有 Red Hat 或 Suse?见上文。

第四,摆脱 Flash。我承认我很想这样做。不幸的是,仍然有太多视频网站需要它才能删除它。哎,我仍然无法通过 Chrome 成功访问 Youtube 视频。我必须回到 Firefox 和 Flash。如果 Google 都做不到,你凭什么认为其他人能做对?

第五,systemd。我喜欢这个概念,但讨厌、讨厌、讨厌它的实现。这是一个堕胎。仅仅因为破坏 POSIX 兼容性?没有用于配置的文本文件?只能通过单个应用程序读取的一个不可读的二进制块?我永远不明白为什么 Red Hat 竟然仍然不明白这一点。附注:Poettering 几乎不断地人身攻击他的批评者,并且拒绝承认他的宠物项目的缺点,这无济于事。

我还有更多反对意见,但我认为你明白了。

感谢 Daniel 分享这些信息。
我认为如果一个人想保持安全,就应该避免使用任何技术 :)) 因为普通用户无法应用所有这些建议。

非常informative!谢谢

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.