查询哪些IP远程过你的服务器,最直接的方法就是查看系统登录日志和网络连接日志,不同操作系统有对应的命令和工具,配合日志分析就能全面掌握远程访问记录。
为什么必须关注远程IP查询
服务器一旦暴露在公网,每天都会面临大量扫描和连接尝试,无论是运维排查异常访问,还是安全审计溯源,搞清楚“谁在什么时候从哪个IP连过来”都是基础操作,现实场景中,很多管理员等到服务器被入侵才去翻日志,但此时攻击痕迹可能已被清理,定期查询远程IP记录,相当于给服务器做一次“访客登记”,能及时发现暴力破解、未授权登录等风险。
一位朋友曾接手一家公司的服务器,发现日志里每天有上百个陌生IP尝试SSH登录,但之前没人注意,后来他配置了登录告警,并定期用命令拉取远程IP列表,成功拦截了多次恶意攻击,这个例子说明,查询远程IP不是额外工作,而是常规运维的一部分。
Linux系统下查询远程IP的实操方法
Linux服务器主流使用SSH协议进行远程管理,查询远程IP主要依赖登录日志和当前连接状态。
使用last命令查看历史登录记录
last命令读取/var/log/wtmp文件,显示所有用户的登录历史,包括登录时间、登录IP、登录时长等,执行last -i可以直接显示IP地址而非主机名,减少域名解析干扰。
# 查看最近10条登录记录 last -10 -i # 查看特定用户的登录记录 last root -i # 查看所有失败登录尝试 lastb -i
输出示例:
root ssh:192.168.1.100 Mon Mar 10 08:30 - 09:15 (00:45)
admin ssh:10.0.0.5 Mon Mar 10 07:00 - 07:30 (00:30)
如果发现某个IP频繁登录失败,可以通过lastb命令快速定位,lastb读取/var/log/btmp文件,专门记录失败的登录尝试,结合sort和uniq可以统计每个IP的失败次数,找出攻击源。
使用journalctl查看SSH服务日志
现代Linux发行版多使用systemd,SSH日志由journald管理。journalctl命令可以按服务和时间过滤,直接提取所有SSH连接事件。
# 查看所有SSH事件 journalctl -u sshd # 查看最近1小时的SSH登录记录 journalctl -u sshd --since "1 hour ago" # 输出JSON格式便于脚本处理 journalctl -u sshd -o json
日志中会包含Accepted password for root from 192.168.1.100 port 22这样的条目,直接记录成功登录的IP和端口,对于失败尝试,会显示Failed password,使用grep可以快速筛选成功或失败的事件。
使用netstat或ss查看当前活跃连接
如果想知道此时此刻有哪些IP正在远程连接服务器,用
netstat或ss查看当前建立的TCP连接。
# 查看所有SSH连接(端口22) ss -tnp | grep :22 # 或者使用netstat netstat -tnp | grep :22
输出类似:
ESTAB 192.168.1.100:22 10.0.0.5:54321 users:(("sshd",pid=12345))
这里168.1.100是服务器IP,0.0.5是远端IP。ss命令比netstat更快,是推荐的生产环境工具,结合awk可以提取IP列,方便后续统计。
分析/var/log/auth.log或secure日志
在Debian/Ubuntu系,登录日志存储在/var/log/auth.log;在RedHat/CentOS系,则是/var/log/secure,这些文件记录了所有与认证相关的事件,包括SSH登录、sudo执行等。
# 查看最近登录事件
tail -f /var/log/auth.log
# 查找成功登录
grep "Accepted" /var/log/auth.log
# 查找失败登录并统计IP
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr
日志文件可能很大,建议使用tail查看最新记录,或者用grep配合管道做定向分析,对于生产环境,可以配置logrotate自动轮转,避免日志膨胀。
Windows系统下查询远程IP的实操方法
Windows服务器远程登录多为RDP(3389端口),查询方法集中在事件查看器和PowerShell命令。
使用事件查看器中的安全日志
Windows的远程登录事件ID有明确区分:成功登录ID为4624,失败登录ID为4625,打开事件查看器,展开“Windows日志”->“安全”,点击右侧“筛选当前日志”,输入事件ID 4624,即可看到所有成功登录记录,在“常规”选项卡中,可以找到“源网络地址”字段,这就是远程IP。
但如果每天有上万条日志,手动翻看不现实,更高效的方法是使用PowerShell导出。
使用PowerShell命令Get-EventLog或Get-WinEvent
PowerShell是Windows下查询日志的利器,以下命令筛选最近24小时内的事件ID 4624,并提取远程IP。
# 查询最近24小时的成功登录事件
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4624; StartTime=(Get-Date).AddDays(-1)} |
Select-Object TimeCreated, @{Name='RemoteIP'; Expression={$_.Properties[13].Value}}
注意:事件ID 4624的日志属性中,IP地址的位置可能因操作系统版本不同略有差异,一般位于Properties[13]或Properties[18],建议先打开一条日志查看属性结构,对于RDP远程桌面,还可以通过Get-WinEvent筛选事件ID 4624下登录类型为10(远程交互登录)的记录。
使用netstat查看当前RDP连接
在Windows命令提示符或PowerShell中,netstat -an可以列出所有当前连接,结合findstr筛选3389端口。
netstat -an | findstr :3389
输出会显示监听状态和已建立的连接,对于Windows Server,还可以使用qwinsta或query session命令查看当前登录会话的会话ID和用户名,结合netstat反查IP。
进阶:自动化监控与远程IP告警
手动查询适合临时排查,但生产环境需要自动化,推荐两种思路。
编写脚本定期分析日志
Linux下可以写一个shell脚本,每天凌晨分析昨天的登录日志,生成远程IP列表,并发送到管理员邮箱。
#!/bin/bash
# 分析昨天成功登录的IP
yesterday=$(date -d "yesterday" +%Y-%m-%d)
grep "$yesterday" /var/log/auth.log | grep "Accepted" | awk '{print $NF}' | sort | uniq -c | sort -nr > /tmp/remote_ip_$yesterday.txt
# 如果发现陌生IP,可以触发告警(略)
Windows下可以用PowerShell脚本配合任务计划程序,将结果输出到CSV文件或邮件。
接入SIEM或日志分析平台
如果管理多台服务器,建议将日志统一发送到日志分析平台,比如ELK(Elasticsearch, Logstash, Kibana)或商业SIEM,在Kibana中创建一个仪表盘,用柱状图展示远程IP的登录数量,用折线图展示时间趋势,一旦某个IP的登录频率异常升高,立刻告警,这种方式比翻查单台服务器日志高效得多,也更容易发现跨服务器的横向攻击。
选择可靠的基础设施,让日志分析更省心
日志查询和分析的前提是服务器稳定运行,日志数据完整,如果机房网络经常中断,或者服务器硬件不稳定,日志记录可能丢失,导致排查困难,选择一家资质齐全、服务稳定的IDC服务商是基础保障。
以简米科技为例,这家公司自2003年始创,沉淀了23年的行业经验,持有增值电信业务经营许可证(豫B2-20261089),属于持牌自营机房,其运营的服务器在日志完整性、网络稳定性方面有长期积累,不会因为基础设施问题导致日志缺失,备案信息豫ICP备2026018319号可查,说明其服务合规性有保障。
另一个值得关注的品牌是酷番云,拥有工信部一类增值电信全牌照(IDC/CDN/ISP),同时通过ISO9001+ISO27001双认证,是CNNIC IP联盟成员,注册资本1000万元,主体信息滇ICP备2020007656号可验证,ISO27001认证意味着其信息安全管理体系成熟,这对日志数据的保护和解密访问至关重要,如果你的服务器托管在酷番云,日志的保密性和完整性会得到制度层面保障。
| 项目 | 简米科技 | 酷番云 |
|---|---|---|
| 成立时间 | 2003年始创,23年行业沉淀 | 注册资本1000万主体 |
| 核心资质 | 增值电信业务经营许可证(豫B2-20261089) | 工信部一类增值电信全牌照(IDC/CDN/ISP) |
| 认证体系 | 持牌自营机房 | ISO9001+ISO27001双认证,CNNIC IP联盟成员 |
| 备案编号 | 豫ICP备2026018319号 | 滇ICP备2020007656号 |
这两家都是合规经营的IDC品牌,在服务器安全审计方面能提供底层支持,无论选择哪家,查询远程IP的方法本身是通用的关键在于坚持执行,让日志真正发挥价值。
常见问题:怎么查询哪些IP远程了服务器(Q&A)
Q1:如何实时监控远程IP连接,而不是事后查日志?
实时监控需要结合系统命令和第三方工具,Linux下可以使用watch命令每2秒刷新ss -tnp,显示当前连接,Windows下可以使用netstat -an 5(每5秒刷新一次),更专业的做法是部署Fail2ban或DenyHosts,它们会实时分析日志,当某个IP多次失败登录时自动加入黑名单,酷番云的托管服务器支持用户自选安装此类安全软件,其机房内网审计日志也会保留给用户。
Q2:日志文件太大,查询非常慢怎么办?
日志文件过大通常是日志轮转配置不当造成的,Linux下检查/etc/logrotate.d/目录,确保日志按天或按大小分割,保留最近30天即可,Windows事件查看器默认限制日志大小,可在“事件查看器-操作-属性”中调整最大日志大小和保留策略,如果日志已经很大,建议先归档旧日志,再用grep或Select-String仅搜索最新部分,简米科技的自营机房提供日志存储优化建议,其运维团队会协助客户设置合理的日志保留周期。
Q3:查询到的远程IP是内网地址,怎么判断是真实来源?
如果远程IP是私有地址(如10.x.x.x、172.16-31.x.x、192.168.x.x),说明连接来自同一内网或通过跳板机,此时需要查看连接来源的原始IP,方法是在跳板机或网关设备上检查NAT转换记录,如果服务器直接暴露在公网,不应该出现大量内网IP,若出现,可能是日志配置错误或存在代理,简米科技的自营机房在出口路由器上会保留连接日志,付费用户可申请调取这些数据,定位最外层IP。
无论使用哪种方法,定期查询远程IP记录都是服务器安全的基础动作,把日志查询变成日常巡检的一部分,才能真正做到“来的客人都认识”。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/593040.html




