在服务器安全事件中,攻击者获取初始访问权限后,最常见的行为之一就是创建后门账户或利用合法账户进行异常登录,以维持长期、隐蔽的访问。对于运维和安全人员来说,及时发现并清除这些后门,是止损和溯源的关键环节。本文将从实战角度出发,系统梳理 Linux 后门账户的常见形式、异常登录的排查思路,以及自动化检测与加固建议。
一、攻击者常用的后门账户手法
攻击者建立后门账户的方式多种多样,了解这些手法有助于我们针对性地排查。
1. 直接创建高权限账户
最粗暴的方式是直接添加一个 UID 为 0 的账户,或将其加入 sudo、wheel 组。
# 攻击者常用命令示例
useradd -ou 0 -g 0 hacker
echo "hacker:P@ssw0rd" | chpasswd
usermod -aG sudo hacker
排查时需重点关注 /etc/passwd 中 UID 为 0 的账户,以及 /etc/group 中 sudo、wheel、adm 等组的成员。
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-data、nginx)启动的 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
五、安全加固建议
排查清除后门只是第一步,更重要的是建立防护机制,防止再次被入侵。
- 最小权限原则:严格控制
sudo权限,禁止普通用户随意使用su。 - 禁用密码登录:SSH 仅允许密钥登录,关闭
PermitRootLogin。 - 文件完整性监控:使用 AIDE、Tripwire 等工具监控
/etc/passwd、/etc/shadow、/etc/group等关键文件。 - 日志集中管理:将日志实时发送至远程日志服务器,防止本地日志被清除。
- 定期巡检:将上述排查命令纳入日常巡检脚本,结合告警机制及时发现异常。
- 入侵检测:部署 OSSEC、Wazuh 等 HIDS,对异常登录和后门账户进行实时告警。
结语
Linux 后门账户与异常登录排查是一项需要耐心和细致的工作。攻击者的手法不断演进,从简单的 useradd 到隐蔽的 PAM 后门、ld.so.preload 劫持,排查思路也需要不断更新。核心原则是:建立基线、持续监控、快速响应。只有将排查工作常态化、自动化,才能在安全事件发生时第一时间发现并处置,将损失降到最低。
未经允许不得转载:任鹏个人博客 » Linux 后门账户与异常登录排查实战指南


朋友圈点赞图在线生成源码