一、现象
如上图所示,CPU几乎被第一个进程给吃满了!!!
二、解决步骤
(1)查找这个进程的文件在哪里
readlink -f /proc/26572/exe
readlink命令的作用:
- 查看某个程序实际执行路径
- 检查软链接真实指向
- f选项含义:
递归解析所有符号链接,并返回该文件的最终绝对路径。
(2)此时我找到这个文件在我的根目录下,然后查看文件内容:
如图全是乱码,而且还是死循环的显示!!!
(3)kill这个进程,删除对应文件
杀掉这个进程,并删除对应文件。CPU的使用率断崖式下降!!!
(4)排查是否有异常的ip地址
netstat -ant | awk '$6 == "ESTABLISHED" {print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
解释:
统计所有已建立的 TCP 连接中,每个远程 IP 出现的次数(即连接数),并按数量从高到低排序。
netstat -ant //列出所有 TCP 连接(a: 所有,n: 显示IP和端口数字,t: TCP连接)
awk '$6 == "ESTABLISHED" {print $5}' //从结果中筛选出状态为 ESTABLISHED 的连接(表示通信已建立),
输出第 5 列,即远程 IP:端口
cut -d: -f1 // 用 : 分隔字段,仅保留 IP 地址部分,去掉端口号
sort //对所有 IP 地址进行排序
uniq -c //对相同 IP 地址进行去重,并统计其出现次数
sort -nr //按连接数从大到小排序(n:数字,r:倒序)
如果只有几个连接,就可以手动查每个ip的所属地,对于异常地址的IP直接利用iptables给禁掉。如:
//封禁所有来自该 IP 的访问
iptables -A INPUT -s x.x.x.x -j DROP
//同时阻止你访问对方
iptables -A OUTPUT -d x.x.x.x -j DROP
//验证
iptables -L -n | grep x.x.x.x
iptables -L -n 用于查看当前防火墙规则列表
-L(List) //列出所有的防火墙规则
-n(numeric) //以数字形式显示 IP 地址和端口号,不进行 DNS 解析
三、总结
出现这个问题的原因有两个:
(1)云服务器的安全组中开放了所有端口
(2)密码太弱(导致被暴力破解登录)