黑客别动我! 50 个系统防范新方法

新年新气象,小数为大家带来了系统防范安全手册最新版!每一条都是很有用的小知识,记下来实践起来,祝大家新的一年系统都平平安安哒!

1.备份你的数据。如果数据被勒索软件绑架了,有备份就不慌了。

2.在公共场所充电时使用syncstop,或者携带自己的备用电源。

3.利用好审计系统(auditing subsystem)。有许多很酷的工具可以帮助监控系统。如果被攻击,审计系统会告诉你发生了什么,以及攻击的类型。

4.谈及日志,把日志转到一个集中的服务器上是一个很好的办法。因为黑客攻击系统时,首先会攻击日志系统来掩藏自己的痕迹。一个好的侵入检测系统来监控日志也同样有用。

5.在enforcing mode运行SELinux(见stopdisablingselinux.com)。SELinux阻止零日缺陷(zero day vulnerabilities)的升级扩大。当Shell Shock来临,SELinux是唯一的防御。

6.在任何可能的时候,在SELinux沙盒(Sandbox )里运行应用程序——在容器时髦之前,它就是一个容器。同时留意Flatpack,因为它可能很快会升级沙盒能力。

7.不要安装或者使用Flash。Firefox已经不再支持它,并且大多数网络服务器都在移除它。

8.使用confined SELinux users来控制系统中用户的行为。如果你使用一个共享登录系统,把用户设为guest_t。

9.多利用systemd工具来帮助防御系统。大多数系统攻击都会通过网络上的服务监听来进行。Systemd提供了很好的方式来加锁服务。例如,使用PrivateTmp=yes。

10.InaccessibleDirectories=/home是一个systemd unit flag,使用mount namespace从服务查看那里清除 /home(或其他目录),让被攻击的服务攻击主体变得更加困难。

11.ReadOnlyDirectories=/var是另一个使用mount namespace的systemd unit flag,让目录内容变成只读模式。

12.去掉一个服务的权限(CapabilityBoundingSet=CAP_CHOWN CAP_KILL)。在内核,特权进程(priviliged processes)被分解为一系列不同的权限。大多数服务并不需要许多,systemd提供了一个简单的开关让服务去掉它。

13.如果你的服务不需使用网络,可以使用PrivateNetwork=yes把它关掉。通常一个黑客并不是想攻击你的机器——他只是想把它作为一个攻击服务器攻击其他的机器。如果服务找不到网络,它就无法攻击。

14.限制设备对服务可用。Systemd提供了DeviceAllow指令,让设备对服务可用。DeviceAllow=/dev/null rw会限制接入 /dev/null并且只有这个设备节点,不允许接入其他设备节点。这个功能在设备的cgroup控制器上实现。

15.马上要来的一个systemd系统新功能——ProtectSystem Strict,当一个服务运行时,可以把所有名称空间打开,完全锁定环境。

16.不要使用没有SELinux(SEAndroid)enforcing mode的手机。幸运的是,我听说现在超过90%的Android手机上运行着SEAndroid enforcing mode。现在我们只需要让那些用苹果的朋友们也使用SELinux。

17.只安装来自受信任来源的软件。不要安装在互联网上找到的欺诈性软件。这条适用于手机、计算机系统、虚拟机、容器等等。

18.笔者不在手机上操作网上银行,而是只在有Linux的计算机上操作。如果一个黑客偷了我的信用卡,我会失去50美元;如果他获得我的银行账户,我会失去更多——我想我可能老了(幽默)。

19.设置成让信用卡公司在每次信用卡付账的时候都发个手机短信。这样的话如果账户被盗,你将知道的很快。

20.当需要安全通信时,使用信号安全的消息传递程序。

21.在系统上运行Linux。因其设计的方式,Linux一般来说是一个更安全的系统。因为较小的用户基础,台式机很少被黑客攻击。有些人认为Windows多年来安全性大大提高,但笔者仍然坚持自己的看法。

22.只运行有安全响应团队的发行版软件。企业软件很重要。

23.运行一个企业级的内核。在容器中,单点故障在于内核。如果想保持它的安全,用一个企业级的内核,这意味着最新的安全补丁,但那不是全部。最新的内核提供了最新的安全补丁,但是同时也带来了大量可能有漏洞的新代码。

24.大多数黑客攻击在社交过程中发生——举个例子,电子邮件链接,浏览器攻击和电话。最好的选择是接受教训和怀疑。没有人从尼日利亚给你汇款,国税局不会询问你的房供是多少钱。如果你得到一个从银行发来的电子邮件链接,不要点击,直接在浏览器上输入地址。

25.保持让系统及时更新最新的安全补丁。有很多人的系统是过时的,已知的安全漏洞十分可怕,让黑客有机可乘。

26.在网上连接服务时总是使用HTTPS。现在Chrome和Firefox都拥有这种模式来执行。如果一个网站在2016年仍然不支持安全通信,可能并不值得访问。

27.在容器里使用seccomp。这限制了对内核表面的攻击,即单点故障,限制了进程中可以交互的部分。

28.使用YubiKey存储私钥。

29.在系统里加密数据。至少在笔记本电脑,保持homedir和其他数据目录加密。几年前笔者在伦敦乘坐地铁,笔记本电脑被偷了,幸运的是磁盘是加密的。

30.对所有网页使用 Let'sEncrypt。没有理由不用HTTPS。

31.不要在不同的web服务器上使用相同的密码。这样很容易落入陷阱。Let’s Encrypt等工具大有帮助。如果使用ssh密钥登录系统那就更好了。

32.使用双重身份验证(2FA)。密码已经变得几乎毫无用处。使用YubiKeys等来实现这种双重验证。我们都有手机。有一个密码在你的脑袋里,另一个在手机里生成,比单纯的密码好很多。

33.没有什么比网站总是要求我建立一个帐户更糟了。最好使用密码生成工具作为网站的密码——Password Safe,剪切,粘贴到web浏览器。也听说有人巧妙地用LastPass和其他工具整合手机和web服务。

34.建立一个服务例如FreeIPA用于身份识别。使用Kerberos之类的工具来身份验证和授权跟踪员工的足迹,他们访问系统会更加容易(而且它还拥有一个非常酷的加密服务)。一般来说,使用Active Directory也挺好的,但我对它有点偏见。

35.当必须使用一个密码时,可以输入一个容易记住的句子,而不是一个字。

36.使用USBGuard保护系统免受流氓USB设备的入侵。

37.过去的几年里,笔者一直从事容器相关工作,所以现在深入讨论一下容器的安全。首先在系统enforcing mode下运行SELinux。如果系统不支持SELinux,换一个支持它的分布式系统。为了防止使用文件系统时容器被打破,SELinux是最好的工具。

38.尽可能在一个容器运行您的服务。使用OCI Image Format 和Linux容器技术的应用是未来趋势。用Docker、runC、OCID RKT Systemd-nspawn等来起容器。

39.在VM运行容器。虚拟机提供比容器更好的隔离。例如在虚拟机上跑容器可以提供可伸缩性和相互隔离。

40.根据不同的安全需求在不同的虚拟机上跑容器化应用。在DMZ中运行虚拟机上的web服务容器,但是在DMZ以外的虚拟机上运行数据库容器。

41.记住最安全的方式是容器跑在不同的虚拟机上,虚拟机运行在不同的物理机上(又名,深度防御)。

42.以只读模式运行容器。在开发环境容器需要能够写入/ usr,但在生产环境容器应该只能写入tmpfs,以及把volumes配置到容器里。

43.减少容器的权限。在容器内外运行的进程比它们所需要的权限要多得多。通过减少权限可以使进程更加安全。

44.不要在作为root的容器运行进程。大多数服务不需要root特权,或者它们需要绑定到小于1024的端口,然后切换到一个非root用户。建议一直运行non-root程序。

45.保持容器更新到最新的CVEs修复。使用OpenShift一类的系统来建立和维护容器镜像,当新的安全修复出现时,它会自动重建容器镜像。

46.我的一个助理说,“Docker就是作为root在主机上运行网上来的随机代码。“在信任的资源处下载软件。不要在Docker.io获取你发现的Apache应用程序。

47.在一个受限的容器化优化主机上跑生产环境的容器,如Atomic Host,打开所有安全开关,为运行的容器进行优化,进行atomic更新,只会有有限的表面攻击。

48.用OpenScap之类的工具来扫描系统漏洞。遗憾的是,新漏洞总是会出现,所以必须保持扫描工具持续更新。(比如用atomicscan扫描容器)

49.OpenScap也有扫描安全配置的功能,如STIGs (安全技术实现指南)。

50.建立一个特别来宾网络,方便家人接收联网设备。笔者深爱自己的亚马逊Echo和自动灯、电源开关,但它们每一个都是有安全问题的Linux操作系统。

作者:Daniel J Walsh
文章来源:https://opensource.com/articl...

你可能感兴趣的:(数人云,系统安全,容器)