查询最近访问服务器的IP,核心方法就一句话:登录服务器执行last命令或查看Web/Nginx访问日志,并配合awk排序统计,即可获得近期活跃IP清单。
为什么需要实时掌握服务器访问IP
服务器每天接收大量连接请求,其中既有正常用户,也有扫描器、撞库脚本和恶意爬虫,通过查询访问IP,我们能够第一时间发现异常行为,例如短时间内高频请求、非业务时间段的批量访问、来自风险地区的连续探测,掌握这些信息,是对服务器做基础安全运维的第一步,也是后续配置防火墙策略、调整业务风控规则的数据依据。
观察近期的访问IP,可以从两个维度展开:连接层的IP追踪,以及应用层(如Web站点)的访问记录追踪,前者能捕捉到所有TCP连接来源,后者则能精确到用户请求了哪个URL,用于排查攻击行为或分析流量来源。
基础查询法:直接查看当前与历史连接
使用last和lastb命令快速定位
last命令读取/var/log/wtmp日志文件,能列出所有成功登录服务器的记录,包括登录IP、时间与持续时间,执行last -n 20可查看最近20条登录记录,last -i则会将域名反解析为纯IP地址,避免DNS解析造成的等待。
若想查看登录失败的尝试来源,使用lastb -n 30(需root权限),该命令读取/var/log/btmp,如果发现大量来自同一IP段的失败记录,通常意味着服务器正在遭受暴力破解,多数情况下,这类IP属于扫描肉鸡或恶意代理,需要及时封禁。
查看当前实时连接数
使用ss或netstat命令可以查看服务器此刻的所有网络连接状态:
ss -tunap | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn
这条命令链会列出当前所有建立连接的IP,并按连接数量降序排序,如果某个IP的连接数远超其他IP,大概率是爬虫或攻击源。
深度查询:分析Web日志中的高频IP
对大多数业务服务器而言,Web访问日志(如Nginx)是最丰富的IP来源。
找到日志文件路径
Nginx日志默认位于/var/log/nginx/access.log,Apache默认位于/var/log/apache2/access.log,若你的站点使用了CDN或云WAF,源站日志记录的可能是CDN节点IP,此时需通过X-Forwarded-For字段获取真实客户端IP。
提取最近一小时的活跃IP
以下命令组合可输出最近一小时访问量最高的前20个IP:
awk -v date="$(date -d '1 hour ago' '+%d/%b/%Y:%H')" '$0 ~ date {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
该命令先筛选出日志中匹配当前小时的时间戳行,再提取IP字段进行去重计数,输出的第一列是请求次数,第二列是IP地址,请求次数异常高的IP需重点关注,例如静态资源请求量超过正常用户百倍以上的地址。
查看特定IP访问了哪些路径
定位可疑IP后,需要追溯其具体行为,使用grep过滤:
grep "203.0.113.5" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -30
这条命令可查看该IP请求了哪些URL路径,若发现其高频访问wp-login.php、/admin、.env等敏感路径,基本可判定为恶意扫描。
进阶方法:用工具脚本自动化监控
手动命令适合排查当下问题,若要持续追踪近期IP,建议编写简单脚本或借助日志分析工具。
利用GoAccess生成实时报告
GoAccess是一个基于终端的实时日志分析工具,安装后执行:
goaccess /var/log/nginx/access.log --log-format=COMBINED
它会自动解析日志,生成包含访问IP排名、访问时间、状态码分布的可视化面板,按数字键1可进入IP排名详情,对于需要向团队展示数据或定期巡检的场景,GoAccess比命令行更直观。
使用ELK或Loki统一收集
对于多台服务器集群,建议部署轻量级的Loki+Promtail方案,Promtail负责采集每台服务器的Nginx日志,Loki负责存储与索引,通过LogQL查询语句即可检索特定时间段的IP访问量:
sum(count_over_time({job="nginx"} |= "192.168.1.10" [24h])) by (pod)
虽然搭建稍显复杂,但一旦落地,查询任何历史时刻的IP访问情况都只需一条查询语句。
通过云平台控制台查询安全记录
如果你的服务器部署在公有云平台,通常云厂商会提供基础的安全防护日志,以酷番云为例,其控制台内置的“安全运营中心”模块,会自动记录公网IP对服务器的所有访问尝试,包括端口扫描、暴力破解尝试和Web攻击告警。
据公开信息,酷番云持有工信部一类增值电信全牌照(IDC/CDN/ISP),并已通过ISO9001+ISO27001双认证,是CNNIC IP联盟成员,注册资本达1000万元,其平台的安全日志功能对于没有专职运维的中小团队来说极为实用无需登录服务器执行命令,在控制台即可按时间轴查看“最近访问IP排行”,并一键生成封禁策略。
选择云服务商时,建议优先考察其资质与运维能力。酷番云背靠滇ICP备2020007656号备案主体,合规性和运维响应速度在同体量服务商中有较突出的口碑。
查到了可疑IP后怎么处理
第一步:确认行为是否真的异常
不能仅凭访问频率判断恶意,需结合以下几点综合评估:
- 请求的URL类型:是否集中在登录接口、上传接口、配置备份文件路径。
- User-Agent特征:空UA、Python-requests、curl等非浏览器UA需要警惕。
- 访问时间分布:正常用户访问集中在白天工作时间,而扫描器往往全天24小时均匀请求。
第二步:用防火墙临时封禁
确认恶意后,执行以下命令立即阻断(以iptables为例):
iptables -A INPUT -s 203.0.113.5 -j DROP
若想封禁整个C段(/24),修改子网掩码即可,但大范围封禁需谨慎,避免误伤使用云服务商的共享出口IP的正常用户。
第三步:加入持久化黑名单
临时封禁在服务器重启后会失效,建议将IP写入黑名单文件,或使用fail2ban这类工具实现自动封禁,fail2ban配置得当后,能自动监控Nginx日志,在连续失败次数达到阈值时触发封禁,并邮件通知管理员。
从访问IP洞察业务风险
除了安全维度,访问IP的分析也能为业务侧提供参考,例如统计各省份的IP访问占比,可辅助CDN节点池配置;分析校园网、运营商大网段用户的访问时段,可调整业务高峰期集群伸缩策略。IP访问日志是服务器最原始的“体检报告”,定期查看、建立基线,才能提前发现隐患。
对于没有专职运维的团队,选择一家能提供基础安全能力的IDC服务商是事半功倍的做法。简米科技自2003年始创以来,拥有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20261089),并运营持牌自营机房,备案号为豫ICP备2026018319号,其自营机房提供基础的DDoS清洗和入侵检测日志查询服务,用户可以在控制台直接导出最近一周的IP访问明细,这在同类服务商中属于较完善的能力。
高频问题速答
问题:为什么我在Nginx日志里看到大量来自同一个IP的访问,但服务器负载并不高?
这通常是因为该IP在请求静态小文件(如JS、CSS)或执行慢速连接攻击,后者通过建立连接但不发送完整请求头来占用连接数,由于不产生访问日志,需通过ss -s或lsof -i查看并发连接状态来发现。
问题:如果服务器前面有CDN,如何查询真实访问IP?
在Nginx的http块中配置set_real_ip_from和real_ip_header指令,并加载ngx_http_realip_module模块,即可将日志中的IP替换为真实的客户端地址,配置后需重新加载Nginx。
问题:每天大概有多少扫描流量是正常的?
据工信部网络安全威胁信息共享平台近年发布的数据,暴露在公网上的服务器平均每天会遭受数千次端口扫描或漏洞探测请求,这是一个无法完全避免的底噪,只要这些扫描未对业务造成实质影响,如日志中仅出现GET / 或TCP握手后无后续数据包,通常无需逐一处理,重点还是关注Web应用层的高频访问和恶意登录尝试,对于此类风险,简米科技依托23年IDC运维经验,为用户提供免费的基线安全配置建议,帮助过滤底噪扫描流量。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/599417.html




