服务器如何查看登录异常记录

域名注册
域名注册 正式会员超兽战士 👑年卡会员
发布于 2026-10-07 17:06 ·0 浏览 ·0 回复

学完这篇,你能在 Linux 服务器上快速查出「谁在什么时候、从哪个 IP、用什么方式登录过」,并揪出暴力破解、陌生 IP 登录等异常行为。

第一步:看当前有谁在线,确认有没有「不该在的人」

这一步确认此刻是否有人正连在你的服务器上。执行:

w
who

w 会输出三列关键信息:USER(用户名)、FROM(来源 IP,本地登录显示为空)、WHAT(正在执行的命令)。who 是精简版。如果看到一个陌生 IP 或陌生用户名正挂着,先别急着动手,记下 IP 和登录时间,进下一步追溯。

注意:w 只看得到交互式登录(SSH、终端),看不到 cron、systemd 服务这类非交互进程,别把它当成「全部活动」。

第二步:查历史登录记录,定位异常 IP 和时间

这一步把「谁登录过、登录成功还是失败」拉出来看。最常用三条命令:

last          # 成功登录的历史(读取 /var/log/wtmp)
lastb         # 失败登录的历史(读取 /var/log/btmp,需 root)
lastlog       # 每个账号最后一次登录时间(读取 /var/log/lastlog)

重点看 lastb 的输出,格式是「用户名 / 来源IP / 时间」。如果某个 IP 在短时间内出现几百上千条失败记录,基本可以判定是暴力破解。可以用管道聚合一下:

sudo lastb | awk '{print $3}' | sort | uniq -c | sort -rn | head -20

这条命令统计失败次数最多的前 20 个 IP。

注意:/var/log/btmp 需要 root 权限才能读;如果提示文件不存在,说明系统没启用失败记录,或日志已被轮转清理。

第三步:翻 SSH 日志,看认证细节

这一步拿到比 lastb 更细的信息:对方用什么认证方式、有没有登录成功、执行了什么。Debian/Ubuntu 上看:

sudo grep 'sshd' /var/log/auth.log | tail -100

CentOS/RHEL/Fedora 上看:

sudo grep 'sshd' /var/log/secure | tail -100

实时盯新登录:

sudo tail -f /var/log/auth.log | grep sshd

日志里几个关键词含义:

  • Accepted password for root from 1.2.3.4 —— 有人用密码登录成功了,重点排查这条
  • Failed password for invalid user admin from 1.2.3.4 —— 对方在猜不存在的用户名,典型扫描行为
  • Connection closed by authenticating user —— 认证失败断开
  • Accepted publickey for deploy from ... —— 用密钥登录,相对安全

快速统计失败来源:

sudo grep 'Failed password' /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head

注意:如果系统用 systemd-journald 且没装 rsyslog,可能没有 /var/log/auth.log。改用 sudo journalctl -u ssh -u sshd --since today 查看。老系统(CentOS 6 及更早)日志是 /var/log/secure,路径别记错。

第四步:确认登录后干了什么,评估影响面

这一步判断「异常登录的人有没有改东西」。查看该用户的操作历史:

cat /home/用户名/.bash_history
sudo cat /root/.bash_history

看最近被修改的文件:

sudo find /etc /usr/bin /usr/sbin -mtime -3 -type f

检查有没有被加后门账号或 SSH 公钥:

sudo grep -E ':[0-9]{4}:' /etc/passwd          # UID 为 0 的账号(除 root 外都可疑)
cat /home/用户名/.ssh/authorized_keys
sudo cat /root/.ssh/authorized_keys

第五步:加固,把异常入口关掉

这一步做补救。四个动作:

  1. 禁用密码登录,只用密钥:编辑 /etc/ssh/sshd_config,设 PasswordAuthentication no,然后 sudo systemctl restart sshd
  2. 禁止 root 直接登录:同一文件设 PermitRootLogin no
  3. 装 fail2ban 自动封 IP:sudo apt install fail2ban(Debian/Ubuntu)或 sudo yum install fail2ban(RHEL 系),启动后 sudo systemctl enable --now fail2ban
  4. 改 SSH 默认端口:/etc/ssh/sshd_config 里把 #Port 22 改成 Port 22222,改完记得放行防火墙:sudo ufw allow 22222 或 sudo firewall-cmd --add-port=22222/tcp --permanent

注意:改 SSH 端口或禁用密码登录前,务必先确认你的密钥能正常登录,并保持当前 SSH 会话不要断开,否则可能把自己锁在门外。

小结

  • w / who 看当前在线,last 看成功登录,lastb 看失败登录,lastlog 看账号最后登录时间
  • SSH 认证细节在 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL 系),没有就去 journalctl -u sshd
  • 判断暴力破解:按来源 IP 聚合统计失败次数,短时间高频即为异常
  • 发现入侵后先留证据(日志、history、文件时间),再改配置封堵,不要一上来就重启
  • 防患于未然:禁密码登录、禁 root 直连、上 fail2ban、改默认端口
版权声明:本文来自 GJ站长论坛《服务器如何查看登录异常记录》
原文链接:https://www.gj0.com/thread-430.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~