Linux 后门账户与异常登录排查实战指南

在服务器安全事件中,攻击者获取初始访问权限后,最常见的行为之一就是创建后门账户利用合法账户进行异常登录,以维持长期、隐蔽的访问。对于运维和安全人员来说,及时发现并清除这些后门,是止损和溯源的关键环节。本文将从实战角度出发,系统梳理 Linux 后门账户的常见形式、异常登录的排查思路,以及自动化检测与加固建议。

一、攻击者常用的后门账户手法

攻击者建立后门账户的方式多种多样,了解这些手法有助于我们针对性地排查。

1. 直接创建高权限账户

最粗暴的方式是直接添加一个 UID 为 0 的账户,或将其加入 sudowheel 组。

# 攻击者常用命令示例
useradd -ou 0 -g 0 hacker
echo "hacker:P@ssw0rd" | chpasswd
usermod -aG sudo hacker

排查时需重点关注 /etc/passwd 中 UID 为 0 的账户,以及 /etc/groupsudowheeladm 等组的成员。

2. 修改现有账户属性

攻击者可能不新建账户,而是直接修改已有普通账户的 UID 或 Shell,使其具备登录或提权能力。

# 将普通用户 UID 改为 0
usermod -u 0 -o webuser
# 给系统账户添加可登录 Shell
usermod -s /bin/bash ftpuser

3. 添加 SSH 公钥实现免密登录

这是最隐蔽且最常见的持久化方式之一。攻击者将公钥写入目标用户的 ~/.ssh/authorized_keys

# 排查所有用户的 authorized_keys
find / -name "authorized_keys" -exec ls -la {} \; 2>/dev/null
find / -name "authorized_keys" -exec cat {} \; 2>/dev/null

4. 利用 PAM 后门与隐藏账户

高级攻击者可能通过修改 PAM 配置、/etc/shadow 中的空密码账户,或使用 ld.so.preload 劫持等方式隐藏后门。这类手法排查难度较大,需要结合文件完整性校验。

二、后门账户排查清单

以下命令建议在应急响应时逐条执行,并保存输出作为证据。

1. 检查 UID 为 0 的账户

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

正常情况下应只有 root 一个账户。若出现其他账户,需立即核实。

2. 检查可登录账户

# 查看所有拥有有效 Shell 的账户
grep -E "/bin/(bash|sh|zsh)$" /etc/passwd
# 查看空密码账户
awk -F: '($2 == "") {print $1}' /etc/shadow

3. 检查特权组成员

grep -E "^(sudo|wheel|adm)" /etc/group

4. 检查最近创建或修改的账户

# 查看 /etc/passwd 最近修改时间
stat /etc/passwd /etc/shadow /etc/group
# 查看家目录创建时间
ls -lat /home/

5. 检查 SSH 授权密钥

for user in $(cut -f1 -d: /etc/passwd); do
  home=$(eval echo ~$user)
  [ -f "$home/.ssh/authorized_keys" ] && echo "=== $user ===" && cat "$home/.ssh/authorized_keys"
done

三、异常登录行为排查

后门账户往往伴随异常登录行为,以下维度值得重点关注。

1. 分析登录日志

# 查看成功登录记录
last -aiF | head -50
# 查看失败登录记录
lastb -aiF | head -50
# 查看当前登录用户
w
who -a

重点关注:非工作时间登录、来自异常 IP 的登录、陌生用户名的登录。

2. 检查 SSH 登录日志

# Debian/Ubuntu
grep "Accepted" /var/log/auth.log | tail -50
# CentOS/RHEL
grep "Accepted" /var/log/secure | tail -50

若日志被清空或篡改,可检查 /var/log/wtmp/var/log/btmp/var/log/lastlog 的修改时间与完整性。

3. 检查进程与网络连接

# 查看异常进程
ps auxf
# 查看监听端口
ss -tunlp
# 查看已建立连接
ss -tnp state established

重点关注:由 Web 服务用户(如 www-datanginx)启动的 Shell 进程、异常外联 IP、非标准端口监听。

4. 检查计划任务与自启动

# 用户级计划任务
for user in $(cut -f1 -d: /etc/passwd); do crontab -l -u $user 2>/dev/null; done
# 系统级计划任务
ls -la /etc/cron* /etc/cron.d/ /var/spool/cron/
# systemd 自启动
systemctl list-unit-files --type=service | grep enabled

四、自动化检测脚本示例

以下脚本可作为日常巡检的基础工具,建议根据实际环境扩展。

#!/bin/bash
echo "=== UID 为 0 的账户 ==="
awk -F: '($3 == 0) {print $1}' /etc/passwd

echo "=== 可登录账户 ==="
grep -E "/bin/(bash|sh|zsh)$" /etc/passwd

echo "=== 特权组成员 ==="
grep -E "^(sudo|wheel|adm)" /etc/group

echo "=== 空密码账户 ==="
awk -F: '($2 == "") {print $1}' /etc/shadow

echo "=== authorized_keys 文件 ==="
find / -name "authorized_keys" -exec ls -la {} \; 2>/dev/null

echo "=== 最近登录记录 ==="
last -aiF | head -20

echo "=== 监听端口 ==="
ss -tunlp

五、安全加固建议

排查清除后门只是第一步,更重要的是建立防护机制,防止再次被入侵。

  1. 最小权限原则:严格控制 sudo 权限,禁止普通用户随意使用 su
  2. 禁用密码登录:SSH 仅允许密钥登录,关闭 PermitRootLogin
  3. 文件完整性监控:使用 AIDE、Tripwire 等工具监控 /etc/passwd/etc/shadow/etc/group 等关键文件。
  4. 日志集中管理:将日志实时发送至远程日志服务器,防止本地日志被清除。
  5. 定期巡检:将上述排查命令纳入日常巡检脚本,结合告警机制及时发现异常。
  6. 入侵检测:部署 OSSEC、Wazuh 等 HIDS,对异常登录和后门账户进行实时告警。

结语

Linux 后门账户与异常登录排查是一项需要耐心和细致的工作。攻击者的手法不断演进,从简单的 useradd 到隐蔽的 PAM 后门、ld.so.preload 劫持,排查思路也需要不断更新。核心原则是:建立基线、持续监控、快速响应。只有将排查工作常态化、自动化,才能在安全事件发生时第一时间发现并处置,将损失降到最低。

未经允许不得转载:任鹏个人博客 » Linux 后门账户与异常登录排查实战指南

赞 (0) 打赏

评论 0

取消
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏