服务器查看自身登录记录的核心机制在于系统日志文件的记录与实时进程信息的追踪,无论是Linux还是Windows Server操作系统,都会在用户登录时将关键信息(如登录时间、IP地址、认证方式、终端类型)写入特定的日志文件或内存结构中,管理员通过读取这些日志文件或使用特定的查询命令,即可精准还原服务器的登录历史和当前会话状态,这不仅是日常运维的刚需,更是服务器安全审计的第一道防线。

Linux服务器查看登录记录的详细方案
在Linux环境中,查看登录记录主要依赖于对/var/log目录下特定日志文件的分析,以及利用utmp、wtmp、btmp等数据库文件的读取工具。
实时查看当前在线用户
要了解服务器当前有哪些用户登录,最直接的工具是w和who。
w命令:这是最常用的命令,它不仅显示谁在登录,还显示他们在做什么。w命令读取/var/run/utmp文件,并显示来自/proc的当前系统负载和每个用户的进程信息,输出内容包括登录用户、终端名称、远程主机、登录时间、空闲时间以及当前正在运行的进程(JCPU、PCPU、WHAT)。who命令:相比w,who的信息更为简洁,仅打印登录用户名、终端线路、登录时间以及远程主机名。
查看历史成功登录记录
要追溯过去一段时间内谁成功登录过服务器,必须使用last命令。
last命令:该命令读取/var/log/wtmp文件,该文件记录了所有的登录和注销历史,输出列表是倒序的,最近的登录记录显示在最前面,除了用户名、终端、IP和登录时间,last还能显示会话持续时长,管理员可以通过last -n 10限制输出条数,或使用last -x显示系统重启和关机记录,这对于排查因重启导致的服务中断非常有用。
监控失败的登录尝试(安全审计核心)
服务器安全审计中,查看暴力破解尝试至关重要,这需要用到lastb命令。
lastb命令:该命令读取/var/log/btmp文件,这个文件专门记录失败的登录尝试,通过执行lastb,管理员可以清晰地看到攻击者的来源IP、尝试登录的用户名以及尝试的时间频率,如果发现某个IP在短时间内有大量失败记录,应立即通过防火墙(如iptables或firewalld)将其封禁。
深度解析系统认证日志
除了上述基于二进制文件的命令,Linux系统还维护了详细的文本认证日志,这是排查SSH登录问题的终极手段。
- CentOS/RHEL系统:主要查看
/var/log/secure,该文件记录了sshd服务的所有认证细节,包括公钥验证、密码验证结果、以及PAM(可插拔认证模块)的错误信息。 - Ubuntu/Debian系统:主要查看
/var/log/auth.log与secure类似,详细记录了每一次SSH连接的建立、认证成功或失败的具体原因。 - 分析技巧:使用
grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr可以快速统计出攻击最频繁的IP地址,这是专业运维人员进行安全加固时的标准操作。
Windows Server查看登录记录的专业路径
Windows Server体系下,查看登录记录主要依赖于事件查看器(Event Viewer),其逻辑与Linux不同,是基于事件ID的日志机制。

事件查看器的核心定位
管理员需要运行eventvwr.msc打开事件查看器,登录相关的日志主要位于“Windows 日志” -> “安全”(Security)分支中,这里记录了所有与审核策略相关的事件。
关键事件ID识别
在安全日志中,通过筛选特定的事件ID(Event ID)可以快速定位登录状态:
- 事件ID 4624:表示登录成功,它详细记录了登录类型(如2表示交互式登录,10表示远程桌面登录,3表示网络登录)、目标用户名、源网络地址(IP)以及源端口。
- 事件ID 4625:表示登录失败,这是检测暴力破解攻击的关键指标,日志中会包含失败原因(如错误的用户名、错误的密码、账号被锁定等)以及发起攻击的客户端IP。
- 事件ID 4634:表示账号注销,用于计算用户的实际在线时长。
高级筛选与日志导出
面对海量的日志数据,使用“筛选当前日志”功能是必须掌握的技能,管理员可以仅勾选4624和4625,快速定位安全相关事件,为了合规性审计,通常需要将日志导出为CSV或XML格式进行归档分析。
高级监控与日志保护策略
仅仅知道如何查看日志是不够的,专业的运维必须确保日志记录本身的完整性和实时性。
部署集中式日志管理(ELK/Loki)
对于拥有多台服务器的大型集群,单机登录日志不仅难以管理,而且容易被黑客篡改,构建基于Elasticsearch、Logstash和Kibana(ELK)或Grafana Loki的集中式日志管理系统是行业标准方案,通过在每台服务器上部署Filebeat或Promtail等Agent,将/var/log/secure或Windows安全日志实时推送到中心服务器,这样,即使单台服务器被攻陷,攻击者也无法抹除在中心服务器上留存的入侵痕迹。
日志文件的防篡改保护
黑客入侵后的第一件事往往是清除/var/log/wtmp或/var/log/btmp,为了防止这种情况,可以使用chattr命令对关键日志文件添加不可变属性。

- 执行命令:
chattr +a /var/log/wtmp(只允许追加数据,不允许删除)。 - 执行命令:
chattr +i /var/log/btmp(完全不可修改,即使是root用户也无法删除,除非先移除该属性)。
这种“文件属性锁定”技术是Linux服务器安全加固中非常实用且有效的手段。
实时告警机制
结合监控工具(如Zabbix、Prometheus)或脚本,对日志进行实时监控,编写脚本每5分钟分析一次/var/log/secure,一旦检测到某个IP的失败登录次数超过10次,立即自动调用防火墙规则封禁该IP,并发送告警邮件给管理员,这种主动防御体系比事后查看日志更为重要。
服务器查看自己登录记录的能力,本质上是对系统自身审计机制的调用,在Linux端,熟练运用w、last、lastb以及分析/var/log/secure是基本功;在Windows端,掌握事件查看器中4624和4625事件ID的筛选是核心技能,真正的专业不仅在于“看”,更在于“防”,通过部署集中式日志管理、设置文件不可变属性以及构建实时自动封禁脚本,才能将登录记录转化为实实在在的安全防御力。
相关问答
Q1:如果黑客删除了Linux的wtmp文件,我还能找回登录记录吗?
A: 如果/var/log/wtmp被删除,常规的last命令将无法读取历史记录,你可以检查/var/log/secure(CentOS)或/var/log/auth.log(Ubuntu),这些文本日志文件详细记录了SSH的认证过程,虽然格式不如last直观,但包含了所有成功登录的IP和时间信息,如果服务器部署了集中式日志管理系统(如ELK Stack)或审计守护进程(auditd),日志仍然可以在备份或审计系统中找到。
Q2:如何区分Linux服务器上的正常用户登录和恶意脚本扫描?
A: 主要通过观察登录行为的特征来区分,正常用户登录通常具有固定的IP地址、特定的时间段(工作时间)以及成功的会话建立,而恶意脚本扫描或暴力破解通常表现为:短时间内来自不同IP的大量连接尝试、尝试登录系统中不存在的常见用户名(如admin, test, root)、以及在/var/log/btmp中记录的密集失败记录,如果看到大量针对root用户的失败尝试,这几乎可以确定是自动化攻击。
能帮助您更好地管理服务器安全,如果您在查看日志的过程中遇到任何疑难问题,或者有更独特的排查技巧,欢迎在评论区留言分享,我们一起探讨交流!

















