返回列表 发新帖

高性能Redis数据库安全手册| →『网络安全区』

249.6k 13
kjeittccdf 发表于 2015-3-28 01:39:37|湖北 | 查看全部 阅读模式
摘自:ubuntu FreeBuf8 A- g" |7 _' Y8 u9 Q- v

+ s. l1 f# O% F! S& N( a* V* O1 FRedis是一个高性能的key-value数据库,这两年可谓火的不行。而Redis的流行也带来一系列安全问题,不少攻击者都通过Redis发起攻击。本文将讲解这方面的内容,包括Redis提供的访问控制和代码安全问题,以及可以由恶意输入和其他类似的手段触发的攻击。
2 I( M5 c+ A8 [) }6 o& D

Redis数据库安全手册

Redis数据库安全手册
" o0 P& c; l6 A
Redis通用安全模块5 K$ ]! Z1 V8 N  H( M) Q* {4 V
Redis被设计成只能由可信环境的可信机器访问。这意味着将它直接暴露在互联网或者其他可以由不可信机器通过TCP或者UNIX SCOKET直接连接的环境中。$ w# n" s; e6 C, ~% Q) l
例如,在通常的WEB应用程序使用Redis作为数据库,cache,或者消息系统。WEB应用程序的客户端将查询Redis生成页面或执行请求或由用户触发。在这个例子中,WEB应用链接了Redis和不可信的客户端。  o( r4 J5 a7 |8 j) b
这是一个特定的例子,但是一般来说,不授信的Redis链接应该被监控,验证用户输入,再决定执行什么样的操作。因为,Redis追求的不是最大的安全性,而是简洁与高效。
2 Z. I6 Q* Q6 j网络安全
7 P+ N! w  D8 ~0 b) dRedis链接应该对每个受信的客户端开放。所以,服务器运行的Redis应该只被使用Redis应用的计算机连接。在大多数直接暴露在互联网的单个计算机,例如,虚拟化的LINUX实例(LINODE,EC2,…..)
- n$ a; Q- z  O* V0 oRedis端口应该被防火墙阻止来自外部的访问。客户端应该仍然能通过服务器的本地回环接口访问Redis。注意,通过在Redis.CONF添加下面一句就可以绑定本地回环,阻止外网访问了。
. l! H* T) q5 Y$ H' K9 vbind 127.0.0.1
. b7 J% g$ H  y1 O" e8 j1 s因为Redis的特性,没有对外网访问进行限制会是一个很重大的安全问题。例如一条简单的FLUSHALL命令就能被攻击者用来删除整个数据设置。! Y3 l" }, y6 D0 K7 m5 ]0 p1 U
身份验证机制
. c9 O" I+ _% |4 ]如果你们不想使用访问限制的话,Redis提供了一个身份验证功能,可以通过编辑Redis.CONF文件来实现它。: _# d; b2 M% @+ g4 e# k. `0 c5 h
如果开启了身份验证功能,Redis将拒绝所有的未身份验证的客户端的所有操作。客户端可以发送AUTH命令+密码来验证自己。
% r( z- T; [7 \3 |密码是由系统管理员在Redis。CONFIG文件中设置的明文密码,为了防止暴力破解攻击他应该足够长。原因有两个:- j: n7 R+ z% v
Redis的执行效率非常快,外部设备每秒可以测试相当数量的密码
) \2 Y3 I1 K0 o" T* t1 {% f5 W# ]- jRedis的密码是存储在Redis.conf文件和内部客户端的配置中的,因此不需要管理员记住。所以可以使用相当长的密码。
# e3 ~6 V. }( s9 n* W$ A8 W身份验证的目标是提供第二层的安全保障。这样当防火墙或者其他第一层的系统安全设置失效的话,一个外部设备在没有密码的情况下仍然不能访问redia。
, [$ B. S* L3 P9 G7 i& w1 O" LAUTH命令像其他的redia命令一样是不加密传输的,所以他不能阻止攻击者在内网的窃听。
2 {9 b3 f3 p& e6 y! _数据加密支持6 x! Y( i+ U( z7 m. x
Redis不支持加密。为了受信的客户端可以以加密形式通过互联网可以采用加密协议(SSL)传输数据。
( t  u+ K2 u" V0 q3 Z& [禁用特定的命令8 m" e( O/ Q# O# k9 p! w9 S" D$ E
禁用Redis的一些命令是可行的,或者将他们改名。这样来自客户端的请求就只能执行有限的命令。
: K2 W) n+ O5 g2 m- A9 u例如,虚拟的服务器提供商可能提供托管的Redis服务。在这种情况下,普通用户不应该能够调用Redis的配置命令来修改该配置实例,但提供和删除服务的系统能够有这样的权限。
( a! D! ?' I8 }8 E; x1 _6 n在这种情况下,从命令表中重命名命令或者完全隐藏命令是可能的。这个功能可用在Redis.conf配置文件里做为一个声明。例如:
3 X4 i, R2 X7 o3 ^2 b7 r5 ]rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52& S2 L# {& G7 h
在上面的例子里,CONFIG命令被更名为一个更为陌生的名字。它也完全可以被重命名成空字符串,例如:
& i( O& J$ ^- [$ ]rename-command CONFIG ""
3 L+ o: W* d' a2 O) I+ G) A由精密的输入触发的攻击9 z3 [! B3 |- S
还有一类攻击,攻击者即使没有获得数据库的访问权限也可以从外部发起攻击。一个此类攻击的例子是通过Redis的内部函数向Redis里插入数据。
- Z4 ?5 m# d( [6 {8 J8 {" P! d8 i攻击者可以通过一个web表单将一组字符串提交到一个hash的同一个堆栈,引起时间复杂度从O(1)到O(n) ,消耗更多的CPU资源,最终导致DOS攻击。为了防止这种特定的攻击方式,Redis为每个执行请求随机分配hash。
3 Y7 _, \; m# dRedis使用快速排序算法来执行SORT命令。目前,这个算法不是随机的,所以通过对输入的精细控制可能触发命令的二次执行。: X( R, Q2 U9 E0 P' q
字符串转义和NOSQL注入
4 Z! g% k# M+ i0 t/ g! URedis协议里面没有字符串转义相关的内容,所以在通常情况下是不存在注入的。Redis协议使用的是前缀长度的字符串,完全二进制,保证安全性。LUA脚本执行EVAL和EVALSHA命令时遵循相同的规则,因此这些命令也是安全的。, i; e4 W. z8 T8 m' R
然而这回事一个非常奇怪的用例,应用程序应该避免使用LUA脚本获取来自非信任源的字符串。  y+ s1 M: Q( W: G3 {8 M
代码安全性
4 u# T0 m/ b$ o" ]. F0 F在经典的Redis 设置里,客户端可以执行所有的命令集,但是获得的用例应该永远不能导致有控制Redis所在系统的能力。内在的,Redis使用众所周知的安全代码规范来防止缓冲区溢出,格式错误和其它内存损坏问题。然而,客户端拥有控制使用服务器配置命令CONFIG的能力使得其能够改变程序的工作目录和转储文件的名称。这允许客户端写RDB Redis在随机路径写文件。这是一个安全问题,容易导致客户端有Redis运行非法代码的能力。
4 ^: \8 _; ]3 J8 c2 zRedis不需要root权限运行,也不建议以root权限运行。Redis的作者正在调查添加一条新的配置参数来防止CONFIG SET/GET 目录和其他类似的运行时配置的指令的可能性。这会阻止客户端强制服务器在任意位置写Redis转储文件。
1 D, a& y6 M7 V- A9 X. K8 `GPG key
# N% J9 s  B7 f/ N8 U/ v' p" i; T安全研究人员可以在Github提交问题,当你感觉这个安全问题真的很重要,在文档的末尾加上GPG标识。
  1. -----BEGIN PGP PUBLIC KEY BLOCK-----Version: GnuPG v1.4.13 (Darwin)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
复制代码
Key fingerprint
  1. pub   4096R/0E5C88D6 2013-11-07 [expires: 2063-10-26]Key fingerprint = E5F3 DA80 35F0 2EC1 47F9  020F 3181 3728 0E5C 88D6uid                  Salvatore Sanfilippo <antirez@gmail&#46;com>sub   4096R/3B34D15F 2013-11-07 [expires: 2063-10-26]
复制代码

回复|共 13 个

mwxny 发表于 2015-9-11 16:02:13|法国 | 查看全部
希望这样的好贴多些,再多些!!!
wwdu926a 发表于 2015-9-11 16:02:40|美国 | 查看全部
想骂你.却不知道从何骂起.
wwdu926a 发表于 2015-9-11 16:02:45|北京 | 查看全部
疯了 这年头盗版还真多~~~~~~
effoggikeftor 发表于 2015-9-11 16:02:53|澳大利亚 | 查看全部
阿额~~~这些人都疯特勒~~~~~
tohme 发表于 2015-9-11 16:03:13|加拿大 | 查看全部
哪个正常的人能崇拜一只蟑螂呢?
seazvyt 发表于 2016-3-7 14:00:58|中国 | 查看全部
呵呵 大家好奇嘛 来观看下~~~~
wwzcdenleclv 发表于 2016-3-7 14:00:58|美国 | 查看全部
楼上的话等于没说~~~
gevaemaidovef 发表于 2016-3-7 14:01:27|韩国 | 查看全部
笨点也好~~~~
wwdu926a 发表于 2016-3-7 14:01:36|江西 | 查看全部
只是本着“看贴(虽然看不懂)回贴,利人利己的中华民族优秀传统美德”,顺便赚点积分。
Acropozelan 发表于 2017-4-11 15:48:20|英国 | 查看全部
我不是来抢沙发的,也不是来打酱油的。
wwdu926a 发表于 2017-4-11 15:52:11|西班牙 | 查看全部
现在做什么网站好?
mwxny 发表于 2017-4-11 15:53:47|美国 | 查看全部
呵呵 那是啊~~
wwdu926a 发表于 2017-4-11 15:54:10|美国 | 查看全部
本人在此留言均为网络上复制,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能。并不代表本人局部或全部同意、支持或者反对楼主观点。

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

得知互动是一个融创意、设计、开发、营销、生活、互联网于一体的专业交流分享平台。
Copyright © 2026 得知互动-专注Ai与站长技术交流社区-Ai交流平台 版权所有 All Rights Reserved. Powered by Discuz! X5.0 鄂ICP备15006301号-5|鄂公网安备 42018502006730号
关灯 在本版发帖 扫一扫添加QQ客服 返回顶部
快速回复 返回顶部 返回列表