前言
开服那么久,玩那么多服务器,这回终于被攻击了,记录一下整个处理过程。
起因
今早上收到腾讯云的警告短信,说我的服务器有违规操作,我还在想不会是我的OpenVPN服务的问题吧,结果点开一看是TCP端口22。
原来是服务器变成肉鸡了。
排查
对这次攻击我是比较有头绪的,因为昨天晚上才配置了个Palworld的服务器,很有可能是配置过程中留下了问题。
配置palworld的时候,需要先装一个steamcmd的服务,官方配置指南上就有写安全警告,不要在root权限下使用,但是我忽视了。。
排查过程其实很轻松,有啥不会问GPT就行(重生之我有纳戒全栈老头)
查看系统日志
使用以下命令查看系统日志,检查是否有异常的登录尝试或其他与端口22有关的异常活动。
sudo cat /var/log/auth.log
一看日志,好家伙这是被DDOS了,而且时间还是在2天前,这腾讯云防火墙居然啥都没报告。
从提供的日志中可以看到一些与系统安全性有关的信息。以下是其中一些可能引起关注的点:
- SSH连接关闭:
Jan 23 10:40:40 localhost sshd[2795859]: Connection closed by 104.218.72.214 port 40600 [preauth]
Jan 23 10:44:01 localhost sshd[2796758]: Connection closed by 104.218.72.214 port 40265 [preauth]
Jan 23 10:47:22 localhost sshd[2797722]: Connection closed by 104.218.72.214 port 39937 [preauth]
这些行表明有一些SSH连接被关闭,并且源IP地址分别是104.218.72.214。这可能是一种拒绝服务攻击(DoS)的迹象,或者可能是某种安全事件。
- 无效用户登录尝试:
Jan 23 10:48:11 localhost sshd[2797910]: Invalid user inspur from 125.74.120.250 port 7126
Jan 23 10:48:54 localhost sshd[2798091]: Invalid user industowers from 152.168.201.83 port 41515
GPT:这些行显示了一些尝试使用无效用户进行SSH登录的事件。攻击者通常会尝试使用常见的用户名进行登录,这是一种常见的暴力破解尝试。
- SSH协商失败:
Jan 23 10:47:52 localhost sshd[2797836]: Unable to negotiate with 218.92.0.55 port 36046: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1 [preauth]
这一行显示了与IP地址218.92.0.55的SSH连接尝试,但由于密钥交换方法不匹配而失败。这可能是由于远程主机配置不正确或者试图使用较旧的、不安全的协议。
查看网络连接:
使用以下命令查看当前网络连接,特别关注是否有大量连接到端口22的活动。
sudo netstat -an | grep :22
又是不看不知道一看吓一跳,22端口连了快有一百台服务器
root@VM-8-5-ubuntu:/home/ubuntu# sudo netstat -an | grep :22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 1 10.0.8.5:51248 209.204.106.60:22 SYN_SENT
tcp 0 1 10.0.8.5:57532 213.171.214.11:22 FIN_WAIT1
tcp 0 1 10.0.8.5:39296 209.204.106.103:22 SYN_SENT
tcp 0 1 10.0.8.5:45688 209.204.106.5:22 SYN_SENT
tcp 0 1 10.0.8.5:35288 209.204.104.80:22 SYN_SENT
tcp 0 13 10.0.8.5:53346 213.171.50.206:22 FIN_WAIT1
tcp 0 1 10.0.8.5:44140 209.204.104.244:22 SYN_SENT
tcp 0 1 10.0.8.5:57374 209.204.105.41:22 SYN_SENT
tcp 0 1 10.0.8.5:52704 209.204.105.159:22 SYN_SENT
tcp 0 1 10.0.8.5:43612 209.204.106.91:22 SYN_SENT
tcp 0 1 10.0.8.5:51698 209.204.104.139:22 SYN_SENT
tcp 0 1 10.0.8.5:40996 209.204.105.98:22 SYN_SENT
tcp 0 1 10.0.8.5:44862 209.204.104.98:22 SYN_SENT
tcp 0 1 10.0.8.5:37128 209.204.104.111:22 SYN_SENT
tcp 0 1 10.0.8.5:38064 209.204.106.135:22 SYN_SENT
tcp 0 1 10.0.8.5:36270 209.204.105.46:22 SYN_SENT
tcp 0 1 10.0.8.5:35738 209.204.102.248:22 SYN_SENT
tcp 0 1 10.0.8.5:59816 209.204.103.38:22 SYN_SENT
tcp 0 1 10.0.8.5:41494 209.204.105.29:22 SYN_SENT
tcp 0 1 10.0.8.5:45992 209.204.104.18:22 SYN_SENT
tcp 0 1 10.0.8.5:43028 209.204.103.170:22 SYN_SENT
tcp 0 1 10.0.8.5:40396 209.204.105.14:22 SYN_SENT
tcp 0 1 10.0.8.5:52384 209.204.103.42:22 SYN_SENT
tcp 0 1 10.0.8.5:46416 209.204.105.180:22 SYN_SENT
tcp 0 1 10.0.8.5:38646 209.204.105.67:22 SYN_SENT
tcp 0 1 10.0.8.5:49132 209.204.106.94:22 SYN_SENT
tcp 0 13 10.0.8.5:40526 213.171.50.78:22 FIN_WAIT1
tcp 0 1 10.0.8.5:43984 209.204.105.4:22 SYN_SENT
tcp 0 1 10.0.8.5:48792 209.204.104.73:22 SYN_SENT
tcp 0 1 10.0.8.5:38916 209.204.103.27:22 SYN_SENT
tcp 0 1 10.0.8.5:55418 209.204.102.251:22 SYN_SENT
tcp 0 1 10.0.8.5:39020 209.204.105.247:22 SYN_SENT
tcp 0 1 10.0.8.5:46706 209.204.104.90:22 SYN_SENT
tcp 0 1 10.0.8.5:49558 209.204.103.104:22 SYN_SENT
tcp 0 1 10.0.8.5:60888 209.204.105.171:22 SYN_SENT
tcp 0 1 10.0.8.5:41842 209.204.105.162:22 SYN_SENT
tcp 0 1 10.0.8.5:60930 209.204.103.43:22 SYN_SENT
tcp 0 13 10.0.8.5:49516 213.171.50.78:22 FIN_WAIT1
tcp 0 1 10.0.8.5:51896 209.204.102.198:22 SYN_SENT
tcp 0 1 10.0.8.5:34468 209.204.102.240:22 SYN_SENT
tcp 0 1 10.0.8.5:51988 209.204.104.145:22 SYN_SENT
tcp 0 13 10.0.8.5:52012 213.171.50.78:22 FIN_WAIT1
tcp 0 13 10.0.8.5:55718 213.171.50.78:22 FIN_WAIT1
tcp 0 1 10.0.8.5:37882 209.204.102.199:22 SYN_SENT
tcp 0 1 10.0.8.5:48382 209.204.103.173:22 SYN_SENT
tcp 0 1 10.0.8.5:60818 209.204.103.9:22 SYN_SENT
tcp 0 1 10.0.8.5:58944 209.204.103.106:22 SYN_SENT
tcp 0 1 10.0.8.5:41420 209.204.103.116:22 SYN_SENT
tcp 0 1 10.0.8.5:53978 209.204.105.145:22 SYN_SENT
tcp 0 1 10.0.8.5:56768 209.204.103.80:22 SYN_SENT
tcp 0 1 10.0.8.5:43048 209.204.104.183:22 SYN_SENT
tcp 0 1 10.0.8.5:44218 209.204.105.222:22 SYN_SENT
tcp 0 1 10.0.8.5:48450 209.204.104.8:22 SYN_SENT
tcp 0 1 10.0.8.5:47088 209.204.105.214:22 SYN_SENT
tcp 0 1 10.0.8.5:46690 209.204.103.74:22 SYN_SENT
tcp 0 1 10.0.8.5:46822 209.204.103.83:22 SYN_SENT
tcp 0 1 10.0.8.5:36116 209.204.103.81:22 SYN_SENT
tcp 0 1 10.0.8.5:54032 209.204.103.113:22 SYN_SENT
tcp 0 1 10.0.8.5:33674 209.204.105.101:22 SYN_SENT
tcp 0 1 10.0.8.5:41592 209.204.104.56:22 SYN_SENT
tcp 0 13 10.0.8.5:49206 213.171.221.84:22 FIN_WAIT1
tcp 0 1 10.0.8.5:41248 209.204.106.93:22 SYN_SENT
tcp 0 1 10.0.8.5:59622 209.204.103.133:22 SYN_SENT
tcp 0 1 10.0.8.5:59934 209.204.105.157:22 SYN_SENT
tcp 0 1 10.0.8.5:42358 209.204.104.100:22 SYN_SENT
tcp 0 1 10.0.8.5:36832 209.204.18.8:22 FIN_WAIT1
tcp 0 1 10.0.8.5:36992 209.204.104.205:22 SYN_SENT
tcp 0 1 10.0.8.5:48570 209.204.103.151:22 SYN_SENT
tcp 0 1 10.0.8.5:32980 209.204.102.249:22 SYN_SENT
tcp 0 1 10.0.8.5:39560 209.204.103.207:22 SYN_SENT
tcp 0 1 10.0.8.5:35812 209.204.103.165:22 SYN_SENT
tcp 0 1 10.0.8.5:40846 209.204.103.85:22 SYN_SENT
tcp 0 1 10.0.8.5:37552 209.204.106.143:22 SYN_SENT
tcp 0 1 10.0.8.5:43090 209.204.102.253:22 SYN_SENT
tcp 0 1 10.0.8.5:57490 209.204.103.181:22 SYN_SENT
tcp 0 1 10.0.8.5:58368 209.204.106.50:22 SYN_SENT
tcp 0 1 10.0.8.5:48820 209.204.104.216:22 SYN_SENT
tcp 0 1 10.0.8.5:53432 209.204.104.102:22 SYN_SENT
tcp 0 1 10.0.8.5:40464 209.204.104.24:22 SYN_SENT
tcp 0 1 10.0.8.5:46264 209.204.103.75:22 SYN_SENT
tcp 0 1 10.0.8.5:34816 209.204.104.225:22 SYN_SENT
tcp 0 1 10.0.8.5:51820 209.204.104.171:22 SYN_SENT
tcp 0 1 10.0.8.5:53100 209.204.104.164:22 SYN_SENT
tcp 0 1 10.0.8.5:43218 209.204.104.174:22 SYN_SENT
tcp 0 1 10.0.8.5:34818 209.204.104.31:22 SYN_SENT
tcp 0 1 10.0.8.5:59018 209.204.103.222:22 SYN_SENT
tcp 0 1 10.0.8.5:38212 209.204.103.5:22 SYN_SENT
tcp 0 13 10.0.8.5:57552 213.171.50.78:22 FIN_WAIT1
事情到这已经很确信,我的服务器遭到攻击了,而且已经被当初肉鸡用了。
在用户日志里,看到了名为steam的用户,这个用户是我在昨天开服的时候新建的,创建密码的时候没带脑子,直接把账号名和密码设为一个了。(找到罪魁祸首了)
清理木马
关闭账号权限
首先知道了很有可能是steam这个账号的问题,那么最先做的就是把这个账号冻结。
sudo pkill -u steam
但是出现了
userdel: user steam is currently used by process 2435989
因为我很确信,昨天在创建了这个账号后,就没有用这个账号启任何服务,但这里却告诉我这个进程在占用。这让我更加确信,罪魁祸首就是这个账号。
强行杀死进程
木马开了那么多的ssh连接服务,对服务器的开销肯定不会低,因此用top指令看一下当前硬件开销。
sudo top
果然,榜首是steam用户开的服务
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2854351 steam 20 0 1651572 286812 1224 S 46.7 7.1 0:52.96 aliases
2529792 ubuntu 20 0 7010832 518860 23996 S 31.0 12.9 275:00.86 PalServer-Linux
2823480 root 20 0 1425908 37148 11996 S 1.0 0.9 2503:31 YDService
948563 root 20 0 635952 12464 4196 S 0.7 0.3 272:11.62 barad_agent
948562 root 20 0 46576 6816 3060 S 0.3 0.2 31:47.38 barad_agent
快速枪毙掉这个进程
sudo kill -9 2854351
但是我发现他居然还写了定时自启,杀掉没两秒钟服务又启动了。
杀死服务立刻注销账户
在杀死服务的同时,我也删除了steam用户
sudo userdel -r steam
但是惊奇的发现,肉鸡程序还是自启了,而且这次顶着一个根本没有的账户6001
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2854351 6001 20 0 1651572 286812 1224 S 46.7 7.1 0:52.96 aliases
2529792 ubuntu 20 0 7010832 518860 23996 S 31.0 12.9 275:00.86 PalServer-Linux
2823480 root 20 0 1425908 37148 11996 S 1.0 0.9 2503:31 YDService
root@VM-8-5-ubuntu:/home/ubuntu# id 6001
id: ‘6001’: no such user
首先我想到的是先把木马文件删了
root@VM-8-5-ubuntu:/home/ubuntu# ps -p 2860341 -o user,cmd
USER CMD
6001 /var/tmp/.update-logs/aliases
这里看到了进程的文件,于是直接把它删了
sudo rm -rf /var/tmp/.update-logs/aliases
但是它还在自启,真让人崩溃🤮
此时GPT又指出:
看起来用户 6001 不存在,这可能是一个问题。在这种情况下,我们可以使用用户名而不是用户ID来终止相关进程。请使用以下命令:
sudo pkill -u 6001
删除了6001后,用top查看进程,发现没有再自启了。为了以防万一,我把整个服务器重启了一遍。
防火墙
还记得开头那个一堆22的DDOS吗?那个不光是我的服务器攻击别人,我的服务器也同时被攻击,为了省事,我索性到腾讯云那里给22号端口开了个白名单。
战后残骸
来欣赏下被当肉鸡后的TCP包
CPU占用
幽默DDos防护
续
年轻人的第一次DDOS,居然是这么蠢的一次低级失误,还有就技术力太低,到现在都没搞明白那个木马是通过什么方式自启的。
Q.E.D.