redis服务器远程漏洞-公钥-相关原理
2015-11-12 11:29
483 查看
漏洞原理及复现在复现前,先介绍两个基本所要了解的基础知识:
1) SSH免密码登录,Linux下可以设置SSH免密码登录,方法为使用"公私钥"认证,即首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub;私钥文件:~/.ssh/id_rsa)。然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了。详细可参考(http://jingyan.baidu.com/article/2fb0ba4043124a00f2ec5f0f.html)SSH免密码登陆远程服务器
2) Redis可通过Redis-CLI远程管理,设置Redis的默认路径以及数据库缓存文件。
方法如下:
config set dir /xxx
config set dbfilename xxxx
set xxxx "xxx"
save
上述两种常见的运维方法结合,在以下条件下:
1.Redis服务使用ROOT账号启动
2.Redis服务无密码认证或者使用的是弱口令进行认证
3.服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器。
如下图:
首先在本地生成一对密钥:
然后通过redis-clis远程连接到目标redis服务器,执行以下命令
config set dir /root/.ssh/
config set dbfilename authorized_keys
set xxxx "\n\n\nssh-rsa key_pub\n\n\n",其中key_pub为上图生成的公钥,即可将公钥保存在远端服务器,使得登录时不需要输入账号与密码。
目前魔方安全团队已经检测到部分客户的Redis已经因该漏洞被***,并在其缓存数据库中发现被写入的公钥,建议用户马上对内部网络进行排查。
漏洞修复该漏洞的修补方法如下:
1)禁止使用 root 权限启动 redis 服务;
2)对 redis 访问启用密码认证,并且添加 IP 访问限制;
3)尽可能不对公网直接开放 SSH 服务。
4) 指定redis服务使用的网卡
在 redis.conf 文件中找到 “# bind 127.0.0.1” ,把前面的#号去掉, 然后保存。注:修改后只有本机才能访问redis。
5) 设置访问密码
在 redis.conf 中找到“requirepass”字段,在后面填上你需要的密码。
备注:
1. redis-cli -h 192.168.1.103 -p6379 -a "hi, coder"
2. 用法:redis-cli [OPTIONS] [cmd [arg [arg ...]]]
-h <主机ip>,默认是127.0.0.1
-p <端口>,默认是6379
-a <密码>,如果redis加锁,需要传递密码
3. redis默认匿名用户可登路,无需密码
4. SCP
a.目标文件:目标文件。格式为user@host:filename(文件名为目标文件的名称)
b. 从远处复制文件到本地目录
scproot@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
scp -rroot@10.10.10.10:/opt/soft/mongodb /opt/soft/ (文件夹)
c. 上传本地文件到远程机器指定目录
scp/opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest
scp -r/opt/soft/mongodb root@10.10.10.10:/opt/soft/scptest
1) SSH免密码登录,Linux下可以设置SSH免密码登录,方法为使用"公私钥"认证,即首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub;私钥文件:~/.ssh/id_rsa)。然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了。详细可参考(http://jingyan.baidu.com/article/2fb0ba4043124a00f2ec5f0f.html)SSH免密码登陆远程服务器
2) Redis可通过Redis-CLI远程管理,设置Redis的默认路径以及数据库缓存文件。
方法如下:
config set dir /xxx
config set dbfilename xxxx
set xxxx "xxx"
save
上述两种常见的运维方法结合,在以下条件下:
1.Redis服务使用ROOT账号启动
2.Redis服务无密码认证或者使用的是弱口令进行认证
3.服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器。
如下图:
首先在本地生成一对密钥:
然后通过redis-clis远程连接到目标redis服务器,执行以下命令
config set dir /root/.ssh/
config set dbfilename authorized_keys
set xxxx "\n\n\nssh-rsa key_pub\n\n\n",其中key_pub为上图生成的公钥,即可将公钥保存在远端服务器,使得登录时不需要输入账号与密码。
目前魔方安全团队已经检测到部分客户的Redis已经因该漏洞被***,并在其缓存数据库中发现被写入的公钥,建议用户马上对内部网络进行排查。
漏洞修复该漏洞的修补方法如下:
1)禁止使用 root 权限启动 redis 服务;
2)对 redis 访问启用密码认证,并且添加 IP 访问限制;
3)尽可能不对公网直接开放 SSH 服务。
4) 指定redis服务使用的网卡
在 redis.conf 文件中找到 “# bind 127.0.0.1” ,把前面的#号去掉, 然后保存。注:修改后只有本机才能访问redis。
5) 设置访问密码
在 redis.conf 中找到“requirepass”字段,在后面填上你需要的密码。
备注:
1. redis-cli -h 192.168.1.103 -p6379 -a "hi, coder"
2. 用法:redis-cli [OPTIONS] [cmd [arg [arg ...]]]
-h <主机ip>,默认是127.0.0.1
-p <端口>,默认是6379
-a <密码>,如果redis加锁,需要传递密码
3. redis默认匿名用户可登路,无需密码
4. SCP
a.目标文件:目标文件。格式为user@host:filename(文件名为目标文件的名称)
b. 从远处复制文件到本地目录
scproot@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
scp -rroot@10.10.10.10:/opt/soft/mongodb /opt/soft/ (文件夹)
c. 上传本地文件到远程机器指定目录
scp/opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest
scp -r/opt/soft/mongodb root@10.10.10.10:/opt/soft/scptest
相关文章推荐
- Linux socket 初步
- 小心服务器内存居高不下的元凶--WebAPI服务
- Android之获取手机上的图片和视频缩略图thumbnails
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户