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

公共云运维安全常见四大难题及解决方案

  •  
  •   helloworld01 · 2016-02-16 16:27:22 +08:00 · 4597 次点击
    这是一个创建于 3198 天前的主题,其中的信息可能已经有所发展或是发生改变。

    乘长假期间春光明媚,得空回顾了一下十年工作。
    深以为,运维安全绝对是企业安全保障的基石。
    看到这儿,有些程序猿不禁要问,哥们,你是不是写错了,应该是安全运维吧!
    非也!
    事实上,安全运维和运维安全是两个概念。
    我的理解:安全运维是工程师对各种安全设备和软件进行运维保障系统安全,而运维安全相比之下是涵盖了整个云计算系统和安全有关的方方面面。本文主要探讨公共云环境下运维安全常见的难题及解决方案。

    目前使用公共云的用户可以分为两类:
    一是一开始业务就部署在公共云上面,主要以新兴互联网公司为主。
    二是已经有自建的 IT 环境,需要向公共云上迁移。伴随着用户 IT 环境从传统自建 IDC 向公共云环境的转变,运维工作也从内网环境迁移到公网中,这对用户来说是一个非常大的改变。
    本文主要讨论传统 IT 环境向公共云迁移面临的运维安全问题,要知道,传统 IT 环境下所有 IT 基础设施和数据都是用户自己掌控。从心理上来讲用户感觉会更安全,对公网的暴露面也更小。一旦用户将业务和数据都迁移到公共云事实上,公共云在基础架构安全性方面远超一般用户自建的 IDC ,主要体现在以下方面:
    1. 因为公共云 IDC 机房建设规格非常高,所以公共云的 IDC 机房在电力、空调等方面可用性更有保障;
    2. 公共云有云有比较好的网络资源,所以公共云的网络质量更好;
    3. 公共云的服务器都是批量采购和检测,并且一般都有可靠的存储系统,公共云的硬件可靠性也更有保障;
    4. 公共云系统、安全方面都有非常专业的团队,都是业界顶级水平,使用公共云在系统、安全方面的风险更小;
    但是,笔者从事运维工作十年,最近在公共云运维实践过程中也发现:计算环境从本地到云端自身安全性是提高了,但云上的运维工作却面临着一些新的安全风险和挑战。
    因为公共云的运维管理工作必须通过互联网完成,和传统 IT 环境运维有很大不同,总结起来风险主要来自以下四个方面:

    1.  运维流量被劫持:公共云场景下运维最大的变化就是运维通道不在内网,而是完全通过互联网直接访问公共云上的各种运维管理接口。很容易被嗅探或中间人劫持攻击,造成运维管理账号和凭证泄露。
    2.  运维管理接口暴露面增大:原来黑客需要入侵到内网才能暴力破解运维管理接口的密码,而现在公共云上的用户一般都是将 SSH 、 RDP 或其它应用系统的管理接口直接暴露在互联网。只能依靠认证这一道防线来保证安全,黑客仅需破解密码或绕过认证机制就能直接获取管理员权限。
    3.  账号及权限管理困难:多人共享系统账号密码,都使用超级管理员权限,存在账号信息泄露和越权操作风险。
    4.      操作记录缺失:公共云中的资源可以通过管理控制台、 API 、操作系统、应用系统多个层面进行操作。如果没有操作记录,一旦出现被入侵或内部越权滥用的情况将无法追查损失和定位入侵者。
    

    这些风险都是公共云场景下进行运维工作的常见风险。
    阿里云在创立第一天就认定安全是头等重要的事情。针对这些问题,阿里云提供了多种安全防护措施供用户使用。用户可以利用阿里云平台产品自身的安全机制、云盾、云市场中的第三方安全产品配合,来缓解或消除这些风险。
    加强运维安全工作可以采取的具体措施如下:
    1. 使用 VPC 网络帮助用户基于阿里云构建出一个隔离的网络环境。用户可以完全掌控自己的虚拟网络,包括选择自有 IP 地址范围、划分网段、配置路由表和网关等。
    从运维安全的角度出发使用 VPC 网络还需要再对 VPC 网络内部网段进行划分,一般建议分为三个网段:互联网应用组、内网应用组、安全管理组。

    三个网段之间采用安全组隔离,并设置相应的访问控制策略,限制所有实例 SSH 、 RDP 等运维管理端口只允许安全管理组访问。建议策略如下:
    互联网应用组建议策略

    安全管理组建议策略

    内网应用组建议策略

    2. 搭建从运维工作地到阿里云的加密运维通道,用户可以在阿里云安全市场购买专业的 VPN 设备来搭建加密运维通道,保证运维流量不被劫持。
    运维用的 VPN 一般建议采用 L2TP/IPSEC VPN ,可以采用 Site To Site 或拨号两种模式。如果是有大量运维人员在固定办公地点办公可以使用 Site to Site 模式,建立一条从运维办公地到公共云的长连接加密通道,公共云上的安全管理组网段就相当于本地运维网络的延伸。如果运维人员较少并且经常移动办公,可以采用拨号 VPN 的模式,需要运维时再拨号连入安全管理组网段。当然也可以同时采用这两种模式,兼顾固定地点和移动办公运维。
    最后再建议如果使用拨号模式 VPN 时,一定要启用双因素认证,配合数字证书或动态口令令牌使用,提高 VPN 接入安全性。
    3. 使用阿里云 RAM ,将阿里云主账号与日常运维账号分离,限定运维账号管理权限和范围。这样即使运维账号信息泄露也不会危及整个云基础设施安全。 RAM 最佳实践如下:
    为根账户和 RAM 用户启用 MFA
    建议您为根账户绑定 MFA ,每次使用根账户时都强制使用多因素认证。如果您创建了 RAM 用户,并且给用户授予了高风险操作权限(比如,停止虚拟机,删除存储桶),那么建议您给 RAM 用户绑定 MFA 。详细了解多因素认证请参考管理 MFA 设备
    使用群组给 RAM 用户分配权限
    一般情况下,您不必对 RAM 用户直接绑定授权策略,更方便的做法是创建与人员工作职责相关的群组(如 admins 、 developers 、 accounting 等),为每个群组绑定合适的授权策略,然后把用户加入这些群组。群组内的所有用户共享相同的权限。这样,如果您需要修改群组内所有人的权限,只需在一处修改即可。当您的组织人员发生调动时,您只需更改用户所属的群组即可。
    将用户管理、权限管理与资源管理分离
    一个好的分权体系应该支持权力制衡,尽可能地降低安全风险。在使用 RAM 时,您应该考虑创建不同的 RAM 用户,其职责分别是 RAM 用户管理、 RAM 权限权限、以及各产品的资源操作管理。
    为用户登录配置强密码策略
    如果您允许用户更改登录密码,那么应该要求他们创建强密码并且定期轮换。您可以通过 RAM 控制台为 RAM 用户创建密码策略,如最短长度、是否需要非字母字符、必须进行轮换的频率等等。
    定期轮转用户登录密码和访问密钥
    建议您或 RAM 用户要定期轮换登录密码或访问密钥。在您不知情的时候,如果出现凭证泄露,那么凭证的使用期限也是受限制的。您可以通过设置密码策略来强制 RAM 用户轮换登录密码或访问密钥的周期。
    撤销用户不再需要的权限
    当一个用户由于工作职责变更而不再使用权限时,您应该及时将该用户的权限进行撤销。这样,如果在不知情的时候,当用户的访问凭证泄露时对您带来的安全风险最小。
    将控制台用户与 API 用户分离
    不建议给一个 RAM 用户同时创建用于控制台操作的登录密码和用于 API 操作的访问密钥。通常只给员工创建登录密码,给系统或应用程序只创建访问密钥。
    使用策略限制条件来增强安全性
    建议您给用户授权时设置策略限制条件,这样可以增强安全性。比如,授权用户 Alice 可以关停 ECS 实例,限制条件是 Alice 必须在指定时间、并且您公司网络中执行该操作。
    不要为根账户创建访问密钥
    由于根账户对名下资源有完全控制权限,所以为了避免因访问密钥泄露所带来的灾难性损失,我们不建议创建根账号访问密钥并使用该密钥进行日常工作。创建根账号的访问密钥需要通过登录阿里云控制台才能完成,该操作需要多因素认证,并且还支持严格的风控检查。只要根账户不主动创建访问密钥,账号名下的资产安全风险可控。
    遵循最小授权原则
    最小授权原则是安全设计的基本原则。当您需要给用户授权时,请授予刚好满足他工作所需的权限,而不要过渡授权。比如,在您的组织中,如果 Developers 组员(或者一个应用系统)的工作职责只需要读取 OSS 存储桶里的数据,那么就只给这个组(或应用系统)授予 OSS 资源的只读权限,而不要授权 OSS 资源的所有权限,更不要授予对所有产品资源的访问权限。
    4. Linux 使用密钥登录,不要使用账号密码登录,一劳永逸的解决账号暴力破解问题。具体配置方法如下:
    Ubuntu 14.04.1 为例,设置步骤如下:
    一. 生成密钥的公钥和私钥
    # ssh-keygen -t rsa
    Generating public/private rsa key pair.
 Enter file in which to save the key (/root/.ssh/id_rsa): 
 Created directory '/root/.ssh'.
 Enter passphrase (empty for no passphrase): #输入密码
 Enter same passphrase again: #输入密码
 Your identification has been saved in /root/.ssh/id_rsa.
 Your public key has been saved in /root/.ssh/id_rsa.pub.
 The key fingerprint is:
 1c:37:a8:a3:65:a2:4a:89:ab:46:30:ad:54:d1:40:eb root@iZ28vo50eu5Z
    二. 将生成的私钥( id_rsa )下载到本地的 windows 机器上,并把公钥导入到.ssh/authorized_keys 文件中去

    cd /root/.ssh/

    #cat id_rsa.pub > authorized_keys
    

    三. 设置 sshd 服务器服务,打开以下设置:

    RSAAuthentication yes 
            PubkeyAuthentication yes
            AuthorizedKeysFile      /root/.ssh/authorized_keys 
             修改以下设置: 
            ChallengeResponseAuthentication no 
            PasswordAuthentication no 
            UsePAM no
    

    四. 重启 ssh 服务
    #service ssh restart
    五. 导入私钥到远程工具中,比如 xshell 。
    5. 可以修改 ECS Windows 服务器的默认远程桌面 3389 端口,以降低针对远程桌面的恶意扫描和攻击。具体配置方法如下:
    一.使用工具进行自动修改
    您可以在云市场中购买和使用 [ 3389 远程端口修改工具] 进行 3389 默认端口的自动修改。
    二.手工修改:
    1) [开始] ---- [运行] 中输入"regedit"打开注册表编辑器;
    2)依次展开"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp"注册表项;
    3)其下的"PortNumber ”键值所对应的端口号就是远程桌面端口,将其修改为用户需要的端口即可;

    4)再依次展开注册表中"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp"注册表项;
    5)同样按照上面的方法将"PortNumber"键值进行更改保存。
    注意:修改后需要检查防火墙、 tcp/ip 筛选中是否有安全规则限制,并需要重启服务器后生效。
    1)Windows 2003 开启端口方法:
    远程登陆服务器后,进入控制面板双击“ windows 防火墙”,打开防火墙后,点击“例外”选项卡可以看到服务器上已添加的开放端口,点击“添加端口”,在弹出的框中输入您需要添加的端口号,确定完成。再进入控制面板点击“网络连接”,在外网网卡上点击鼠标右键“属性”,并双击“ Internet 协议 ( TCP/IP )”,点击“高级”,在弹出的框中点击“选项”,点击“属性”,在 TCP/IP 筛选的弹出框中,添加 TCP 协议的端口,确定后重启服务器,端口就开通了。
    2)Windows 2008 开启端口方法:
    远程登陆服务器后,进入控制面板--wiindows 防火墙,打开 windows 防火墙,选择“高级设置”,左上方选择“入站规则”,在右上方选择“新建规则”,进入规则向导页面选择“端口”,下一步协议选择“ TCP ”,选择特定本地端口填写您要开启的端口号,下一步选择“允许连接”,下一步设置允许应用到的规则域区域,建议全部选择,下一步设置端口名称,完成即可。
    6. 安装云盾安骑士客户端,安骑士不仅能拦截密码破解和发现异地登录问题,还能提高主机安全防护能力,推荐用户都安装。
    7. 使用集中的特权及账号管理系统统一管理运维账号和权限,比如阿里云安全市场中的专业堡垒机,解决系统账号复用、运维权限混乱、运维过程不透明等运维难题,并将系统操作日志记录下来以备审计。
    8. 开启阿里云 ActionTrail ,记录用户的云账户资源操作,提供操作记录查询,并可以将记录文件保存到用户指定的 OSS 存储空间。利用 ActionTrail 保存的所有操作记录,可以实现云端用户权限安全分析、资源变更追踪以及合规性审计。

    打开 ActionTrail 控制台,进入“历史事件查询”,将可以看到最近 7 天的操作记录。

    总体架构示意图
    安全防护是一个系统性的工作,上面这些建议仅是云端运维安全最基本的一些要求。如果需要更深入的解决方案可以联系阿里云安全解决方案团队。

    作者:阿里云高级安全专家 邬怡

    11 条回复    2016-02-22 16:22:43 +08:00
    ringzero
        1
    ringzero  
       2016-02-16 16:43:44 +08:00
    这种文章适合投稿到: http://drops.wooyun.org/
    t333st
        2
    t333st  
       2016-02-16 16:49:00 +08:00
    @ringzero 捕捉野生猪猪侠一只
    9hills
        3
    9hills  
       2016-02-16 17:00:18 +08:00
    用 markdown 排个版吧。。
    janxin
        4
    janxin  
       2016-02-16 19:10:26 +08:00
    我还在想是不是阿里云广告,拉到最后就...
    VmuTargh
        5
    VmuTargh  
       2016-02-16 19:17:20 +08:00 via Android
    yexm0
        6
    yexm0  
       2016-02-16 19:38:40 +08:00 via Android
    如何让客户去相信不会再发生一次云盾删系统文件这事呢?
    tntsec
        7
    tntsec  
       2016-02-16 20:00:26 +08:00
    @yexm0 不管你信不信,反正我不信
    maskerTUI
        8
    maskerTUI  
       2016-02-16 20:04:52 +08:00 via Android
    6. 安装云盾安骑士客户端,安骑士不仅能拦截密码破解和发现异地登录问题,还能提高主机安全防护能力,推荐用户都安装。
    呵呵……
    mytsing520
        9
    mytsing520  
       2016-02-16 22:56:00 +08:00
    道理是有,但是看到这是一篇明显的软文性质的文章,我就不爽了,即便我是阿里云的客户。。这样的做法只能加速我下云的过程。。
    jayong
        10
    jayong  
       2016-02-17 16:10:55 +08:00
    看着 Devops 进来的 结果是软文。。。
    snhfly
        11
    snhfly  
       2016-02-22 16:22:43 +08:00
    软文终结~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1532 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:18 · PVG 01:18 · LAX 09:18 · JFK 12:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.