公网的Redis还敢不设置密码?我看你是疯了

朋友们 , 我有一台华为云耀服务器 , 闲来无事 , 在上面装了个redis , 做一些测试研究 , 结果被攻击了 , 这还是头一回遇见 , 因为以前的环境还是使用内网居多 。
现象描述因为头一天忙到挺晚的 , 电脑没有关机 , 所以第二天准备将电脑清理下 , 关一关暂时不用的软件 , 当看到ftp远程工具时 , 我整个人都精神了 , 你们看下:

公网的Redis还敢不设置密码?我看你是疯了

文章插图
 
整个人一下就精神了 , 我这个服务器只有一个MySQL和一个redis , 并且基本没有在使用 , 怎么就把内存沾满了 , cpu还占用了一半的样子 , 当即我就想到 , 我可能被攻击了 。
登录华为云控制台看看
第一个想到的就是登录控制台看看 , 什么时间开始被攻击的?
公网的Redis还敢不设置密码?我看你是疯了

文章插图
 
如上图所示大概就是前一晚的二十二点四十多开始的 。
我比较惊讶的是华为云没有什么告警的机制吗?突然大流量涌入 , 且服务器内存都满了 , 它都没有任何的提示信息 , 还在这里展示无风险:
公网的Redis还敢不设置密码?我看你是疯了

文章插图
 
寻找问题当前最重要的就是找找哪里被攻击了 , 其实我都很清楚 , 一定是昨天安装的redis了 。主要是两个原因:
  • 安全组开放了全部ip的入口访问
  • 没有设置密码

公网的Redis还敢不设置密码?我看你是疯了

文章插图
 
那么我们就去看看redis有什么现象?
客户端工具连接一下 , 发现搜有的key都没啦 , 变成了如下的内容:
公网的Redis还敢不设置密码?我看你是疯了

文章插图
 
既然如此 , 我们不妨去redis的日志文件看看 , 它都经历了什么 。日志在哪呢?在配置文件当中看看它的路径 , 结果发现自己没配 , 还是在默认的位置 , /dev/null:
公网的Redis还敢不设置密码?我看你是疯了

文章插图
 
这是什么意思?这就是告诉我 , 谁让你不配置日志呢?现在想看根本就没有 。
解决问题既然如此 , 我们直接解决问题好了 。首先想到的是直接杀死redis的进程:
[root@hecs-402944 myredis]# ps -ef|grep redisroot12810 104240 10:30 pts/000:00:00 grep --color=auto redisroot2139210 3月02 ?00:01:19 redis-server *:6379[root@hecs-402944 myredis]# kill -9 21392复制代码然后你会发现 , 并没有什么用 , 无论是cpu还是内存 , 依然高居不下 。我甚至不知道怎么解决 , 那么就直接重启服务器吧 。重启大法好啊 , 总算是释放了被占用的资源了 。
但是一段时间后 , 内存占用又上去了 , 所以事情必然不是那么简单了 。从前面的Redis中的脚本内容可以发现 , cron表达式 , 一定是有定时任务在不断地跑 , 所以我沿着这条线看看服务器上面的定时任务有哪些:
[root@hecs-402944 ~]# crontab -l*/30 * * * * sh /etc/newinit.sh >/dev/null 2>&1复制代码只有一个 , 一定是它 , 我们先停了它 , 然后看看它到底是什么内容 。
[root@hecs-402944 etc]# rm -rf newinit.sh rm: 无法删除"newinit.sh": 不允许的操作复制代码我直呼好家伙 , 不允许删除 。
使用下面的命令查看这个文件:
lsattr newinit.sh ----ia-------e-- newinit.sh复制代码这个ia是什么意思?
a:Append Only , 系统只允许在这个文件之后追加数据 , 不允许任何进程覆盖或截断这个文件 。如果目录具有这个属性 , 系统将只允许在这个目录下建立和修改文件 , 而不允许删除任何文件 。i:Immutable , 系统不允许对这个文件进行任何的修改 。如果目录具有这个属性 , 那么任何的进程只能修改目录之下的文件 , 不允许建立和删除文件 。复制代码修改这个权限:
[root@hecs-402944 etc]# chattr -ia newinit.sh -bash: /usr/bin/chattr: 权限不够复制代码


推荐阅读