最近正在学习 redis,发现 redis 需要设置一个密码 auth。就按照要求的做了。 但是回头一想,为什么要设置这样一个鉴权过程呢? 有没有人研究过是出于什么样的安全考虑。
1
imherer 2018-01-26 17:14:34 +08:00
这不就和服务器登录需要输入密码一个道理么
虽然 redis 可以 bind 访问 ip,但你也不敢保证你 bing 的 ip 百分百安全吧 |
2
hcymk2 2018-01-26 17:16:25 +08:00
你家里面自己私人的抽屉要上锁么?
|
3
bookding 2018-01-26 17:16:52 +08:00
你不需要也可以不设啊……
|
4
k9982874 2018-01-26 17:17:33 +08:00 1
因为有些人会把 redis 暴露到公网上,然后就被爆菊花了。
|
5
zsdroid 2018-01-26 17:25:32 +08:00
为什么你家要安装大门呢? 有没有研究过是出于什么样的安全考虑?
|
6
shiroming 2018-01-26 17:41:25 +08:00 via Android
如果服务不只是本机的话,就需要设置 auth 了,但是这样也不能保证安全。可惜 redis 官方一直没有 ssl,需要用三方工具
|
7
Aliencn 2018-01-26 17:45:36 +08:00 1
想起前两年爆出一大堆无密码允许公网访问的 redis。
其实如果注重连接速度的话,可以不用密码,防火墙策略设置严格一点。 |
8
gleymonkey 2018-01-26 17:47:37 +08:00
不设置就被挖矿了。。我就是。
|
9
nutting 2018-01-26 17:49:52 +08:00 via Android
楼主意思里面数据无所谓?意思 redis 被攻破不影响其它?
|
10
fcten 2018-01-26 17:57:33 +08:00
又不是必须的。访问环境不受信任就设,可信就不设。这不是和任何设密码的环境都一样吗……
|
11
changnet 2018-01-26 18:08:16 +08:00 via Android
参考 mongodb 当年被骂得狗血淋头
|
12
laoyur 2018-01-26 18:09:18 +08:00
不理解楼主的逻辑,你都说这个 AUTH 是密码了,然后还问「是出于什么样的安全考虑」
AUTH 本身提供的安全保证是否足够安全,这是另外一个话题 |
13
kslr 2018-01-26 19:25:35 +08:00
如果在公网,并且没有使用防火墙,那么任何人都可以连接。
|
14
est 2018-01-26 19:29:57 +08:00 via Android
比如你开了个爬虫服务,输入网址,得到结果
然后别人提交了一个向本机 redis flushdb 的指令。 |
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 连接),禁止外部远程连接。 这应该算常识吧。 |
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、其他用户继续公网暴露不加权限...... |
18
mritd 2018-01-26 23:50:30 +08:00
最后,兄台可口将你的服务器地址告诉我;我现在急缺一台 linux 测试机(别人的那种) 😂
|
19
shiyouming91 2018-01-27 08:04:09 +08:00 via iPhone
因为就算只打开 localhost 的端口,你本机任何用户下的进程仍然能访问这个端口。设想你有一个 uid 是 nobody 的进程被黑了,黑客本来是没有办法用 nobody 干什么坏事的,但是你有一个不配置 auth 的 redis 的话黑客就可以连接你的 redis 干坏事了。
|
20
yongjing 2018-01-27 08:59:24 +08:00
矿机好友~
|
21
lianxiaoyi 2018-01-27 09:31:57 +08:00
你不用可以不设置啊。。。。而且 redis 开箱就是不带密码的啊。。。。。。参考当年 mongodb 事件。。。。而且最近比特币更贵了。。。。。
|
22
Paddington 2018-01-27 09:59:35 +08:00
@lianxiaoyi 不用 mongodb 事件,redis 就出过。。
|
23
vus520 2018-01-27 10:31:58 +08:00
楼主的 redis 一定没被黑过。
|
24
wizardforcel 2018-01-27 11:01:56 +08:00
数据库不设密码叫数据库嘛
|
25
zilan OP 多谢,想表述的其实是觉得这个 auth 有点鸡肋,如果是受信任环境就不需要,但如果是一个不受信任环境,端口,ip,甚至 auth 的连接都可能被抓到,相比起来只能算是最基础的防御了。所以觉得作为出厂的安全策略有点不太合适的样子。
|
26
zilan OP 没看到 append。。。。丢人了
|
27
raphaelsoul 2018-01-27 21:36:37 +08:00
今天发现开发服务器的 redis 被人写入了一条数据,一个 cron rule。
我看了一下 shell 脚本,一个门罗币的挖矿程序。 然而,我 redis 是在 docker 里跑的,hhhh |
28
andreby 2018-01-27 21:41:28 +08:00
不设置 auth 不安全 好像那个 config 还是 info 还有问题 会被骇
|
29
wmhack 2018-01-28 16:22:53 +08:00 via iPhone
会被挖矿,我朋友亲身经历
|
30
wmhack 2018-01-28 16:23:06 +08:00 via iPhone
会被挖矿,我朋友亲身经历过
|
31
douglarek 2018-01-28 17:19:50 +08:00
楼主我觉得你说的对;完全没有必要;反正内网用
|
32
lfzyx 2018-01-28 22:59:50 +08:00
的确是毫无意义,redis 不支持 ssl 安全通讯协议,很容易被抓包,密码也是明文保存在配置文件中,auth 只是为了防止被网络运营商之外的人黑你,网络运营商和主机托管商要黑你还是分分钟的事
|
34
blueorange 2018-01-29 10:15:26 +08:00
@hcymk2 牛皮
|
35
pantingwen 2018-01-29 22:13:43 +08:00
个人经历过的,在自己阿里云上装了一个 redis,允许外网访问,没有设置 auth 密码,然后就悲剧了(服务被人获取 root 权限)
|