zilan
V2EX  ›  PHP

为什么 redis 会设置 AUTH ?

  •  
  •   zilan · Jan 26, 2018 · 8459 views
    This topic created in 3055 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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

    然而,我 redis 是在 docker 里跑的,hhhh
    andreby
        28
    andreby  
       Jan 27, 2018
    不设置 auth 不安全 好像那个 config 还是 info 还有问题 会被骇
    wmhack
        29
    wmhack  
       Jan 28, 2018 via iPhone
    会被挖矿,我朋友亲身经历
    wmhack
        30
    wmhack  
       Jan 28, 2018 via iPhone
    会被挖矿,我朋友亲身经历过
    douglarek
        31
    douglarek  
       Jan 28, 2018
    楼主我觉得你说的对;完全没有必要;反正内网用
    lfzyx
        32
    lfzyx  
       Jan 28, 2018
    的确是毫无意义,redis 不支持 ssl 安全通讯协议,很容易被抓包,密码也是明文保存在配置文件中,auth 只是为了防止被网络运营商之外的人黑你,网络运营商和主机托管商要黑你还是分分钟的事
    zilan
        33
    zilan  
    OP
       Jan 29, 2018 via iPhone
    @douglarek 我已经分不清是在黑我还是在真心说了。。。。。。
    blueorange
        34
    blueorange  
       Jan 29, 2018
    @hcymk2 牛皮
    pantingwen
        35
    pantingwen  
       Jan 29, 2018
    个人经历过的,在自己阿里云上装了一个 redis,允许外网访问,没有设置 auth 密码,然后就悲剧了(服务被人获取 root 权限)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1460 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 83ms · UTC 16:53 · PVG 00:53 · LAX 09:53 · JFK 12:53
    ♥ Do have faith in what you're doing.