50 种避免在 2017 年被黑客攻击的方法

Paul Simon 概述了“50 Ways to Leave Your Lover”,而我们则介绍了 50 种保护您系统安全的方法。
830 位读者喜欢这个。
Improve your DevOps security game with Ansible Vault

Opensource.com

当我年轻的时候,Paul Simon 发布了他的热门歌曲 50 Ways to Leave Your Lover。受这首歌的启发,我收集了 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. 仅从受信任的来源安装软件。不要安装您在 Internet 上找到的可疑的东西。这适用于您的手机、计算机系统、虚拟机、容器等等。

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. 在虚拟机中运行您的容器。虚拟机提供比容器更好的隔离。像在虚拟机上运行容器一样,为您提供可伸缩性和彼此隔离。

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

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

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

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

44. 不要以 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.