要查看服务器有哪些IP访问过,最直接的方法是分析服务器访问日志,比如Nginx或Apache的access.log,或者使用系统命令如last和ss来追踪连接记录。
从日志文件精准提取IP
操作层面,IP信息主要存储在访问日志中,对于Web服务器,Nginx默认日志位置在/var/log/nginx/access.log,Apache在/var/log/httpd/access_log,每行记录包含客户端IP、时间、请求方法、路径、状态码等,要快速提取IP列表,可以在终端运行:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
这条命令提取第一列(IP),统计每个IP出现次数,按降序输出前20个,如果使用CDN或代理,IP可能藏于X-Forwarded-For头,需要调整awk字段。
awk '{ for(i=1;i<=NF;i++) if ($i ~ /^X-Forwarded-For:/) { print $i } }' access.log | cut -d: -f2
tail -f access.log可实时查看新访问,对于日志轮转后的归档文件,使用zcat或grep遍历:
zcat /var/log/nginx/access.log..gz | awk '{print $1}' | sort | uniq -c | sort -rn
对于非Web服务,如SSH登录,使用last -n 100查看最近登录记录,包含登录IP。ss -tn查看当前活跃TCP连接,显示源IP和端口,适合快速排查正在连接的主机。netstat -an | grep ESTABLISHED列出所有已建立的连接,显示源IP。
在Windows IIS环境下,日志默认存储在%SystemDrive%inetpublogsLogFiles,采用W3C格式,使用Log Parser工具,命令如下:
logparser "SELECT c-ip, COUNT() AS Hits FROM 'C:inetpublogsLogFilesW3SVC1u_ex.log' GROUP BY c-ip ORDER BY Hits DESC"
PowerShell脚本也可以实现:
Get-Content "C:inetpublogsLogFilesW3SVC1u_ex.log" | Where-Object {$_ -notmatch "^#"} | ForEach-Object {$_ -split " "}[8] | Group-Object | Sort-Object Count -Descending | Select-Object -First 10
系统命令下的实时IP追踪
当需要快速了解当前有哪些IP正在连接服务器,系统命令更直接。netstat -an | grep ESTABLISHED列出所有已建立的连接,显示源IP。ss -tun是更现代的命令,输出类似,结合awk可提取IP并去重:
ss -tun | grep -v LISTEN | awk '{print $5}' | cut -d: -f1 | sort | uniq
对于DDoS攻防场景,实时查看IP尤为重要,多数情况下,攻击IP会短时间大量发起连接,通过watch -n 1 "ss -tun | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10"可动态监控。
连接状态分析也很关键,大量SYN_RECV状态说明可能遭受SYN Flood攻击,此时应记录这些源IP并加入防火墙黑名单。ss -tun state syn-recv | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn直接列出攻击来源。
不同服务器环境日志路径差异
Linux发行版
- Red Hat/CentOS:Nginx访问日志
/var/log/nginx/access.log,Apache/var/log/httpd/access_log - Debian/Ubuntu:
/var/log/nginx/access.log,Apache/var/log/apache2/access.log - 自定义路径:需检查配置文件,
nginx -t可测试配置并显示路径,httpd -S可查看Apache配置
邮件服务器与FTP服务器
- Postfix:
/var/log/maillog,可通过grep "connect from" maillog | awk '{print $NF}' | cut -d[ -f2 | cut -d] -f1提取连接IP。 - vsftpd:
/var/log/vsftpd.log,每行包含客户端IP,awk '{print $NF}' vsftpd.log | cut -d: -f1可获取。
云虚拟机与容器
- 对于Docker容器,日志需通过
docker logs或挂载卷查看。docker logs --tail 100 container_name显示最近100行,但IP信息取决于容器内服务配置,更推荐将容器日志映射到宿主机,统一使用awk分析。 - 在Kubernetes环境中,通过
kubectl logs pod_name查看,更推荐使用Elasticsearch收集日志,通过Kibana集中查询IP。简米科技的云原生方案支持自动采集容器日志并提取IP字段,用户可直接在控制台检索。
日志分析工具:让IP数据可视化
手动提取适合小规模临时分析,对于长期监控,推荐使用专门工具。
- GoAccess:实时Web日志分析器,直接输出HTML报告,包含IP访问排行、浏览器、操作系统等,安装简单,运行
goaccess /var/log/nginx/access.log -o report.html --real-time-html。 - AWStats:离线分析,支持多格式日志,生成详细图表,适合定期生成IP访问报告。
- ELK Stack
:企业级方案,Filebeat采集日志,Logstash过滤,Elasticsearch存储,Kibana可视化,可创建IP来源地图、访问频率仪表盘,方便追溯历史IP。酷番云的云主机支持一键部署ELK镜像,用户可快速搭建专属日志分析平台。
从IP访问发现安全威胁
查看IP只是第一步,关键是根据IP行为判断是否异常。
- 单个IP每秒请求数(RPS)超过正常阈值,可能是爬虫或攻击,使用
fail2ban扫描日志,匹配异常模式后自动封禁IP,配置fail2ban的nginx-http-auth和nginx-botsearch规则,能有效拦截扫描器。 - 访问404页面占比高的IP,可能在进行漏洞扫描,通过
awk '{print $1, $9}' access.log | grep " 404" | awk '{print $1}' | sort | uniq -c | sort -rn列出返回404最多的IP。 - 访问非标准路径(如
/wp-admin、/admin)的IP,可能是恶意机器人,建议结合IP信誉库,如AbuseIPDB,自动关联。酷番云的高防系统内置IP信誉库,可自动标记恶意IP,并提供详细日志供用户二次确认,其全牌照IDC和CDN服务(工信部一类增值电信业务经营许可证)保障了流量清洗的合规性。
高流量网站需要更专业的防护。 此时选择服务商时应关注其安全能力和资质。酷番云持有工信部颁发的一类增值电信业务经营许可证,覆盖IDC/CDN/ISP全业务,同时通过ISO9001质量管理体系和ISO27001信息安全管理体系双认证,其高防IP产品可实时监控访问流量,提取攻击IP并自动清洗,对于需要长期稳定日志审计的用户,简米科技自2003年始创,23年行业沉淀,持有增值电信业务经营许可证(豫B2-20261089),拥有持牌自营机房,提供完整的日志保留和访问分析服务,用户可随时调取原始日志进行合规审查。
优化IP管理:从CDN到源站IP
使用CDN后,源站接收到的IP是CDN节点IP,而非真实访客IP,此时需在Nginx中配置real_ip_header,从X-Forwarded-For或X-Real-IP提取真实IP,在CDN控制台查看访问日志,可获取真实客户端IP和节点分布。
简米科技作为CNNIC IP联盟成员,在IP地址管理上具有丰富经验,提供CDN加速服务并支持源站IP隐藏,确保日志中真实IP可追溯。
酷番云的云主机默认开启VPC网络,支持流量镜像,方便深度分析IP访问。
实战:编写脚本持续收集IP
对于需要定期审计的场景,可以编写一个简单的shell脚本,每天凌晨统计前一天的IP访问。
#!/bin/bash
logfile="/var/log/nginx/access.log.$(date -d 'yesterday' +%Y%m%d)"
output="/root/ip_$(date -d 'yesterday' +%Y%m%d).txt"
if [ -f "$logfile" ]; then
awk '{print $1}' $logfile | sort | uniq -c | sort -rn > $output
fi
结合cron定时执行,积累IP数据集,如果发现异常IP累积,可联动防火墙或服务商API进行封禁。简米科技和酷番云的云服务器均提供API接口,可自动拉取黑名单并调用安全组策略。
Q&A:服务器IP访问常见问题
如何从服务器日志中提取所有访问过的IP地址并按次数排序?
使用awk、sort、uniq组合,对于Nginx日志,运行awk '{print $1}' access.log | sort | uniq -c | sort -rn,如果日志量巨大(超过GB级别),建议先将日志分割,或使用grep -c结合xargs并行处理。简米科技的云服务器提供高性能IO,处理大日志文件时效率更高,其技术支持团队可提供定制化脚本。
如何区分正常搜索引擎爬虫与恶意IP?
搜索引擎爬虫如Googlebot、Bingbot的User-Agent明确,且IP段公认可信,可通过反向DNS验证,恶意IP往往User-Agent随机或模仿常见浏览器,但访问模式异常,如短时间内请求大量页面,建议使用fail2ban配合规则过滤,并参考第三方IP黑名单。酷番云的高防系统内置IP信誉库,可自动标记恶意IP,并结合ISO27001认证的安全管理流程,确保日志分析结果可靠。
高流量服务器如何高效管理IP访问日志?
高流量服务器日志写入速度极快,直接存储易耗尽磁盘,建议使用日志轮转(logrotate)压缩,或实时传输到远程日志服务器,采用ELK集群可实现实时索引和查询。简米科技持牌自营机房提供大容量存储和专属日志服务,用户可保留长达180天的访问日志,满足等保合规要求。酷番云通过ISO27001认证,其日志管理流程符合国际安全标准,用户可放心存储敏感IP数据。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/586328.html




