摘要: 我年少之时,保罗.西蒙的“离开爱人的50种方法”正发布畅销。 受这首歌的启发,我收集了50种适合从专业系统管理员到入门小白都可以掌握的防止系统被入侵的方法。
今天我们要讨论的是保护系统安全的50种方法,我收集了50种适合从专业系统管理员到入门小白都可以掌握的防止系统被入侵的方法:
1. 备份你的数据,如果你被勒索软件入侵,如果你有备份的话,你将毫无损失。
2. 如果你需要在公共场所充电的话,用 syncstop 或者带上你自己的充电宝。
3. 学会利用审计子系统(auditing subsystems)。它提供了很多监测你系统的酷炫工具。如果你的系统在某处被攻破了,审计系统将会告诉你发生了什么以及攻击者都做了什么。
4. 谈到日志,传输日志到一台中央服务器绝对是一个好方法,因为一旦黑客侵入你的系统,第一件做的事情就是攻击日志系统去掩盖他的入侵。安装一个好的保护系统持续监测日志也是极好的。
5. 强制模式运行 SELinux (戳 stopdisablingselinux.com)。没想到我要花这么久搞定它?SELinux 能控制零日漏洞的风险。 特别是 Shell Shock 出现后,SELinux 更成了唯一的保护盾。
6. 尽可能在 SELinux 沙箱下运行应用程序,这是一款不止于酷炫的酷炫沙箱。 对了,还有关注 Flatpack 开发组,他们将很快致力于开发提升沙箱性能。
7. 不要安装或者使用 Flash。 火狐已经不再支持它了,希望绝大多数网站服务器也把它移除。
8. 利用受限 SeLinux 访问用户来控制用户能在你的系统做什么。如果你使用多用户登录系统,将其他用户设为访问者(guest_t)。
9. 利用 systemd 工具来保护你的服务。 大多数系统攻击都是通过在网络上侦听的服务来实现。Systemd 提供了很好的方法来锁定服务。 例如,使用 PrivateTmp = yes 。PrivateTmp 利用安装命名空间为服务器的 /tmp设置专用 tmpfs 安装。这可以防止被黑客攻击的服务访问主机的/ tmp中的内容,以及通过侦听 /tmp 的服务攻击系统的其余部分。
10. InaccessibleDirectories =/home 是一个 systemd 单元标志,它使用安装名称空间从服务视图中删除/ home(或任何其他目录),使黑客攻击变得更加困难。
11. ReadOnlyDirectories =/var 是另一个使用 mount 命名空间将目录内容转换为只读模式的 systemd 单位标志。你最好仅在只读模式下运行 /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。现在,我们只要让那些用苹果的家伙使用 SELinux 就可以了。
17. 仅安装来自可信来源的软件。不要安装在互联网上发现的诡异的东西。这适用于您的手机、计算机系统、虚拟机、容器等。
18. 我不在我的手机上使用网上银行 - 只在我的 Linux 计算机上使用。如果黑客窃取了我的信用卡,我会损失50块钱;如果他进入我的银行帐户,我会失去更多。 我想我老了。 (滚开)
19. 我用我的手机做的一件很酷的事情是设置我的信用卡,每当信用卡扣费时给我发送短信。这样,如果卡里的钱被盗,我可以更快地知道。
20. 当你需要安全通信时,请使用信号安全消息 App。
21. 在你的系统上运行 Linux。当我第一次连接到我父亲的计算机系统时,我很少回家,他的系统被感染病毒后我回去在他的系统上安装了 Linux,现在还一直在运行它。我相信 Linux 的设计方式让它成为一个更安全的系统,我也相信它很少被黑是因为用户群体小。有些人会认为,这些年Windows 已经有了很大的改善,但我仍然坚持我所知道的。
22. 只有安全响应小组才能监视分发的安全性。企业软件很重要。
23. 运行企业级内核。在容器中,单点故障是内核。 如果要保持安全,请使用企业级内核,它有最新的安全修复程序,不会出现问题。提醒一下,虽然最新的内核带有最新的安全修复程序,但它也带来了很多新代码可能出现的漏洞。
24. 大多数黑客都是都是利用社交进行攻击,例如,电子邮件链接,网络浏览器攻击和电话。防止这类攻击的方法只能是接受教育和持有怀疑的态度。没有人从尼日利亚给你钱; IRS 不会打你的家庭电话要钱;如果你收到来自银行的电子邮件指向某个网站的链接,请不要使用该链接,直接在 Web 浏览器上键入地址。
25. 让你的系统始终保持最新的安全修复程序。现在还有数不清的过时且具有已知安全漏洞的系统。脚本小子(script kiddie)往往就是利用这一点来进行攻击。
26. 连接到网络上的服务时始终使用HTTPS。Chrome 和 Firefox 现在有强制执行此操作的模式。 如果一个网站还不支持安全通信,那么它可能不值得你访问。
27. 在容器中使用 seccomp 。这限制了内核的表层攻击,是单点故障。限制进程可以讨论的内容。
28. 使用 YubiKey 存储私钥。
29. 加密您系统上的数据。至少笔记本电脑要保证你的 homedir 和其他数据目录是加密的。几年前,我在伦敦乘坐地铁,我的笔记本电脑被盗了,火车车门关闭后我才发现的时候,笔记本电脑已经出了车站。幸运的是,磁盘加密了。
30. 让您的所有网站用上 Let's Encrypt 。没有理由不再运行HTTPS了。
31. 不要在不同的 Web 服务器上使用相同的密码。这很容易入坑,不过像 Let's Encrypt 这样的帮助工具很多,如果使用 SSH 密钥登录系统就更好了。
32. 使用双因子验证(2FA)。你几乎可以不用密码了。使用 YubiKeys 等能让 2FA 变得容易。所有人都有手机,让一个秘密藏在脑袋里,一个生成在手机上,可比密码好多了。
33. 没有什么比网站总是要求我创建一个帐户更让人恶心了,我们怎么改变?始终为你的网站密码使用密码生成工具。我是守旧派:我使 Password Safe,剪切并粘贴到网络浏览器。我听说有人幸运地用上了 LastPass 和其他工具集成手机和 Web 服务。
34. 设置类似 FreeIPA 的这样的服务以用于身份认证。使用诸如 Kerberos 之类的工具进行身份验证和授权,使访问系统变得更加容易(并且有很酷的加密服务)。也可以使用 Active Directory ,但我对它有点偏见。
35. 当你需要一串经常使用的密码时,不要用某个单词,使用一串简单易记的语句吧。我的建议是使用一些几个单词组成,简单易写的短语。
36. 使用 USBGuard 来保护你的系统免遭恶意 USB 设备的入侵。
37. 在过去的几年,我已经开始研究容器了。现在,让我们来看看容器相关的安全保护。首先,在强制模式运行 SELinux 下启动容器。如果你的系统不支持 SELinux,将系统换成一个支持的发布版本。SELinux 是保护你的容器不被利用文件系统的方法破坏的最佳工具了。
38. 尽可能的在容器中启动你的服务。我相信这是使用OCI图片格式与Linux容器技术的未来应用。运行容器可以使用Docker, runC,OCID,RKT,Systemd-nspawn 等。虽然我经常说“containers do not contain”(纸包不住火),但是服务在容器中运行确实可以更好的包住火。
39. 在虚拟机中启动你的容器。 虚拟机相比于容器是一个隔离风险的更佳办法。而在虚拟机中运行容器则将风险万无一失的隔离开来。
40. 在不同的虚拟机上运行不同安全需求的容器化应用。在虚拟机DMZ上启动你的网络服务容器,同时在不同于DMZ的其他虚拟机上启动数据库容器。
41. 另请切记,在另外的硬件设备上运行安全要求最高的虚拟机,并且在不同的虚拟机上运行而不是容器。
42. 只读模式启动你的容器。开发阶段容器需要被写在/usr 上,不过发布产品时,容器需要被设置成只能写在 tmps,并且将各个文件册挂载在容器上。
43. 从容器上降低权限。我们通常给了我们的进程太多本不需要的权限。你可以通过降低进程权限来提高安全性能。
44.不要以root权限启动你的进程。绝大多数进程永远不需要root特权,或者他们仅仅需要绑定一个< 1024 的端口,然后退出root。我强烈建议保持应用以非root权限运行。
45. 保持你的容器更新了最新的CVE。使用一个类似 OpenShift 创建并维护你的容器镜像是一个不错的点子,因为每当安全布丁出现时,它可以自动重建容器镜像。
46. 我的一个小伙伴说过,“Docker 的一切就是从网络上以root 身份在你的host上运行随机的代码”。 请从可靠的源头获取软件。不要随便抓一个你在docker.io上找到的测试应用就安装。还记得操作系统的那些麻烦吗?
47. 以受限的容器化优化压缩host来在启动你正式环境容器,例如 Atomic Host,把所有安全防护都打开,优化后启动容器,可以使攻击被限制并保证Atomic 更新。
48. 利用类似 OpenScap 来扫描系统以发现潜在风险。不幸的是,风险层出不穷,正因为此,保持你的扫描器跟上潮流。(也一并看看为容器设计的atomic 扫描)
49. OpenScap 还有扫描安全设置的功能,例如STIGs(安全技术实现指引)。
50. 为你孩子收到的圣诞礼物设备们配置一个访客网络。我爱这些Amazon Echo,智能灯和电源开关。(Alexa,关掉圣诞灯)。不过,这些东西都基于Linxu系统并且在安全方面堪忧。
“肯定有不止 50 种防止黑客的方法”
你想要为这份清单加些什么吗?欢迎在评论里留言,以供大家学习和交流。
译者:OSC-两味真火