V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dataman
V2EX  ›  信息安全

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

  •  
  •   dataman · 2017-01-11 20:00:27 +08:00 · 3682 次点击
    这是一个创建于 2907 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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/article/16/12/yearbook-50-ways-avoid-getting-hacked#comments

    5 条回复    2017-01-12 08:26:40 +08:00
    des
        1
    des  
       2017-01-11 21:04:39 +08:00
    新方法???
    uuair
        2
    uuair  
       2017-01-11 23:07:06 +08:00
    好长,但我没看懂啊,从第二个开始-_-
    xfspace
        3
    xfspace  
       2017-01-11 23:13:47 +08:00 via Android
    为什么使用 Let's
    我用扣毛豆不行么。
    wjm2038
        4
    wjm2038  
       2017-01-11 23:19:25 +08:00 via Android
    说的不错但是这翻译有点'耿直'啊
    luyan
        5
    luyan  
       2017-01-12 08:26:40 +08:00 via iPhone
    这么长, YubiKey 能存储多少密钥?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2806 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:23 · PVG 11:23 · LAX 19:23 · JFK 22:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.