家用住宅主机Linux登录日志审计异常账号
为什么家用主机也要审计登录日志
很多朋友觉得只有企业服务器才需要看登录日志,其实家用住宅主机同样容易成为扫描和攻击目标。
一旦你的Linux主机有公网IP或者开启了SSH端口,每天都有数不清的自动脚本尝试登录。登录日志审计就是帮你从这些记录里筛出异常账号——比如陌生用户登录、凌晨时段的登录、多次密码错误等。
本文带你从零开始,直接在命令行操作,不出错。
准备工作:连接主机并确认日志文件
开始之前,确保你已通过SSH或直接登录到家用Linux主机。
大部分发行版(Ubuntu、Debian、CentOS)登录审计记录存放在 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL/CentOS)。
执行以下命令确认文件存在:
ls -lh /var/log/auth.log 2>/dev/null || ls -lh /var/log/secure
如果文件不存在或权限不足,加 sudo 重试。
文件大小正常即可继续。
核心操作:三步找出异常账号
1. 查看最近登录记录
用 last 命令列出所有登录历史(包括当前会话):
last -10
输出包含用户名、登录IP、时间。
重点看这些信息:
- 不认识的用户名 – 例如
test、admin、guest。 - 奇怪的IP – 非你家庭宽带的公网IP或内网IP(如192.168.x.x)。
- 异常时间 – 凌晨3点、工作时段你正在睡觉时。
2. 检查系统已存在的账号
运行以下命令查看所有本地用户:
cat /etc/passwd | grep '/home' | awk -F: '{print $1}'
比对列出的用户是否都是你自己创建的。
如果多出不明名称(如 mysql、nobody 等系统账号属正常,但 dbadmin、backup 就得警惕)。
用 id [用户名] 查看其组和权限。
3. 审查登录失败记录
再跑 lastb 命令看最近登录失败的记录:
lastb -10
如果某个IP连续失败几十次,说明被暴力破解。
继续配合 grep 搜索可疑字符串:
grep "Failed password" /var/log/auth.log | head -20
这条命令能直接告诉你哪些账号被尝试登录。
注意看用户名、源IP和端口。
避坑指南:日志轮转与权限
- 日志被轮转:系统可能每天或每周旧日志被压缩改名(如
auth.log.1、auth.log.2.gz)。如果查不到足够记录,用zcat /var/log/auth.log.1.gz 2>/dev/null | head -20查看压缩文件。 - 权限不足:普通用户不能直接读auth.log,需要用
sudo或切换到 root。请养成习惯,审计时加上sudo。 - 误报处理:某些正常软件(如 Fail2ban、sssd)也会产生登录日志,先排除自己配置的服务。如果看到
systemd-user或sshd[xxx]都属正常。
效果验证与日常巡检
为了确认审计有效,你可以自己动手做个“模拟攻击”:
# 故意输错密码登录(远程)
ssh nonexist@你的IP
# 然后在主机上执行
sudo lastb | grep nonexist
能看到记录就说明审计配置正常。
更省事的办法是写个定时任务,每天将异常登录摘要发到你的邮箱或Telegram。
例如用 crontab -e 添加:
0 8 * * * sudo lastb -20 | mail -s "昨夜的失败登录记录" your@email.com
如果你在日志中发现无法解释的账号或IP,建议立即修改SSH端口、启用密钥登录、安装Fail2ban。登录日志审计是家用主机安全的第一步,坚持每周看一次,比中毒后再处理省心得多。