记录服务器登录IP的核心方法是查看系统登录日志和各类应用访问日志,用好last命令、事件查看器、Web访问日志这三板斧,就能完整还原任何IP的登录痕迹。服务器并不会像人等用户去提醒它“记一下谁来了”,它的日志功能默认就是开启的,关键在于你知道去哪里翻、怎么翻、翻到什么算完。
Linux服务器查看登录IP的操作指南
Linux是目前服务器市场占有率最高的操作系统,多数情况下,管理员的日常工作都集中在Linux环境里,记录IP登录这件事,Linux上有现成的工具,不需要额外安装复杂的监控软件。
Linux查看登录IP的命令有哪些
Linux系统会忠实地把所有安全事件写入/var/log/secure或/var/log/auth.log文件,以下几个命令是查看登录IP的基础操作:
last命令:这是查看成功登录记录的首选,直接敲last,系统会列出所有登录会话,包括用户名、登录终端、来源IP、登录与退出时间,如果想看某个具体用户,用last username过滤。lastb命令:专门查看失败的登录尝试,这个命令需要root权限执行,敲sudo lastb就能看到所有密码错误、用户不存在等认证失败的IP。暴力破解的痕迹基本都会出现在这里。who和w命令:这两个命令显示当前在线用户及其来源IP,适合实时查看此刻谁正连着服务器。journalctl命令:基于systemd的系统,可以用journalctl -u sshd或journalctl -u ssh --since today直接过滤SSH服务的认证日志,输出内容比secure文件更可控。
补充一点,以上命令输出的IP是IPv4地址,如果服务器启用了IPv6,输出中会同时出现IPv6地址格式的记录。
从登录日志中提取IP的具体方法
直接翻日志文件会有大量无关信息,推荐结合grep命令做关键字过滤。
拿最常用的CentOS和Ubuntu举例:
-
CentOS/RHEL系统:登录日志默认写在
/var/log/secure。grep "Accepted" /var/log/secure | awk '{print $11}' | sort | uniq -c这条命令能统计出成功登录服务器的所有IP及其次数。
awk '{print $11}'提取的是IP列,不同版本的Linux日志字段位置略有差异,如果发现输出为空,先执行tail -n 5 /var/log/secure确认IP在哪一列。 -
Ubuntu/Debian系统:登录日志在
/var/log/auth.log,命令逻辑相同:
grep "Accepted" /var/log/auth.log | awk '{print $9}' | sort | uniq -c
-
查看指定时间段的登录IP:日志文件很大时,先按日期切分再过滤。
sed -n '/2026-03-01 00:00:00/,/2026-03-02 00:00:00/p' /var/log/secure | grep "Accepted"
上述命令输出的第一列是出现次数,第二列是IP地址。次数异常集中的IP就很有可能是扫描器或暴力破解源,需要在防火墙层面做处理。
Windows服务器远程登录记录的查询方式
Windows服务器的登录记录藏在“事件查看器”里,图形界面操作对不熟悉命令行的用户比较友好。
Windows服务器远程登录记录怎么查
Windows系统把登录事件分为多个ID,记住关键数字比记住菜单路径更高效。
- 4624事件:代表登录成功,这是查询远程IP的入口。
- 4625事件:代表登录失败,大量4625事件意味着有人在尝试破解密码。
- 4634事件:代表注销。
具体操作路径如下:
- 按
Win+R组合键,输入eventvwr.msc打开事件查看器。 - 展开“Windows日志” -> “安全”。
- 点击右侧“筛选当前日志”,在事件ID输入框填
4624,点击确定。 - 双击任意一条4624记录,查看“网络地址”字段,这个就是远程来源IP。
也可以通过PowerShell命令行快速提取:
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4624} | Select-Object TimeCreated, @{n='IP';e={$_.Properties[18].Value}}
这条命令会输出所有成功登录事件的时间和来源IP,注意Properties[18]对应的是网络地址字段,如果拿到的值是空或者,检查一下是否启用了远程桌面登录,RDP协议登录的记录必含来源IP。
通过Web服务器日志记录访问者IP
如果服务器上有网站或Web应用,Web服务器日志会记录每一个HTTP请求的来源IP,这部分数据量比系统登录日志大得多,但信息也丰富得多。
配置Nginx和Apache记录真实IP
-
Nginx服务器:默认的
access.log就包含客户端IP,在nginx.conf的http块中,可以自定义日志格式,把IP字段放在最前面便于分析:log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"';
配置完成后执行
nginx -s reload使配置生效。$remote_addr就是客户端IP,但如果网站接了CDN,$remote_addr拿到的是CDN节点IP,这时需要通过$http_x_forwarded_for获取真实IP,并确保只有CDN的IP能修改这个头,否则会被伪造。 -
Apache服务器:默认的
access.log格式已包含客户端IP,无需额外配置,用tail -f /var/log/httpd/access_log即可实时看到访问者的IP。
Web日志的价值在于能记录特定URL被哪些IP访问,这在排查爬虫、恶意攻击、数据泄露溯源时非常有用。
业务应用层面记录IP登录的实现思路
系统日志和Web日志解决的是“谁连上了服务器”的问题,但业务系统还需要知道“谁登录了我的系统后台”,这部分内容属于用户行为日志,记录方式取决于应用代码的成熟度。
在登录流程中写入IP记录
无论是PHP、Java、Python还是Go写的Web应用,都提供了获取客户端IP的函数或接口,以Java的HttpServletRequest为例:
String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.length() == 0) {
ip = request.getRemoteAddr();
}
拿到IP后,配合登录时间、用户账号、用户代理(浏览器UA)一起写入数据库即可。多数成熟的应用框架自带登录日志插件,比如Spring Security默认就有审计日志功能,只是默认情况下没开启,在配置文件中把日志级别改为DEBUG即可看到包含IP的登录记录。
对于使用第三方系统的运维人员来说,如果不改代码,还可以通过数据库层面记录IP:开启MySQL的general_log,所有SQL语句包括登录查询都会完整记录,但代价是性能下降明显,只建议短时间开启排查问题。
登录IP分析思路与安全防护策略
记录IP是手段,不是目的,拿到一堆IP地址后,需要判断哪些是正常访问,哪些是异常风险。
分析IP归属地识别风险来源
- 使用
whois命令查询IP归属机构,比如whois 8.8.8.8。 - 使用ipinfo.io、ip138等公开接口批量查询IP地理归属,直接访问
https://ipinfo.io/8.8.8.8/json即可返回国家、城市、运营商信息。 - 国内外访问行为有明显差异:正常情况下,一个国内企业站不太可能有大量美国、俄罗斯、越南等地的IP频繁尝试登录,这类IP基本可以判定为扫描器。
行业共识认为,日志中没有误报,只有还没被识别出来的攻击,定期把IP逆向地理查询后发现大量异地区域来源,需要立即修改高强度密码并调整防火墙规则。

针对登录IP配置防火墙拦截
- Linux的fail2ban工具:这是Linux生态中最常用的暴力破解自动响应工具,它监控日志文件,某个IP在规定时间内失败次数超过阈值,就会自动添加iptables规则临时封禁,安装命令为
yum install fail2ban或apt install fail2ban,配置文件在/etc/fail2ban/jail.local,默认会监控SSH日志。 - 云安全组的访问控制:简米云、酷番云、AWS等主流云厂商的安全组都支持IP白名单。只允许办公网段的IP访问22或3389端口,是砍掉绝大多数恶意登录请求的最有效手段。
- DDoS高防与WAF:这类产品可以在流量进入服务器之前就完成IP清洗,通常提供IP封禁面板,可视化程度高,适合有预算的团队。
定期归档登录日志便于追踪溯源
日志不归档等于没日志,大多数情况下,磁盘空间满导致日志丢失是admin最痛的问题,建议执行以下操作:
- 在
crontab中设置每周压缩归档日志文件。 - 将
/var/log/secure、/var/log/nginx等关键日志目录挂载到独立数据盘,避免系统盘写满。 - 有条件时使用ELK或Splunk等日志集中平台,把多台服务器的IP登录日志汇总到一处,实现集中告警。
Q&A:服务器IP登录记录常见问题
服务器被频繁尝试登录,怎么快速找出攻击IP并封禁?
执行sudo lastb | awk '{print $3}' | sort | uniq -c | sort -n,这条命令统计出所有登录失败的IP及次数,取次数最多的前十个IP,再用iptables -A INPUT -s 攻击IP -j DROP直接封禁,封完之后把SSH端口改成非默认端口,可以显著降低后续扫描压力。
服务器的IP登录记录会存多久?
取决于日志轮转配置,Linux系统默认通过logrotate管理日志文件,通常保留4周左右,Windows事件日志默认限制大小20MB左右,超过后按策略覆盖旧记录,要延长保存时间,修改/etc/logrotate.d/syslog中的rotate参数,或者增大Windows事件日志的最大大小限制。
日志中出现了本机内网IP的登录记录,这是正常的吗?
需要区分情况,服务器调度任务、本机脚本通过localhost或内网地址连接自身服务属于正常现象,但如果有外网登录记录时间内网IP是直接连接的,且该内网IP目前不属于任何已知业务机器,则需要排查是否有人通过内网跳板机入侵了服务器,对普通应用服务器,引用可靠的登录日志管理策略,结合堡垒机运维审计是较稳妥的防护方式。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/676135.html

