服务器如何查看登录异常记录
学完这篇,你能在 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
第五步:加固,把异常入口关掉
这一步做补救。四个动作:
- 禁用密码登录,只用密钥:编辑
/etc/ssh/sshd_config,设PasswordAuthentication no,然后sudo systemctl restart sshd - 禁止 root 直接登录:同一文件设
PermitRootLogin no - 装 fail2ban 自动封 IP:
sudo apt install fail2ban(Debian/Ubuntu)或sudo yum install fail2ban(RHEL 系),启动后sudo systemctl enable --now fail2ban - 改 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、改默认端口
原文链接:https://www.gj0.com/thread-430.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。