大家在使用ECS云服务器的过程中,有时会遇到中毒的情况,碍于技术和经验问题,想要排除病毒却无从下手,亦或者是做了清除但是又发现复发。下面为大家提供一些排查方法和预防措施,以供参考。
说明:本文是拿 CentOS 7.X 系统做说明,病毒的排查思路和预防措施都是一样的,请自行在其它版本的系统上变换命令操作。
病毒的基础排查
第1步:检查计划任务
黑客入侵服务器后,为了让病毒脚本持续执行,通常会在计划任务配置文件里面写入定时执行的脚本任务。
第2步:解锁系统文件
第3步:检查开机启动文件
第4步:检查开机启动服务
第5步:检查环境变量文件
第6步:检查二进制命令文件
根据处理经验,笔者列出了一些常见的恶意命令,供大家参考:
/usr/local/bin/pnscan
/usr/bin/masscan
/usr/bin/execute
/usr/bin/where
/usr/bin/crond
/usr/bin/bioset
/usr/bin/bsd-port


第7步:检查内核文件
第8步:检查密钥登录文件
第9步:检查账户信息
第10步:检查DNS设置文件
第11步:检查临时目录
病毒的进阶排查
做了上述的基础排查之后,还不一定完全能根除,黑客是很狡猾的。有时黑客还会替换系统的命令,例如替换了ps、top、netstat等系统原有的命令,以假乱真。这时我们每次去执行ps、top、netstat等命令,都相当于运行一次黑客的恶意命令,这些被替换了的命令会让我们看不到占用CPU高的恶意进程。
此时我们可以安装clamav软件,来检测黑客是否植入(篡改)了二进制命令。
第1步:安装clamav
yum -y install epel-release
yum -y install clamav clamd clamav-update clamav-devel clamav-data

第2步:更新clamav病毒库
freshclam
第3步:使用clamav扫描指定的目录
clamscan –ri /usr/sbin/ --move=/root/infected -l /var/log/clamscan.log
命令常用参数解释:

第4步:重新安装系统命令
假如我们用clamscan扫描到了被篡改的二进制命令,并利用--move参数将其移动到了指定的目录中,此时我们需要重新安装这些二进制命令,从而再去发现被隐藏的恶意进程。
yum -y install glibc e2fsprogs procps lsof iproute net-tools coreutils curl wget findutils procps-ng util-linux rsyslog
说明:
ss命令属于iproute软件包。
chattr命令属于e2fsprogs软件包。
w、ps、top、pkill、sysctl等命令属于procps软件包。
netstat、ifconfig等命令属于net-tools软件包。
chmod、chown、ls等命令属于coreutils软件包。
黑客是如何入侵
笔者总结了大量的案例,黑客入侵的途径主要有如下几种:
第1种:弱密码
服务器或者应用程序设置的密码过于简单,例如密码设置为了 Aa123456、1qaz2wsx、passwd123 等等,这些密码极其容易被黑客暴力破解。
第2种:Redis
这是非常常见的一种入侵方式,因此笔者特意拎出来进行说明。很多人在服务器里面安装了Redis后,由于安全意识薄弱,会把Redis 6379端口对公网开放,从而被黑客扫描到后被入侵进来。
Redis入侵的原理:
- 攻击者首先扫描存在未授权访问或弱密码的Redis进行入侵。
- 攻击者入侵成功后,控制机器不仅会去下载恶意脚本,还会直接读取主机上的/root/.ssh/known_hosts和/root/.ssh/id_rsa.pub文件,从而登录信任当前主机的其它机器,并控制这些机器执行恶意指令。
Redis防护的方法:
- 为Redis的访问添加密码验证。
- 禁止外网访问Redis,或者只允许指定的IP地址访问Redis端口。
- 以普通用户身份运行Redis服务。
第3种:数据库
很多用户可能是疏忽大意,也可能是出于远程访问的需要,把数据库端口1433、3306等对公网进行了开放,导致黑客扫描到数据库端口后,对数据库进行了注入或提权入侵,进而发生删库勒索等情况。
第4步:应用程序存在漏洞
例如:Gitlab exiftool 远程命令执行漏洞、Spring Framework远程代码执行漏洞、Apache Log4j2 远程代码执行漏洞、Grafana 任意文件读取漏洞、ThinkPHP5远程代码执行高危漏洞、Windows Print Spooler远程代码执行漏洞 等等,不胜枚举。
病毒的防范措施
- 设置好ECS安全组,例如只允许指定的IP地址进行3389(远程桌面)、22(SSH)登录,避免服务器管理端口被黑客扫描或爆破。还可以考虑修改管理端口,降低被扫描入侵的风险。
- 在ECS安全组中,只放行必要的业务端口(例如80、443),其他无关端口不要放行。对于数据库端口(例如1433、3306、6379等),应设置为只允许指定的IP来连接,如无必要,建议不要对外开放。
- 服务器以及应用程序的密码应设置的尽量复杂,不要过于简单,防止被暴力破解。
- 应用程序尽量使用普通用户来运行,如不必要,不要使用管理员权限来运行。
- 应用软件应尽量使用新版本,不要用老版本的软件,老版本通常会存在已公开漏洞,容易被黑客利用。如果因业务需要,确实要安装老版本软件,请参考上述两条做好访问限制。
- 对重要服务器定期创建磁盘快照,备份数据。这样当出现系统崩溃、数据丢失、误删数据、中了勒索病毒等意外事件时,可以通过磁盘快照快速恢复数据。金钱有价,数据无价。
- 多关注各大厂商发布的安全公告,例如,阿里云安全公告、绿盟安全公告、国家信息安全漏洞库、360预警通告 等,如果正好中招,及时更新应用程序版本。
- 如果使用的是阿里云服务器,可以根据云安全中心提示,检测以及修补系统高危漏洞和应用漏洞(注意:修补漏洞前先做快照备份)。
- 如果资金允许,可以考虑使用"漏洞扫描"来扫描系统和网站是否存在漏洞。根据扫描结果,修复对应漏洞,加固服务器和网站的安全,从而防患于未然。
- 还可以在网站前端部署Web应用防火墙,形成"用户 --> Web应用防火墙 --> 源站Web服务器"这样的访问架构。这样当黑客攻击网站时,中间的Web应用防火墙可以识别并阻断黑客的攻击行为。