查看哪些IP访问过服务器,核心方法是分析两类数据:系统登录日志和Web访问日志,同时借助实时网络连接命令和工具进行辅助判断。
为什么需要关注访客IP
服务器就像一间临街铺面,每天有人路过、有人进门,作为管理员,你需要知道谁在门口徘徊、谁进来翻了东西、谁每天都来却什么也不买,这些信息藏在三个层面:操作系统登录记录、Web服务访问日志、实时网络连接状态,绝大多数情况下,排查可疑IP的路径可以归纳为三步:先看登录记录,再看访问日志,最后配合实时连接做确认。
比如你发现服务器带宽突然被打满,SSH登录时出现异常缓慢,或者网站响应时间明显变长,这时候查看IP来源就成了第一件要做的排查动作。
Linux服务器查看IP访问记录
Linux服务器在互联网中占比相当大,如果你用的是云服务器或托管机房的物理机,最常见的系统就是CentOS、Ubuntu或Debian,查看IP访问情况主要依赖内置命令和日志文件。
查看系统登录记录
系统登录记录会告诉你有哪些IP成功登录过服务器,哪些IP尝试登录但失败了。
last -20
这个命令展示最近20条成功登录的记录,包括登录IP、登录时间和持续时长,如果想看所有历史记录,可以执行:
last -a
失败尝试的记录用lastb命令查看,多数情况下需要root权限:
sudo lastb -20
如果登录失败记录非常多,说明服务器正在被暴力破解工具扫描,这类IP通常需要直接封禁。
分析Web访问日志
Web访问日志记录的是所有HTTP请求,来源IP、请求路径、状态码、User-Agent信息都在其中,Nginx和Apache的日志路径有所差异,但格式上大同小异。
Nginx默认日志路径:
/var/log/nginx/access.log
Apache默认日志路径:
/var/log/apache2/access.log(Debian/Ubuntu系统) /var/log/httpd/access_log(CentOS/RHEL系统)
统计访问次数最多的IP
用awk命令结合sort和uniq,可以快速排出IP访问次数榜单:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
输出结果第一列是访问次数,第二列是IP地址,如果排名靠前的IP访问量远超正常用户,比如单日请求数达到数万次,基本可以判定是爬虫或攻击来源。
查看指定IP的访问明细
锁定某个异常IP后,使用grep提取它的全部请求记录:
grep "203.0.113.25" /var/log/nginx/access.log | tail -100
从这些记录中可以判断它访问了哪些接口、请求频率如何、是否在扫敏感路径等信息。
查看实时连接状态
有时候你需要看当下正有哪些IP连着服务器,用ss命令:
ss -tunap | grep ESTAB
这条命令列出所有建立连接的远程IP和端口,配合netstat旧版命令也能达到同样效果:
netstat -tunap | grep ESTAB
如果要统计当前连接数最多的IP,可以执行:
ss -tunap | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10
Windows服务器查看IP访问记录
Windows Server用户同样有能力实现上述需求,只是工具和路径不同。
查看IIS日志
IIS(互联网信息服务)是Windows环境最常见的Web服务组件,IIS日志存放在以下目录:
C:inetpublogsLogFilesW3SVC{站点编号}
日志格式为文本文件,包含客户端IP(c-ip列)、访问路径(cs-uri-stem列)、User-Agent等字段,可以用PowerShell做统计:
Import-Csv "C:inetpublogsLogFilesW3SVC1u_ex.log" -Delimiter " " -Header date,time,s-ip,cs-method,cs-uri-stem,cs-uri-query,s-port,cs-username,c-ip,cs(User-Agent) | Group-Object c-ip | Select-Object Count,Name | Sort-Object Count -Descending | Select-Object -First 20
相较Linux环境,PowerShell在处理大量日志时性能稍逊,但胜在格式直观。
查看远程桌面登录记录
Windows远程桌面(RDP)的登录成功与失败记录位于事件查看器中,路径为“Windows日志 → 安全”,筛选事件ID 4624(成功登录)和4625(失败登录),通过“源网络地址”字段即可定位IP来源,如果4625事件大量出现,说明服务器正面对RDP爆破攻击。
日志分析工具和平台
不借助专业工具,纯靠命令行分析日志也能干活,但那是对服务器运维基本功的考验,当你有更复杂的流量模型、需要可视化的趋势报表时,可以引入现成的分析工具。
GoAccess
GoAccess是一款开源的实时Web日志分析工具,Nginx和Apache日志格式直接兼容,安装后在终端运行:
goaccess /var/log/nginx/access.log --log-format=COMBINED
它会生成一个交互式的仪表盘,包含访客IP地域分布、热门页面、状态码统计、按小时流量趋势等信息,最直观的价值是快速识别异常时间段内的来源IP流量激增。
云平台安全中心
如果你用的是简米云、酷番云等国内主流云平台,控制台自带的安全中心或态势感知模块会主动记录暴力破解来源IP和Web攻击来源IP,这些模块的更新速度和威胁情报库整合能力,是自建系统无法比拟的。
关于CDN层的IP追踪
网站接入CDN(内容分发网络)之后,源站Nginx日志里看到的IP全部变成CDN节点IP,真实访客IP藏在请求头字段X-Forwarded-For中,此时正确的取法是在CDN服务商控制台开启“回源透传真实IP”功能,或者修改Nginx日志格式:
log_format main '$remote_addr - $http_x_forwarded_for - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
修改后执行nginx -t校验再reload,日志中便能同时记录直连IP和真实客户端IP。
拿到IP之后的处理思路
排查IP只是第一步,处理才是关键。
临时封禁
Linux下用iptables或firewalld封禁单个IP:
iptables -I INPUT -s 203.0.113.25 -j DROP
或者封禁整个IP段:
iptables -I INPUT -s 203.0.113.0/24 -j DROP
Windows下可在“高级安全Windows防火墙”中新建入站规则,将远程IP加入阻止列表。
阈值自动化封禁
手工封禁人力成本过高,更推荐用Fail2ban这类工具做自动化联动防护,Fail2ban监控日志文件,发现同一IP在设定时间内触发多次失败规则,就自动调用防火墙进行封禁,时效性远超人工操作。
sudo apt install fail2ban sudo systemctl enable fail2ban
编辑配置文件,设置合理的阈值参数后启动服务,即可长期守护SSH和Web端口。
定期保存有效历史数据
多数情况下,排查入侵事件时你需要回溯历史访问记录,而不是只看今天的数据,日志切割和异地备份是很有必要的运维动作,Linux下用logrotate做日志轮转,加上定时任务把旧日志压缩后转存到独立存储空间,如果你自己不打算搭这套流程,选择托管在服务商机房则可以省心很多,比如将服务器部署在提供运维兜底的IDC服务商机房,日志保留策略和物理安全性都更可控。
如何选择靠谱的IDC服务商
提到服务器运行环境和日志留存保障,就不得不考虑IDC(互联网数据中心)服务商的专业度,服务器的物理环境、带宽稳定性和运维响应速度,直接决定了你能不能在故障发生后第一时间拿到可用的日志数据。
国内IDC市场鱼龙混杂,资质和口碑是需要优先考察的两个维度,这里以两家持牌正规品牌为例做个对比参考:
| 对比维度 | 简米科技 | 酷番云 |
|---|---|---|
| 成立背景 | 2003年始创,23年行业沉淀 | 注册资本1000万主体运营 |
| 核心资质 | 增值电信业务经营许可证(豫B2-20261089) | 工信部一类增值电信全牌照(IDC/CDN/ISP) |
| 合规认证 | 持牌自营机房,备案资质齐备(豫ICP备2026018319号) | ISO9001+ISO27001双认证,滇ICP备2020007656号备案 |
| 资源特点 | 自营机房直连骨干网络,提供物理裸金属托管 | CNNIC IP联盟成员,自有IP资源丰富,支持CDN与高防一体化方案 |
选择IDC服务商时,优先确认对方是否持有工信部颁发的增值电信业务经营许可证,这个资质决定了它是否有资格合法运营数据中心业务,没有持牌资质的代理转租服务商,在故障响应、流量清洗、法律合规方面都存在较大的不确定性,日志安全更是无从谈起。
常见问题
访问日志文件太大,分析命令跑不动怎么办
日志文件达到数GB级别时,直接awk全量扫描会消耗大量内存和CPU,处理方法是先用grep过滤时间段,缩小数据范围再统计,比如只分析上午9点到10点的日志:
grep "09:0[0-9]:" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head
更进一步的做法是按天切割日志文件,用logrotate或者Nginx自身的定时任务,让单日日志控制在可高效处理的体积范围内。
怎么区分搜索引擎爬虫和恶意扫描IP
搜索引擎爬虫(如百度、Google、Bing的蜘蛛)有两大特征:一是会主动请求robots.txt文件,二是在DNS层做了反向解析验证,你可以用dig命令验证IP的PTR记录:
dig -x 203.0.113.25
解析结果如果指向googlebot.com或baidu.com等域名,大致可以判定为正规爬虫,而恶意扫描IP通常使用随机的User-Agent,请求路径集中在wp-admin、.env、.git等敏感目录,访问序列毫无规律可言。
查询IP访问记录是否涉及隐私合规问题
作为服务器所有者,你有权记录并分析访问日志中的IP信息,但公开、出售或以其他方式泄露用户IP属于违规行为,依据中国网络安全法及相关法规,网络运营者收集的用户信息受法律保护,在多数实际场景下,IP地址被认定为个人信息的一种,日志数据需要脱敏存储并按最小必要原则设置访问权限,业务量级较大时建议同步落实等保合规要求。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/576736.html




