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

为什么 redis 会设置 AUTH ?

  •  
  •   zilan · 2018-01-26 17:11:52 +08:00 · 7380 次点击
    这是一个创建于 2253 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近正在学习 redis,发现 redis 需要设置一个密码 auth。就按照要求的做了。 但是回头一想,为什么要设置这样一个鉴权过程呢? 有没有人研究过是出于什么样的安全考虑。

    第 1 条附言  ·  2018-01-27 15:31:51 +08:00
    多谢,想表述的其实是觉得这个 auth 有点鸡肋,如果是受信任环境就不需要,但如果是一个不受信任环境,端口,ip,甚至 auth 的连接都可能被抓到,相比起来只能算是最基础的防御了。所以觉得作为出厂的安全策略有点不太合适的样子。
    35 条回复    2018-01-29 22:13:43 +08:00
    imherer
        1
    imherer  
       2018-01-26 17:14:34 +08:00
    这不就和服务器登录需要输入密码一个道理么

    虽然 redis 可以 bind 访问 ip,但你也不敢保证你 bing 的 ip 百分百安全吧
    hcymk2
        2
    hcymk2  
       2018-01-26 17:16:25 +08:00
    你家里面自己私人的抽屉要上锁么?
    bookding
        3
    bookding  
       2018-01-26 17:16:52 +08:00
    你不需要也可以不设啊……
    k9982874
        4
    k9982874  
       2018-01-26 17:17:33 +08:00   ❤️ 1
    因为有些人会把 redis 暴露到公网上,然后就被爆菊花了。
    zsdroid
        5
    zsdroid  
       2018-01-26 17:25:32 +08:00
    为什么你家要安装大门呢? 有没有研究过是出于什么样的安全考虑?
    shiroming
        6
    shiroming  
       2018-01-26 17:41:25 +08:00 via Android
    如果服务不只是本机的话,就需要设置 auth 了,但是这样也不能保证安全。可惜 redis 官方一直没有 ssl,需要用三方工具
    Aliencn
        7
    Aliencn  
       2018-01-26 17:45:36 +08:00   ❤️ 1
    想起前两年爆出一大堆无密码允许公网访问的 redis。
    其实如果注重连接速度的话,可以不用密码,防火墙策略设置严格一点。
    gleymonkey
        8
    gleymonkey  
       2018-01-26 17:47:37 +08:00
    不设置就被挖矿了。。我就是。
    nutting
        9
    nutting  
       2018-01-26 17:49:52 +08:00 via Android
    楼主意思里面数据无所谓?意思 redis 被攻破不影响其它?
    fcten
        10
    fcten  
       2018-01-26 17:57:33 +08:00
    又不是必须的。访问环境不受信任就设,可信就不设。这不是和任何设密码的环境都一样吗……
    changnet
        11
    changnet  
       2018-01-26 18:08:16 +08:00 via Android
    参考 mongodb 当年被骂得狗血淋头
    laoyur
        12
    laoyur  
       2018-01-26 18:09:18 +08:00
    不理解楼主的逻辑,你都说这个 AUTH 是密码了,然后还问「是出于什么样的安全考虑」
    AUTH 本身提供的安全保证是否足够安全,这是另外一个话题
    kslr
        13
    kslr  
       2018-01-26 19:25:35 +08:00
    如果在公网,并且没有使用防火墙,那么任何人都可以连接。
    est
        14
    est  
       2018-01-26 19:29:57 +08:00 via Android
    比如你开了个爬虫服务,输入网址,得到结果

    然后别人提交了一个向本机 redis flushdb 的指令。
    hantsy
        15
    hantsy  
       2018-01-26 21:32:19 +08:00   ❤️ 1
    生产环境不管暴露不暴露到公网(当然数据库一般不应该暴露在公网的),都要设置密码(而且要定期或不定期的修改,最好是 DevOps 人员用一些密码管理工具来解决,比如 Vault,https://www.vaultproject.io/ )。。。开发,内部测试环境倒是可以偷懒一下。

    Mongo 默认也没设置密码,同样应该如此。

    MySQL 在公网要设置单个应用程序(你的项目)的用户 /密码进行连接(且仅允许连接你的应用的数据库,其他数据库禁止访问),root 要限制 IP 访问(针对公司固定 IP 可以访问或者直接禁用任何 IP,仅仅允许 SSH 登录上去用 Localhost 连接),禁止外部远程连接。

    这应该算常识吧。
    mritd
        16
    mritd  
       2018-01-26 23:48:48 +08:00   ❤️ 4
    那个楼上大部分是喷的,我来具体说下常见 redis 被黑套路:

    1、redis 以 root 权限运行
    2、公网暴露端口不加认证
    3、任意用户连接进入
    4、黑阔执行 config 将自己的公钥持久化到 ~/.ssh/authorized_keys
    5、黑阔直接 ssh 免密码使用私钥登录目标主机
    6、rm -rf /
    7、用户发现,嚎啕大哭
    8、其他用户继续公网暴露不加权限......
    mingyun
        17
    mingyun  
       2018-01-26 23:49:31 +08:00
    @hantsy
    mritd
        18
    mritd  
       2018-01-26 23:50:30 +08:00
    最后,兄台可口将你的服务器地址告诉我;我现在急缺一台 linux 测试机(别人的那种) 😂
    shiyouming91
        19
    shiyouming91  
       2018-01-27 08:04:09 +08:00 via iPhone
    因为就算只打开 localhost 的端口,你本机任何用户下的进程仍然能访问这个端口。设想你有一个 uid 是 nobody 的进程被黑了,黑客本来是没有办法用 nobody 干什么坏事的,但是你有一个不配置 auth 的 redis 的话黑客就可以连接你的 redis 干坏事了。
    yongjing
        20
    yongjing  
       2018-01-27 08:59:24 +08:00
    矿机好友~
    lianxiaoyi
        21
    lianxiaoyi  
       2018-01-27 09:31:57 +08:00
    你不用可以不设置啊。。。。而且 redis 开箱就是不带密码的啊。。。。。。参考当年 mongodb 事件。。。。而且最近比特币更贵了。。。。。
    Paddington
        22
    Paddington  
       2018-01-27 09:59:35 +08:00
    @lianxiaoyi 不用 mongodb 事件,redis 就出过。。
    vus520
        23
    vus520  
       2018-01-27 10:31:58 +08:00
    楼主的 redis 一定没被黑过。
    wizardforcel
        24
    wizardforcel  
       2018-01-27 11:01:56 +08:00
    数据库不设密码叫数据库嘛
    zilan
        25
    zilan  
    OP
       2018-01-27 15:31:28 +08:00
    多谢,想表述的其实是觉得这个 auth 有点鸡肋,如果是受信任环境就不需要,但如果是一个不受信任环境,端口,ip,甚至 auth 的连接都可能被抓到,相比起来只能算是最基础的防御了。所以觉得作为出厂的安全策略有点不太合适的样子。
    zilan
        26
    zilan  
    OP
       2018-01-27 15:32:17 +08:00
    没看到 append。。。。丢人了
    raphaelsoul
        27
    raphaelsoul  
       2018-01-27 21:36:37 +08:00
    今天发现开发服务器的 redis 被人写入了一条数据,一个 cron rule。
    我看了一下 shell 脚本,一个门罗币的挖矿程序。

    然而,我 redis 是在 docker 里跑的,hhhh
    andreby
        28
    andreby  
       2018-01-27 21:41:28 +08:00
    不设置 auth 不安全 好像那个 config 还是 info 还有问题 会被骇
    wmhack
        29
    wmhack  
       2018-01-28 16:22:53 +08:00 via iPhone
    会被挖矿,我朋友亲身经历
    wmhack
        30
    wmhack  
       2018-01-28 16:23:06 +08:00 via iPhone
    会被挖矿,我朋友亲身经历过
    douglarek
        31
    douglarek  
       2018-01-28 17:19:50 +08:00
    楼主我觉得你说的对;完全没有必要;反正内网用
    lfzyx
        32
    lfzyx  
       2018-01-28 22:59:50 +08:00
    的确是毫无意义,redis 不支持 ssl 安全通讯协议,很容易被抓包,密码也是明文保存在配置文件中,auth 只是为了防止被网络运营商之外的人黑你,网络运营商和主机托管商要黑你还是分分钟的事
    zilan
        33
    zilan  
    OP
       2018-01-29 01:12:57 +08:00 via iPhone
    @douglarek 我已经分不清是在黑我还是在真心说了。。。。。。
    blueorange
        34
    blueorange  
       2018-01-29 10:15:26 +08:00
    @hcymk2 牛皮
    pantingwen
        35
    pantingwen  
       2018-01-29 22:13:43 +08:00
    个人经历过的,在自己阿里云上装了一个 redis,允许外网访问,没有设置 auth 密码,然后就悲剧了(服务被人获取 root 权限)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   951 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 21:34 · PVG 05:34 · LAX 14:34 · JFK 17:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.