一、题目发现
我的一台海外服务器,一直只运行一项服务(你懂的),但是前不久我发现CPU占用99%。没在意,但今天,直接把我的服务干掉线了,SSH登录查看,我的服务已经停止运行了,但是系统CPU占用仍然是99%。
下令:
下图是安装的htop
,使用htop
下令:
可以看到一个名为work32的步伐在运行,而且还是以root身份运行的,我勒个~
网上查了一下,说是疑似挖矿病毒(2024挖矿?):https://cloud.tencent.com/developer/article/2390123
该挖矿病毒入侵终端后会占用主机资源进行挖矿,影响其他正常业务进程的运转,传播过程中病毒文件会修改防火墙的规则,开放相关端口,探测同网段其他终端并进行SSH暴力破解,容易造成大面积感染。
work32病毒应该是自带暴力破解SSH登岸的模块,通过 netstat -an 下令(安装net-tools才气用,apt install net-tools)看到中招的主机在登岸许多外部主机的SSH 端口。
应该是服务器提供商同网段其他的VPS被入侵了,然后把我的感染了,然后暴力获取了我的密码(密码确实很简朴),然后再继续扩散,这个病毒把我的服务的端口占了,导致我的服务停止。
二、题目解决
2.1 清晰病毒
不消按照我的步骤来,逻辑一样就行了。
我的密码已经被暴力破解了(work32谁人步伐直接用的我的root密码在实验下令)。
起首更改密码:
重启:
现在SSH连上,就可以看到CPU占用正常了:
现在清晰work32病毒:
前面我使用htop
下令,就已经看到了病毒地点路径/usr/.work/work32,以及实验下令。
或者你没有先更改密码后重启,就先kill -9 PID杀掉这个进程,PID用top
下令就可以看到的。
删除work32:
2.2 开启防火墙
现在临时解决了,但是还大概第二次被入侵,所以要提高服务器安全性。
起首是修改复杂密码,七零八落的那种。
(假如你是小白,先看完,不要着急操作,不消所有都设置)
其次要开启防火墙,以ufw为例:
ufw(Uncomplicated Firewall)是Ubuntu和Debian系统上常用的简朴防火墙管理工具。
(1)安装UFW
大多数Ubuntu和Debian系统默认已经安装了ufw。假如没有安装,可以使用以下下令进行安装:
- sudo apt update
- sudo apt install ufw
复制代码 (2)启用和禁用UFW
- sudo ufw enable
- sudo ufw disable
复制代码 (3) 查看UFW状态和规则
查看UFW状态和已应用的规则:
假如需要查看详细信息,可以使用:
(4)答应和拒绝端口
答应某个端口(例如SSH的默认端口22):
拒绝某个端口:
(5)答应和拒绝IP地址
答应特定IP地址访问某个端口:
- sudo ufw allow from 192.168.1.100 to any port 22
复制代码 拒绝特定IP地址访问某个端口:
- sudo ufw deny from 192.168.1.100 to any port 22
复制代码 (6)删除规则
删除特定规则(例如答应端口22):
- sudo ufw delete allow 22/tcp
复制代码 (7)答应和拒绝特定的子网
答应特定子网访问某个端口:
- sudo ufw allow from 192.168.1.0/24 to any port 22
复制代码 拒绝特定子网访问某个端口:
- sudo ufw deny from 192.168.1.0/24 to any port 22
复制代码 (8)默认计谋设置
设置默认计谋为拒绝所有传入连接,但答应所有传出连接:
- sudo ufw default deny incoming
- sudo ufw default allow outgoing
复制代码 (9)特定服务的规则
ufw有时可以辨认某些服务,答应或拒绝特定服务(如HTTP或HTTPS):
- sudo ufw allow http
- sudo ufw allow https
复制代码 (10)日志纪录
启用日志纪录:
禁用日志纪录:
(11)高级用法示例
- 答应特定IP地址通过SSH连接:
- sudo ufw allow from 203.0.113.4 to any port 2222
复制代码 - 答应子网通过HTTP连接:
- sudo ufw allow from 192.168.0.0/24 to any port 80
复制代码 - 删除规则时指定规则编号:
起首查看所有规则及其编号:
然后删除特定编号的规则:
- sudo ufw delete <rule_number>
复制代码 (12)重新加载UFW配置
在修改配置文件后,可以重新加载UFW以应用更改:
你大概需要的最简朴的使用(不是root用户,sudo实验):
- # 开启ufw
- ufw enable
- # 查看规则列表
- ufw status
- # 添加(放行)端口
- ufw allow 443
- # 拒绝端口
- ufw deny 8080
复制代码 起首,至少要答应22端口,否则会在生效后无法SSH连接。假如没有开启也不要紧,去你的服务器控制台,都有免密连接、VNC连接、实验下令等操作,再次答应就可以了。
假如你的哪项服务不能访问了,记得开启对应的端口,好比mysql、http(s)等的端口。
2.3 修改SSH端口
SSH(Secure Shell)可以使用非22端口。更改SSH端口可以提高安全性,由于攻击者通常会扫描默认的端口22。要更改SSH端口,你需要编辑SSH配置文件(通常是/etc/ssh/sshd_config),然后重新启动SSH服务。以下是详细步骤:
修改SSH端口:
- 编辑配置文件:
打开sshd_config文件:
- sudo vim /etc/ssh/sshd_config
复制代码 - 找到并修改端口设置:
找到这一行:
将其改为你希望使用的端口(例如,端口2222),并取消解释(去掉#号):
修改之前看看你要用的谁人端口有没有被其他服务占用,如:sudo netstat -tuln | grep 4202,没有输出的话,就可以使用。记得将这个端口添加到防火墙答应规则。
- 生存并退出:
生存文件并退出编辑器。
- 重新启动SSH服务:
根据你的Linux发行版,使用以下下令之一重新启动SSH服务:
- sudo systemctl restart ssh
复制代码 或
连接到新的端口:
连接SSH时需要指定新的端口。例如,假如你将端口改为2222,可以使用以下下令连接:
- ssh -p 2222 username@hostname
复制代码 使用ssh软件的话,就在端口选项那边填写即可。
2.4 仅使用凭据登录(可选)
可以在Ubuntu系统上配置SSH只答应通过凭据(如SSH密钥)登录,并克制使用密码登录。这可以明显提高SSH访问的安全性(ssh密钥常见的就git了)。
以下是详细步骤:
(1)天生SSH密钥对(假如尚未天生)
在客户端机器上天生SSH密钥对:
- ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
复制代码 这将天生公钥和私钥对,默认存储在~/.ssh目录中。
(2) 复制公钥到服务器
将天生的公钥复制到目的服务器的~/.ssh/authorized_keys文件中:
- ssh-copy-id username@server_ip_address
复制代码 (3)配置SSH服务
编辑SSH配置文件/etc/ssh/sshd_config:
- sudo vim /etc/ssh/sshd_config
复制代码 确保以下配置选项设置为克制密码登录,并只答应使用密钥登录:
- PasswordAuthentication no
- ChallengeResponseAuthentication no
- UsePAM no
复制代码 (4)启用公钥认证
确保以下配置选项设置为启用公钥认证:
(5)生存并重启SSH服务
生存文件并退出编辑器,然后重启SSH服务以应用更改:
- sudo systemctl restart ssh
复制代码 或者:
(6)测试配置
在进行这些更改之前,发起保持一个现有的SSH会话打开,以便在配置出现题目时进行修复。更改完成后,尝试从客户端使用SSH密钥登录服务器:
- ssh username@server_ip_address
复制代码 (7)确认
确保你已经成功通过SSH密钥登录,而且密码登录已经被克制。尝试使用密码登录,应该会被拒绝。
总结:
- 查抄服务器状态,找到异常;
- 停止相关进程,删除相关文件;
- 修改强密码;
- 开启防火墙;
- 修改SSH默认端口(或者也可以关闭密码登录,使用凭据登录)。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |