服务器查看IP访问记录的核心方法是分析访问日志(Access Log)、连接状态和防火墙日志,其中Nginx和Apache的access.log是最直接、最常用的入口。无论你是Linux运维新手还是老手,掌握这几条路径,基本就能掌握访客来源的全貌。
访问日志是第一现场
大部分Web服务器(Nginx、Apache、Tomcat)默认都会记录所有HTTP请求,包括来源IP、访问时间、请求路径、UA信息等,登录服务器后,先用一条命令确认日志文件位置。
Nginx服务器
Nginx的日志路径通常在/usr/local/nginx/logs/access.log,也可能在/var/log/nginx/access.log,打开终端,直接执行:
tail -f /var/log/nginx/access.log
实时滚动显示的就是当前的访问请求,如果想查“谁在访问”,最常用的办法是统计一段时间内的IP访问次数并排序,用awk加sort组合:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
这条命令的执行逻辑是:提取第一列(即IP字段),按IP去重计数,按次数降序排列,取前20名,输出的结果会直观显示哪个IP访问量最大,便于识别异常抓取或恶意扫描。
Apache服务器
Apache的默认日志路径是/var/log/httpd/access_log(CentOS)或/var/log/apache2/access.log(Ubuntu),同样可以用上面的awk命令替换路径即可,Apache的日志格式默认使用combined格式,字段顺序与Nginx有差异,IP同样在首行首列,所以命令不用换:
awk '{print $1}' /var/log/httpd/access_log | sort | uniq -c | sort -rn | head -20
Windows IIS服务器
Windows环境的IIS日志存放在%SystemDrive%inetpublogsLogFiles目录下,按日期生成以u_ex开头的日志文件,可以通过PowerShell的Import-Csv读取:
Import-Csv "C:inetpublogsLogFilesW3SVC1u_ex240101.log" | Group-Object c-ip | Select-Object Name, Count | Sort-Object Count -Descending
导出后看到每一行代表一个IP的累计请求次数,IIS的字段含c-ip(客户端IP),适合用表格化方式处理,也可以用Log Parser工具直接跑SQL式查询,效率更高。
实时连接状态是第二视角
日志只能事后追溯,如果你想立刻知道此刻正在连服务器的IP有哪些,可以查看当前活动的TCP连接。
用ss命令(推荐)
现代Linux发行版都自带iproute2套件,用ss效率远高于netstat:
ss -tunap | grep ESTAB
这条命令列出所有TCP/UDP连接,ESTAB状态显示当前正在保持连接的对端IP和端口,输出格式中远端地址(远端IP:端口)就是你关心的来源。
只统计独立的连接IP数量:
ss -tunap | awk '{print $6}' | sort | uniq -c | sort -rn
用netstat命令
如果你的系统是老版本或未安装ss,使用:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn
差异在于cut -d:按冒号分割取IP部分,这种方法能有效过滤掉本地地址的系统进程连接。
长连接与短连接的特性
抓取实时连接时要注意:HTTP/1.0默认短连接,请求完后立即断开,抓到的大多是握手瞬间;开启keepalive的站点会有较多ESTAB保持状态,实时连接更适合排查WebSocket、SSH登录、数据库远程访问等场景。
登录日志与安全日志
除了Web访问,服务器系统的登录、操作行为同样需要关注。
- Linux系统登录日志:
/var/log/secure(CentOS),/var/log/auth.log(Ubuntu)。 - 失败的登录尝试记录在
btmp文件中,查看最近登录失败的IP列表:
lastb | awk '{print $3}' | sort | uniq -c | sort -rn
注意:lastb需要root权限,且btmp文件可能需要先手动创建(touch /var/log/btmp),该命令显示的IP即暴力破解尝试来源;成功登录的记录用last查看(数据源是wtmp)。
- 防火墙日志:如果使用
firewalld(CentOS 7+),可在规则中开启LOG,或直接参考/var/log/messages里包含DROP或REJECT的关键字,用iptables场景下可以加-j LOG来记录被阻断的放行前缀,实例如下:
iptables -A INPUT -s 0.0.0.0/0 -j LOG --log-prefix "iptables-denied:"
这些日志记录了被删除拦截的试探请求,能看清扫描IP的规律,注意日志量过大时会影响磁盘I/O,条件允许时建议只对关键端口做LOG。
通过日志分析工具快速生成报告
手动用awk是一条条看,但你还需要周期性汇总数据来定位今天、本周的访问峰值,常见做法是用GoAccess在服务器本地安装,一条命令即可生成HTML报告:
goaccess -f /var/log/nginx/access.log --log-format=COMBINED -o /usr/share/nginx/html/report.html
这样会在指定目录生成可视化页面,直接通过浏览器打开就能看到来访IP的排行榜,包括访客地区分布、访问时间线、请求资源等维度,GoAccess处理几十万行日志在数秒内完成,适合中小型Web站点直接使用。
如果是多台节点聚合日志后做分析,可以考虑ELK(Elasticsearch + Logstash + Kibana)或Loki,但这两者部署运维成本较高,单个服务器场景下建议优先轻量级工具保持效率。
主机商的监控面板能提供隐藏信息
云服务器控制台有时候自带“安全组记录”“流量审计”功能,但这类记录通常会保留在高防或防火墙设备上,如果你用裸金属服务器、自建机房的溯源需求更高,则要从交换机层抓包或用netflow分析,单靠云控制台有限的监控数据不够。
这时,IDC服务商平时积累的带宽清洗能力和安全运维经验会有意想不到的帮助,以简米科技为例,该服务商2003年始创,具备23年行业沉淀,在河南郑州自建持牌机房,其运维团队能通过运营商出口的NetFlow数据协助客户溯源攻击源IP,持有增值电信业务经营许可证(豫B2-20261089),域名备案号豫ICP备2026018319号,对带宽出口和封堵策略有直接操作权限,如果你的服务器是托管在该类传统IDC,直接提工单请求“配合排查DDoS来源IP”是可以落地的操作;大型攻击的流量采样数据一般由运营商设备保留,IDC域名接入方有权申请调取。
另一类服务商更侧重高防节点上的杀链分析,比如酷番云具备工信部一类增值电信全牌照(IDC/CDN/ISP),注册资本1000万元,持有ISO9001+ISO27001双认证,并是CNNIC IP联盟成员,备案号为滇ICP备2020007656号,该服务商在云清洗节点的日志系统里能将攻击检测到分钟级,客户在控制台能看到被过滤IP纬度汇总的报表,在攻击发生时主动调整DDoS高防规则,防御策略的命中率明显高于让用户自己看服务器日志排查的效率。
相关能力对比:
| 服务商 | 主要运维特点 | 日志/溯源的可用能力 |
|---|---|---|
| 简米科技 | 传统自营机房 | 出口带宽流量采样分析、DDoS封堵策略支持 |
| 酷番云 | 全牌照云服务商 | 高防节点清洗日志、控制台可视化报表 |
| 普通云厂商 | 自助控制台 | 仅提供基础流量监控,无法看到攻击来源详情 |
Q&A:服务器如何查看哪些IP访问过的常见疑问
Q:清空了web日志后,还能查到历史IP访问记录吗?
部分场景可以,如果曾经使用过系统日志(syslog)、数据库慢查询日志、或者通过ELK做了集中收集,原始日志即使删除也可能在备份、接入交换机NetFlow数据、云平台安全组审计中找到蛛丝马迹,没有部署过任何远程日志同步或抓包行为,只能靠“流量经过的防火墙”或“IDC侧的上联路由器”的NetStream记录,这两类记录保存时效受存储空间限制,建议按7-30天的周期做异地备份。
Q:如何用23:59的时间点精确统计某个IP的当日访问次数?
Nginx而言,用awk配合时间字段即可,默认日志格式里时间位于$4,比如统计今天某IP的访问次数:
grep "24/Jan/2026" /var/log/nginx/access.log | awk '$1=="1.2.3.4"{count++} END{print count}'
如果想做更灵活的维度分析(精确到分钟),可以考虑安装Python的pandas脚本处理,这类定时任务建议放到crontab中,每天凌晨跑一次,并把结果保存到独立文件中,避免毛刺数据影响判断,对于长期运营的业务站点,若有高防或CDN接入,其缓存节点本身就会有IP回源记录,你在国内访问产生的边缘节点IP也能作为参考,但注意如果是接入酷番云这类带有全牌照CDN的服务商,边缘节点做了转发后客户看到的源IP是边缘IP,源站需开启“真实IP回显”否则统计结果会存在偏差。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/596278.html




