以下文章来源于HelloCoder ,作者HaC
一、查日志
-
无法通过客户端 SSH 远程登录时,可以通过 VNC 登录服务器。
-
查看 sshd_config 文件
/etc/ssh/sshd_config
PasswordAuthentication no #表示不允许密码登录
重启sshd:systemctl restart sshd
- 查看密钥 authorized_keys 文件,有无异常
vi /root/.ssh/authorized_keys
- 查看登录日志:使用
last
、history
、lastb
命令
last #查看所有登录的ip
history #查看操作的命令记录
lastb #用于列出登录系统失败的用户相关信息**lastb 结果解释如下: **
第一列:用户名
第二列:终端位置
第三列:登录ip或者内核
第四列:开始时间
第五列:结束时间(still login in 还未退出 down 直到正常关机 crash 直到强制关机)
第六列:持续时间
二、找木马
- 使用
top
命令看一下(top
可能看起来正常的亚子,因为top
命令很可能已经被入侵者修改) - busybox 命令
运行busybox top可以看到隐藏的占用 CPU 的进程,原始的top已经被修改,不能显示病毒的进程,必须在busybox中执行。
安装busybox :
wget https://tao-1257166515.cos.ap-chengdu.myqcloud.com/busybox
cp busybox /usr/bin/
chmod 777 /usr/bin/busybox
busybox top
看到 CPU 占用率达到了近 100%,木马无疑~~~
- 注意,好木马不输入全称,ls、ll、lsattr 文件查看命令是根本不会显示木马文件。。。。
三、删木马
- 删除
authorized_keys
文件的公钥,若文件被加了 +i 锁,不允许删除,使用chattr
命令改回来:
chattr -i authorized_keys # 去掉 -i 锁
chattr +i /etc/authorized_keys #> +i 表示文件不能删除,不能更改,不能移动
-
然鹅,服务器被黑,删 chattr 命令是常见的操作,所以如果服务器被黑,那么。。。
-
只能手动把 chattr 装回来,centos 安装过程:
yum install e2fsprogs # 安装chattr
which chattr
chattr -i authorized_keys # 使用 chattr 命令去掉 -i 锁
- kill 木马。
四、找到攻击的源头——Redis
Redis 开放了端口而且没有设置密码。出现了奇怪的键值。
网上找到了以下资料:
**Redis Crackit 漏洞: **
黑客远程访问 redis 服务,清空 redis 数据库后写入他自己的 ssh 登录公钥,然后将 redis 数据库备份为 /root/.ssh/authotrized_keys。 这就成功地将自己的公钥写入到 ssh 的
authotrized_keys,无需密码直接 root 登录被黑的主机。
五、预防
服务器被攻击,主要的原因还是暴露的公网端口太多,特别是 Redis6789、MySQL3306 这种,还有就是服务器密码过于简单。
预防措施:
1)服务器
通过修改 /etc/ssh/sshd_config 文件:
- 关闭密码登录,只允许秘钥对登录。
- 改换 ssh 默认端口,防止暴力撞库被破解。
- 禁用 root 账户直接登录,开放特定的 IP 访问。
2)应用
- Redis 只允许本地访问,修改默认端口,不暴露给所有 IP, Redis 默认 bind 127.0.0.1 是有原因的。
- MySQL 只对需要的 IP 开放访问权限。
- 设置端口的防火墙访问规则。
- 如果想要更安全,可以使用跳板机、堡垒机访问。
3)备份
- 定期备份数据,定期备份快照。