当前位置:网站首页 >  攻略

Linux服务器隐蔽后门排查实战:从发现到彻底清除

时间:2026年06月15日 16:27:43 来源:易频IT社区

一、排查前的准备工作

在进行后门排查之前,首先要确保当前的操作环境是干净、可控的。攻击者可能会替换系统命令(如ls、ps、netstat)来隐藏自己的行踪。建议在开始排查前,将常用的系统命令静态备份到其他目录,或者直接使用busybox等静态编译的工具。如果条件允许,请将服务器断网或仅保留管理IP访问,防止攻击者在排查过程中进行对抗操作。

本文所有操作均基于Linux环境(CentOS/Ubuntu),我们将从账户、进程、网络、文件、任务计划及Rootkit检测六个维度进行全方位扫描。

二、异常账户与特权用户排查

攻击者创建后门账户是最常见的持久化手段。我们需要重点检查UID为0的超级用户、空口令账户以及sudoers文件的异常变更。

1. 检查UID为0的账户

在Linux系统中,UID为0代表超级用户权限。正常情况下只有root用户的UID为0。如果发现其他用户UID为0,说明系统已被严重入侵。

执行以下命令查看所有账户及其UID:

``` awk -F: '$3==0 {print $1}' /etc/passwd ```

操作指引:如果输出结果中除了root之外还有其他用户(例如admin、test等),必须立即锁定或删除该账户。可以使用命令 usermod -L username 锁定账户,或 userdel -r username 彻底删除。

2. 检查空口令账户

空口令账户是攻击者利用弱口令入侵后留下的“后门”之一。执行以下命令检测是否存在空口令用户:

``` awk -F: 'length($2)==0 {print $1}' /etc/shadow ```

操作指引:如果该命令有输出,说明对应账户没有设置密码。请立即执行 passwd username 为其设置高强度密码,或直接删除该账户。

3. 审查sudoers文件

攻击者可能会给普通用户授予免密sudo权限,以便后续提权。检查/etc/sudoers文件是否有异常配置:

``` cat /etc/sudoers | grep -v "^" | grep -v "^$" ```

操作指引:重点关注包含 NOPASSWD 的配置行。除了管理员明确配置的运维账户外,任何普通用户拥有 NOPASSWD: ALL 权限都是极度危险的信号。使用 visudo 命令编辑该文件,删除可疑行。

三、恶意进程与网络连接排查

进程和端口是后门程序“活着”的证明。攻击者通常会通过反向连接Shell或者监听特定端口来等待指令。

1. 识别异常进程

使用ps命令结合grep查看当前运行的进程,重点关注没有命令行参数或路径可疑的进程。

``` ps -ef --sort=-pid | head -n 20 ```

操作指引:仔细查看进程列表。重点寻找:

  • 进程名伪装:例如将进程命名为 ./kworker/usr/sbin/sshd 但路径不对(如 /tmp/sshd)。
  • 孤儿进程:父进程PID(PPID)为1但进程名陌生的守护进程。
  • CPU/内存占用:使用 top 命令查看,如果某个不知名进程持续占用高CPU或网络资源,直接记录PID。

如果发现可疑进程PID,可以使用以下命令查看其启动的完整路径:

``` ls -l /proc/[PID]/exe ```

2. 检查网络连接

检查服务器当前建立的TCP/UDP连接,特别是ESTABLISHED(已建立)和LISTEN(监听)状态。

``` netstat -antlp ```

或者使用更现代的ss命令:

``` ss -tulnp ```

操作指引:重点分析以下情况:

  • 异常外联:服务器主动向非业务IP(如陌生的境外IP)发送数据,且端口不常见(如4444、6666等)。
  • 非法监听:在非业务端口(如12345、54321)上存在LISTEN状态的进程。

一旦发现异常连接,记录下对应的PID和本地端口,使用 kill -9 [PID] 强制结束进程。

四、文件系统与Web后门排查

后门文件通常隐藏在系统目录或Web目录中。我们需要检查最近变动的文件、SUID文件以及Webshell特征。

1. 查找近期变动的文件

攻击者在植入后门时必然会产生文件创建或修改操作。查找过去24小时内被修改的文件:

``` find / -mtime -1 -type f -not -path "/proc/" -not -path "/sys/" -not -path "/run/" ```

操作指引:如果范围太大,可以缩小到敏感目录,例如 /tmp, /var/tmp, /etc, /root 以及 Web 根目录(如 /var/www/html)。重点关注 /tmp 目录下的可执行文件,Linux默认不在此执行程序,出现文件极大概率是恶意脚本。

2. 检测SUID/SGID特权文件

Linux服务器隐蔽后门排查实战:从发现到彻底清除

攻击者可能给普通程序加上SUID位,运行时自动获得root权限。

``` find / -perm -4000 -o -perm -2000 -type f -not -path "/proc/" -ls ```

操作指引:查看输出列表,剔除系统自带的命令(如/bin/su, /bin/ping, /usr/bin/passwd)。如果在 /tmp, /var 或用户家目录下发现带有SUID权限的文件,立即删除。

3. Webshell特征扫描

如果是Web服务器,攻击者往往会上传大马或小马。在Web根目录下搜索常见的Webshell特征代码。

``` grep -rE "eval\(|base64_decode|gzinflate|assert\(|system\(|shell_exec\(|passthru\(|preg_replace.\/e" /var/www/html/ ```

操作指引:此命令会匹配出包含PHP危险函数的文件。请逐个人工复核这些文件。正常的业务代码极少使用 base64_decode 配合 eval。确认是Webshell后,直接删除文件,并分析其访问日志查找攻击入口。

五、任务计划与启动项排查

为了确保持久化,攻击者会修改系统定时任务或启动脚本,确保服务器重启或特定时间后门能自动运行。

1. 检查用户级和系统级Crontab

查看当前用户的定时任务:

``` crontab -l ```

查看系统级定时任务:

``` cat /etc/crontab ls /etc/cron.d/ ```

操作指引:检查所有定时任务列表。任何包含 /tmp, /dev/shm, wget, curl 下载远程脚本并执行的任务都是恶意的。删除对应的cron行即可。

2. 检查开机启动项

检查 /etc/rc.local 文件,这是旧版Linux常用的启动脚本:

``` cat /etc/rc.local ```

检查Systemd服务:

``` systemctl list-unit-files | grep enabled ```

操作指引:/etc/rc.local 中寻找启动脚本的路径。对于Systemd,重点查看那些服务名为乱码、路径指向 /tmp 或未知目录的服务。使用 systemctl stop [service_name]systemctl disable [service_name] 禁用服务。

六、Rootkit深度检测

如果攻击者使用了内核级Rootkit,上述命令可能被劫持,显示虚假信息。此时需要借助专业工具进行检测。

1. 使用chkrootkit检测

chkrootkit是经典的Rootkit检测工具。安装并运行:

``` CentOS/RHEL yum install chkrootkit -y Ubuntu/Debian apt-get install chkrootkit -y 运行检测 chkrootkit ```

操作指引:观察输出结果。如果出现 INFECTED 字样,意味着检测到了已知的Rootkit特征。注意,偶尔会有误报(如 "Checking `bindshell'... INFECTED (PORTS: 1147)"),请结合端口号是否被业务占用来判断。

2. 使用rkhunter检测

rkhunter检测范围更广,包括文件属性变动。

``` 安装 yum install rkhunter -y 或 apt-get install rkhunter -y 更新数据并检测 rkhunter --update rkhunter --checkall --skip-keypress ```

操作指引:查看最后的警告总结。重点关注 [ Warning ] 部分中涉及系统命令被修改(如 /bin/ls has been modified)的提示。如果系统命令被篡改,建议从安装光盘或信任的备份中恢复这些二进制文件。

七、系统日志溯源分析

最后一步是通过日志确认攻击来源和入侵时间,为修补漏洞提供依据。

1. 检查登录日志

查看成功的登录记录,寻找非管理员IP的登录:

``` last ```

查看登录失败的记录,寻找暴力破解的痕迹:

``` lastb ```

2. 检查安全日志

分析Secure日志,寻找sudo提权、用户添加等关键操作:

``` grep -i "failed\|accepted\|sudo\|useradd" /var/log/secure ```

操作指引:通过日志中的时间点,结合Web服务器的访问日志(access_log),可以精准定位攻击者利用的Web漏洞URL,从而在代码层面进行修复。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图