Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
arronliu
V2EX  ›  云计算

[安全公告] Redis Crackit 入侵事件通告

  •  1
     
  •   arronliu · Nov 11, 2015 · 8046 views
    This topic created in 3855 days ago, the information mentioned may be changed or developed.

    近日曝出大规模利用 Redis 漏洞进行入侵的事件,会给用户的 Redis 运行环境以及 Linux 主机造成安全风险,请可能被漏洞影响的用户仔细阅读本文,并做相应的处理。

    容易遭受入侵的环境

    用户自建的运行了 Redis 服务的 Linux 主机,并在公网上开放了 6379 的 Redis 端口

    入侵现象

    • Redis 可能被执行过 flushall 命令
    • Redis 内建了名为 crackit 的 key
    • Redis 的 dir 参数指向了 /root/.ssh
    • /root/.ssh/authorized_keys 被覆盖或者包含 Redis 相关的内容

    修复办法

    • 以非 root 权限启动 Redis
    • 增加 Redis 密码验证
    • 禁止公网开放 Redis 端口, 例如可以在青云防火墙上禁用 6379 Redis 的端口
    • 检查 authorized_keys 是否非法

    温馨提示:青云提供的 Redis 服务是运行在私有网络中的,并且已经考虑了安全加固措施,同时提供密钥验证的配置,不会受到该漏洞的影响,请用户放心使用。

    关于入侵事件的更多详情还可以参见:https://nosec.org/bobao/redis_crackit

    另外,有任何其他问题可以工单与我们联系。

    QingCloud 技术团队

    38 replies    2015-11-18 09:22:28 +08:00
    ququzone
        1
    ququzone  
       Nov 11, 2015   ❤️ 1
    昨天公司服务器中招了,数据全被清了,还好不是正式数据。虽然它给我的 redis 里面放了 crackit 的 key ,不过我们服务器是禁止 root 用户 ssh 登录的,所以没有造成其他影响。大家在服务器里面设置一定要加 **禁止 root 远程登录 **
    shiny
        2
    shiny  
    PRO
       Nov 11, 2015
    想起前几天一个帖子 /t/234520
    master
        3
    master  
       Nov 11, 2015
    禁止 root 远程登录固然重要
    但是为什么要让 redis 使用 root 账号启动
    wawehi
        4
    wawehi  
       Nov 11, 2015
    开放 redis 公网访问
    以 ROOT 启动
    这两大错误绝不能犯呀
    est
        5
    est  
       Nov 11, 2015
    @master 出问题的公司,一般没运维团队。 redis 多半是码农自己编译的。跑起来就谢天谢地了。
    Showfom
        6
    Showfom  
    PRO
       Nov 11, 2015
    已经做好安全措施了。
    raysmond
        7
    raysmond  
       Nov 11, 2015
    禁止了 redis 公网访问,只能 localhost 访问,为什么还不能用 root 账号启动?
    raysmond
        8
    raysmond  
       Nov 11, 2015
    @wawehi 禁止了 redis 公网访问,只能 localhost 访问,为什么还不能用 root 账号启动?
    typcn
        9
    typcn  
       Nov 11, 2015
    这是何样的安全头脑。。。。

    允许公网访问 + 不设访问密码 + 以 Root 权限启动公网可访问没密码的程序
    lukew
        10
    lukew  
       Nov 11, 2015
    @est 对的。。
    aofall
        11
    aofall  
       Nov 11, 2015 via iPhone
    @master 自编译的就是以 root 启动的
    youxiachai
        12
    youxiachai  
       Nov 11, 2015
    这个算是 redis 漏洞????????????

    redis 的文档我记得,明显写了不要用 root 启动,也不要暴露外网....
    kn007
        13
    kn007  
       Nov 11, 2015
    自用的 VPS ,
    1.一直以非 root 权限启动 Redis
    2.从未开放公网 Redis 端口
    est
        14
    est  
       Nov 11, 2015
    @raysmond 这个思路,出问题是迟早的。

    安全的攻防对抗,防守是只要漏一点,全盘皆输。攻击是只要突破一点,全盘皆赢。安全问题不是你只跑 localhost 就能高枕无忧的事。

    Defenders think in lists. Attackers think in graphs.
    iugo
        15
    iugo  
       Nov 11, 2015
    @est 看来开发者学一些运维常识是必要的.
    xshell
        16
    xshell  
       Nov 11, 2015
    没做安全设置啊··~~
    facert
        17
    facert  
       Nov 11, 2015
    1. 增加 Redis 密码验证基本能被暴力破解,因为 redis 太快了,每秒钟 12k 的速度。。。
    2. 禁止 root 用户登录,也可以猜测用户名,风险还是有的。
    3. 可以修改 redis 的默认端口 6379 ,配置 rename-command CONFIG "RENAME_CONFIG", 这样即使存在未授权访问, 也能够给攻击者使用 config 指令加大难度
    4. 如果 redis 只在本机需要访问,还是设置 bind 127.0.0.1 吧
    iyangyuan
        18
    iyangyuan  
       Nov 11, 2015 via iPhone
    端口都不改,被黑怪谁
    raysmond
        19
    raysmond  
       Nov 11, 2015
    @est 我就想知道怎么做到的
    Cloudee
        20
    Cloudee  
       Nov 11, 2015
    @raysmond 我感觉就算 bind 127.0.0.1 ,也有本地提权的风险,比如本地的某个 nobody 用户上跑的危险比较大的程序被黑了,通过 127.0.0.1 连上 redis 相当于可以以 root 身份任意写文件了
    mingyi0
        21
    mingyi0  
       Nov 11, 2015
    redis 还是尽量放在内网较好
    wy315700
        22
    wy315700  
       Nov 11, 2015
    不给服务器直接分配外网 IP 是有道理的
    msg7086
        23
    msg7086  
       Nov 11, 2015
    #8 @raysmond 永远不要用 ROOT 账号启动无降权的网络服务。
    nginx / php 这些,都是起了子进程降权跑的,主进程用 ROOT 并无所谓。
    redis 这种单进程系统,开 ROOT 跑就跟你直接把 ROOT 账号白送别人是一样的。
    如 20 楼所说,任何一个无权用户都可以直接连上你的 redis 把自己提权成 root 。
    branchzero
        24
    branchzero  
       Nov 12, 2015
    还好改了端口,幸运躲过一劫,然后赶紧去限制了高危命令并且加了密码,绑定内网 IP 监听。
    lshero
        25
    lshero  
       Nov 12, 2015
    阿里云 腾讯云 XX 云 估计都是有人批量扫段的吧
    mywaiting
        26
    mywaiting  
       Nov 12, 2015
    感觉这个安全公告都有点神经病了~

    1 、竟然有人连都个 iptables 不设置就跑在公网上?
    2 、竟然有人用 root 来启动关系到网络连接的进程?
    3 、竟然有人只想改个端口、 rename 个 config 命令的名字就想逃过这个安全漏洞?
    4 、竟然有人想随便设置个密码就打发 redis 了,你们真心不懂 Redis 的爆破速度有多快吗?
    5 、竟然有人把 .ssh 目录设置成除 root 外可读可写的?

    嗯嗯,安全这事情,看来还任重而道远
    msg7086
        27
    msg7086  
       Nov 12, 2015
    @mywaiting iptables 我就不开,但是对外端口我也不会乱开,所以并没什么影响。
    WildCat
        28
    WildCat  
       Nov 12, 2015 via iPhone
    扔 docker 里的是不是不用太担心?
    wawehi
        29
    wawehi  
       Nov 12, 2015
    @raysmond 绑定局域网地址也是可以的
    youxiachai
        30
    youxiachai  
       Nov 12, 2015
    @mywaiting 有个调查报告表示..全球还真不少..其中中国占了不少..
    jimrok
        31
    jimrok  
       Nov 12, 2015
    大部分数据都不是太重要,防护力度肯定不够。
    raysmond
        32
    raysmond  
       Nov 12, 2015
    @mywaiting 这黑的
    raysmond
        33
    raysmond  
       Nov 12, 2015
    @msg7086 了解了,我感觉我之前的 redis 出了一些奇怪的问题,感觉是 flushall 了一样,但是我觉得我的程序应该是没有出错的。
    newghost
        34
    newghost  
       Nov 12, 2015
    这个漏洞应该没想象的那么严重,

    装了个数据库不设密码? 我怀疑安装的人根本不会用 redis 。

    默认 apt-get 安装 redis 的用户和组 不应该是 redis:redis 吗?

    要造成这个漏洞的执行条件其实还挺不容易的。

    redis 对这个所谓的漏洞应该不予理会,没有必要把 redis 弄的太复杂

    不过可以更改默认配置 直接 bind 127.0.0.1 限制成本机访问
    BOYPT
        35
    BOYPT  
       Nov 12, 2015
    这压根不算漏洞,服务器管理人员的知识问题。
    ihciah
        36
    ihciah  
       Nov 12, 2015
    @raysmond “在 V2EX 看到 os 助教是什么体验”...
    raysmond
        37
    raysmond  
       Nov 13, 2015
    @ihciah 13 届的吗? V2EX 是一个神奇的站
    ihciah
        38
    ihciah  
       Nov 18, 2015
    @raysmond 13 级 233333
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1140 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 88ms · UTC 18:07 · PVG 02:07 · LAX 11:07 · JFK 14:07
    ♥ Do have faith in what you're doing.