Linux服务器中了病毒后的清理方法

简介: Linux服务器中了病毒后的清理方法

大家在使用ECS云服务器的过程中,有时会遇到中毒的情况,碍于技术和经验问题,想要排除病毒却无从下手,亦或者是做了清除但是又发现复发。下面为大家提供一些排查方法和预防措施,以供参考。

说明:本文是拿 CentOS 7.X 系统做说明,病毒的排查思路和预防措施都是一样的,请自行在其它版本的系统上变换命令操作。


病毒的基础排查


第1步:检查计划任务


黑客入侵服务器后,为了让病毒脚本持续执行,通常会在计划任务配置文件里面写入定时执行的脚本任务。

检查命令

说明

ls -l /var/spool/cron/*

查看用户级计划任务配置。有的人喜欢用 crontab -l 命令来排查,这样做不全面,因为 crontab -l 命令只是查看当前登录用户的计划任务,无法查看其他用户的计划任务。而用左侧这个命令,可以查看所有用户设置的计划任务。

ls -l /etc/cron.d/

如果发现该目录下存在未见过的脚本要格外留意。

ls -l /etc/cron.hourly/

该目录下的脚本会每小时执行一次。

ls -l /etc/cron.daily/

该目录下的脚本会每天执行一次。

ls -l /etc/cron.weekly/

该目录下的脚本会每周执行一次。

ls -l /etc/cron.mouthly/

该目录下的脚本会每月执行一次。

cat /etc/crontab

查看系统级计划任务配置。


第2步:解锁系统文件

检查命令

说明

chattr -iRa /usr/ /etc/

黑客入侵系统后,经常会执行chattr命令为恶意脚本文件加上隐藏属性,从而导致我们无法修改、删除这些恶意脚本。此时需要用chattr命令先去掉这些隐藏属性,然后再修改、删除。


第3步:检查开机启动文件

检查命令

说明

cat /etc/rc.d/rc.local

由于系统会在开机时自动执行/etc/rc.d/rc.local文件里面的命令,因此也常常被黑客利用。


第4步:检查开机启动服务

检查命令

说明

ls -l /etc/systemd/system/

ls -l /etc/systemd/system/multi-user.target.wants/

黑客通常会把恶意命令做成一个开机启动服务项,让其随着系统重启自动执行。我们一定要仔细观察这两个目录下面的每个启动项。

ls -lA /etc/rc.d/init.d/

这个目录有时也会被黑客放入恶意脚本,也记得查看。


第5步:检查环境变量文件

检查命令

说明

cat /etc/profile

cat /etc/bashrc

cat ~/.bash_profile

cat ~/.bash_login

cat ~/.bashrc

这些文件都是系统和用户的环境变量配置文件,黑客有时会在里面写入恶意命令,当系统加载环境变量配置文件时,恶意命令也会随之运行。

cat /etc/ld.so.preload

通过配置该文件,可以让程序在运行之前,优先加载某些动态链接库。部分木马正是利用此文件的功能,修改该了文件,在里面添加恶意so文件,从而达到了隐藏挖矿进程的目的。这也就是为什么服务器中毒了,CPU使用率很高,但是却看不到占用CPU高的进程的原因。

默认该文件是空的,如果发现该文件里面有内容,则可能是黑客植入的,我们需要把该文件中列出的对应路径下的so文件全部删除掉,最后再清空ld.so.preload文件即可。


第6步:检查二进制命令文件

检查命令

说明

ls -Athl /usr/bin

ls -Athl /usr/sbin

根据修改时间来查看二进制命令,新文件在最前,旧文件在后。

通常黑客入侵服务器后,会植入一些二进制命令,这些命令文件的日期较新,我们可以根据这个特征,把新文件优先列出来,仔细辨别是否为恶意命令。

ls -AShl /usr/bin

ls -AShl /usr/sbin

根据文件大小来查看二进制命令,大文件在最前,小文件在后。

通常黑客入侵服务器后,会植入一些二进制命令,这些二进制命令的体积往往比较大,远超过系统命令的大小。我们可以根据这个特征,把大文件优先列出来,仔细辨别是否为恶意命令。

find /usr/bin/ -iname ".*" -ls

find /usr/sbin/ -iname ".*" -ls

列出/usr/bin/、/usr/sbin/等目录下的隐藏文件。

黑客有时会把恶意命令进行隐藏,我们可以通过左侧这两个查找命令,把隐藏文件全部列出来。


根据处理经验,笔者列出了一些常见的恶意命令,供大家参考:

/usr/local/bin/pnscan

/usr/bin/masscan
/usr/bin/execute

/usr/bin/where

/usr/bin/crond

/usr/bin/bioset

/usr/bin/bsd-port


第7步:检查内核文件

检查命令

说明

cat /etc/sysctl.conf

黑客入侵服务器后,还会修改内核配置文件,有时会添加如下参数:

vm.nr_hugepage

该参数的作用是用来设置大内存页,默认该参数的值是0。黑客有时会设置该参数来优化内存性能,来为挖矿程序的运行提供最大内存资源。也正是由于该参数的存在,会导致系统重启之后,很多服务无法正常加载运行,从而导致系统长时间卡在服务加载界面。


第8步:检查密钥登录文件

检查命令

说明

cat /root/.ssh/authorized_keys

黑客入侵系统后,通常会在此文件中写入公钥,以便黑客可以免密登录系统。我们需要仔细辨别该文件的公钥内容,去伪留真。


第9步:检查账户信息

检查命令

说明

cat /etc/passwd |grep -i /bin/bash

列出所有具有登录系统权限的用户名。有时黑客会创建后门登录账户,以便其持续入侵,需要我们来辨别。


第10步:检查DNS设置文件

检查命令

说明

cat /etc/hosts

cat /etc/resolv.conf

有时黑客会修改DNS解析设置文件,以便解析某些恶意域名。

我们需要检查该文件进行确认,如果黑客确实修改了,则要进行配置还原,改回成系统默认的DNS地址,否则可能会影响我们访问网站的速度。


第11步:检查临时目录

检查命令

说明

ls -Al /tmp

ls -Al /var/tmp

有时黑客会把恶意病毒文件或恶意脚本,放置到这两个临时目录中,需要我们仔细查看加以辨别。

ls -Al /dev/shm

/dev/shm是Linux系统利用内存虚拟出来的一个目录,目录中的文件都保存在内存中,效率非常高。也就是往这个目录写东西,仅写在内存里,不会持久化到磁盘。系统重启后,文件消失。

有时黑客也会把病毒文件或脚本藏到这个临时目录里面。


病毒的进阶排查


做了上述的基础排查之后,还不一定完全能根除,黑客是很狡猾的。有时黑客还会替换系统的命令,例如替换了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

命令常用参数解释:

参数

说明

-r

递归扫描,也就是扫描指定的目录及其所有的子目录。

-i

只显示被感染的可疑文件。

-l "FILE"

将扫描的结果保存到指定的文件中,以便事后查看。

--move=DIRECTORY

将扫描到的可疑文件移动到指定的目录中。


第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入侵的原理:

  1. 攻击者首先扫描存在未授权访问或弱密码的Redis进行入侵。
  2. 攻击者入侵成功后,控制机器不仅会去下载恶意脚本,还会直接读取主机上的/root/.ssh/known_hosts和/root/.ssh/id_rsa.pub文件,从而登录信任当前主机的其它机器,并控制这些机器执行恶意指令。


Redis防护的方法:

  1. 为Redis的访问添加密码验证。
  2. 禁止外网访问Redis,或者只允许指定的IP地址访问Redis端口。
  3. 以普通用户身份运行Redis服务。


第3种:数据库

很多用户可能是疏忽大意,也可能是出于远程访问的需要,把数据库端口1433、3306等对公网进行了开放,导致黑客扫描到数据库端口后,对数据库进行了注入或提权入侵,进而发生删库勒索等情况。


第4步:应用程序存在漏洞

例如:Gitlab exiftool 远程命令执行漏洞、Spring Framework远程代码执行漏洞、Apache Log4j2 远程代码执行漏洞、Grafana 任意文件读取漏洞、ThinkPHP5远程代码执行高危漏洞、Windows Print Spooler远程代码执行漏洞 等等,不胜枚举。


病毒的防范措施


  1. 设置好ECS安全组,例如只允许指定的IP地址进行3389(远程桌面)、22(SSH)登录,避免服务器管理端口被黑客扫描或爆破。还可以考虑修改管理端口,降低被扫描入侵的风险。


  1. 在ECS安全组中,只放行必要的业务端口(例如80、443),其他无关端口不要放行。对于数据库端口(例如1433、3306、6379等),应设置为只允许指定的IP来连接,如无必要,建议不要对外开放。


  1. 服务器以及应用程序的密码应设置的尽量复杂,不要过于简单,防止被暴力破解。


  1. 应用程序尽量使用普通用户来运行,如不必要,不要使用管理员权限来运行。


  1. 应用软件应尽量使用新版本,不要用老版本的软件,老版本通常会存在已公开漏洞,容易被黑客利用。如果因业务需要,确实要安装老版本软件,请参考上述两条做好访问限制。


  1. 对重要服务器定期创建磁盘快照,备份数据。这样当出现系统崩溃、数据丢失、误删数据、中了勒索病毒等意外事件时,可以通过磁盘快照快速恢复数据。金钱有价,数据无价。


  1. 多关注各大厂商发布的安全公告,例如,阿里云安全公告绿盟安全公告国家信息安全漏洞库360预警通告 等,如果正好中招,及时更新应用程序版本。


  1. 如果使用的是阿里云服务器,可以根据云安全中心提示,检测以及修补系统高危漏洞和应用漏洞(注意:修补漏洞前先做快照备份)。


  1. 如果资金允许,可以考虑使用"漏洞扫描"来扫描系统和网站是否存在漏洞。根据扫描结果,修复对应漏洞,加固服务器和网站的安全,从而防患于未然。


  1. 还可以在网站前端部署Web应用防火墙,形成"用户 --> Web应用防火墙  --> 源站Web服务器"这样的访问架构。这样当黑客攻击网站时,中间的Web应用防火墙可以识别并阻断黑客的攻击行为。


最后说明

以上是笔者的个人实战总结,如有不足之处,请大家多多指正。

相关文章
|
3月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
453 8
|
3月前
|
弹性计算 定位技术 数据中心
阿里云服务器配置选择方法:付费类型、地域及CPU内存配置全解析
阿里云服务器怎么选?2025最新指南:就近选择地域,降低延迟;长期使用选包年包月,短期灵活选按量付费;企业选2核4G5M仅199元/年,个人选2核2G3M低至99元/年,高性价比爆款推荐,轻松上云。
210 11
|
3月前
|
弹性计算
阿里云8核16G云服务器收费标准:最新价格及省钱购买方法整理
阿里云8核16G云服务器价格因实例类型而异。计算型c9i约743元/月,一年6450元(7折);通用算力型u1约673元/月,一年仅需4225元(5.1折)。实际价格享时长折扣,详情见ECS官网。
|
3月前
|
域名解析 弹性计算 负载均衡
给阿里云服务器加速的方法有哪些?
本文介绍如何通过阿里云CDN加速、ECS网络优化及SLB负载均衡三种方法提升服务器响应速度。涵盖具体操作步骤,助力用户优化访问性能。
|
4月前
|
弹性计算 定位技术 数据中心
阿里云服务器选择方法:配置、地域及付费模式全解析
2025阿里云服务器选购指南:就近选择地域以降低延迟,企业用户优选2核4G5M带宽u1实例,仅199元/年;个人用户可选2核2G3M带宽ECS,99元/年起。长期稳定业务选包年包月,短期或波动场景用按量付费,轻松搭建网站首选高性价比配置。
|
5月前
|
弹性计算 小程序 容灾
2025购买阿里云服务器配置选择方法:企业+个人+学生攻略
2025年阿里云服务器购买省钱攻略,涵盖个人、中小企业及高性能配置推荐。个人用户优选38元轻量或99元ECS,企业用户选199元2核4G服务器,游戏用户适合4核16G或8核32G配置,详情请参考最新活动及攻略。
1160 11
|
5月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
1695 10
|
5月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
5月前
|
缓存 监控 前端开发
详述uniapp项目部署于Nginx服务器的配置优化方法。
综上所述,uniapp项目部署于Nginx的优化方法多种多样,应根据实际情况灵活地采取合适的策略。配置后持续监控和调试,适时调整配置以保持最佳性能,并确保随着应用需求和访问模式的变化,服务器配置得到适当的更新和优化。
254 0
|
3月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
304 10