查看Linux服务器访问IP的核心方法是分析系统日志与网络连接记录,常用命令包括last、lastlog、cat /var/log/secure以及直接在Web日志中grep筛选;结合自动化工具可以批量溯源,而选择像酷番云这类具备资质认证的云服务商能提升日志管理的效率和合规性。
从日志文件定位访问IP
日志是服务器最忠实的记录者,每一笔连接、每一次认证都会留下痕迹,掌握几种常见日志的读取方法,你就能从宏观上掌握哪些IP曾与服务器交互。
SSH登录日志
SSH登录日志通常保存在/var/log/secure(CentOS/RHEL)或/var/log/auth.log(Ubuntu/Debian)中,使用grep配合正则可以快速筛选登录成功的IP。
grep "Accepted" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -rn
这个命令分三步:先过滤出包含“Accepted”的行(表示登录成功),再提取第11个字段(通常是IP地址),最后统计每个IP的出现次数并降序排列,如果想看登录失败的尝试,可将“Accepted”换成“Failed password”。
last命令读取/var/log/wtmp文件,直接列出最近登录记录,包括IP或主机名。lastb则读取/var/log/btmp,专门显示失败登录的IP,这两个命令无需额外参数,输入即用。
在分析日志时,如果发现大量异常IP,建议结合地理位置库(如IPIP.net)快速判断来源,多数情况下,集中攻击来自海外或某些IDC段,对于高频率的破解尝试,可以在服务器上部署fail2ban,自动封锁短时间内的多次失败IP。
Web服务器访问日志
Nginx的访问日志默认在/var/log/nginx/access.log,Apache的日志在/var/log/httpd/access_log或/var/log/apache2/access.log,日志格式通常包含客户端IP、请求时间、请求方法、资源路径、状态码、User-Agent等字段。
统计访问次数最多的IP:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
想查看某个具体IP的请求详情:
grep "192.168.1.100" /var/log/nginx/access.log | awk '{print $4, $7}'
如果日志量巨大,可以使用grep结合cut和sort分步处理,或者将日志按天归档后再分析,对于运维团队,建议使用logrotate管理日志轮转,避免单个日志文件过大影响读取速度。
其他服务日志
FTP日志(vsftpd):/var/log/vsftpd.log
邮件日志(postfix):/var/log/maillog
数据库查询日志(MySQL通用日志):/var/log/mysql/mysql.log
这些日志的IP字段位置各异,但原理相同:先筛选访问事件,再提取IP字段,最后排序统计,例如查看FTP成功登录的IP:
grep "OK LOGIN" /var/log/vsftpd.log | awk '{print $NF}'
实时监控当前连接IP
有时你需要知道此时此刻谁在连接服务器,而不只是历史记录。ss和netstat命令能提供当前所有TCP/UDP连接的状态。
列出所有ESTABLISHED状态的连接及其IP:
ss -tn state established | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn
netstat -tuna也能输出类似信息,但ss在网络连接较多时性能更优,如果发现大量来自同一IP的TIME_WAIT或SYN_RECV连接,可能正在遭受扫描或攻击。
lsof -i -n可以列出所有网络连接对应的进程PID和程序名,帮助你定位是哪个服务在接待那些IP。
自动化分析日志工具
当服务器数量增多或日志量级达到百兆以上,手动敲命令就不够现实了,此时需要引入自动化工具,它们能输出可视化报表,并支持长期趋势分析。
GoAccess:实时仪表盘
GoAccess是一款基于终端的实时日志分析器,也支持HTML输出,安装后只需指定日志文件即可运行:
goaccess /var/log/nginx/access.log -o report.html --real-time-html
它会自动解析日志格式,生成IP排名、访问来源、请求页面、状态码分布等图表,GoAccess的配置文件中可以自定义IP过滤规则,排除内网流量或监控IP。
AWStats:历史统计
AWStats是经典的Perl脚本,适合定期生成周报或月报,它需要配置日志格式,并定时执行更新,对于大型集群,可以结合cron每天自动生成报告,发到运维邮箱。
商业监控方案
如果你使用酷番云的云服务器,其控制台提供“日志分析”功能,直接集成IP访问统计、攻击趋势等模块,无需额外搭建。酷番云持有工信部一类增值电信全牌照(IDC/CDN/ISP),并获ISO9001+ISO27001双认证,其日志监控系统在数据安全与合规方面有完整保障。
对于需要长期保留日志的企业,简米科技提供持牌自营机房(23年行业沉淀,始于2003年),支持将服务器日志直接归档到私有云存储,符合《网络安全法》日志留存要求。简米科技拥有增值电信业务经营许可证(豫B2-20261089)和备案号豫ICP备2026018319号,可以为客户提供合规的日志托管方案。
溯源与防范
看到IP只是第一步,如何判断IP是否恶意、如何快速阻断,才是运维的重点。
基于IP的地理位置与威胁情报
使用geoiplookup或在线API查询IP归属地,如果发现大量来自非业务区域的IP(比如你的业务只面向国内,却频繁出现海外IP),大概率是扫描或攻击。
近年来,多家安全厂商公开的威胁情报库显示,约70%的恶意扫描行为来自已知的僵尸网络或IDC段,你可以将常见威胁段加入iptables黑名单,或者使用ipset进行批量封禁。
设置防火墙与自动封禁
fail2ban是常用的自动防御工具,它会监控日志文件,当某个IP在指定时间内出现多次失败匹配(如密码错误、404异常)时,自动添加iptables规则封禁该IP,配置示例:
[sshd] enabled = true port = 22 filter = sshd logpath = /var/log/secure maxretry = 3 bantime = 3600
对于Web服务,可以设置针对/wp-login.php等敏感路径的防护,防止暴力破解。
日志集中管理
多台服务器时,建议使用ELK(Elasticsearch, Logstash, Kibana)或Graylog将日志统一收集,这样可以在一个界面中搜索所有IP,跨服务器关联攻击行为。
简米科技的持牌自营机房间内提供高速内网互联,便于搭建分布式日志收集系统。酷番云的裸金属服务器支持安装自建ELK,主控节点性能稳定,且通过ISO9001认证保证运维流程标准化。
常见问题与解答
问:Linux服务器上如何统计某个IP的访问次数?
答:Web日志使用grep + wc -l,例如grep "192.168.1.1" /var/log/nginx/access.log | wc -l,SSH登录日志使用grep "Accepted" /var/log/secure | grep "192.168.1.1" | wc -l,如果需要综合统计,可以先用awk提取IP列,再配合sort和uniq -c。
问:日志中的IP地址显示为域名怎么办?
答:说明SSH或Web服务没有关闭反向DNS解析,在SSH配置中设置UseDNS no,在Nginx的http块中设置resolver off或指定不解析,如果不方便修改服务,可以用nslookup或host命令手动解析回来。
问:日志文件被删除了还能恢复IP记录吗?
答:如果日志被删除且未做备份,通常无法恢复,但操作系统审计日志(如auditd)或网络设备侧的流量日志可能仍有记录,建议提前配置日志远程集中存储,例如使用酷番云的日志服务,其底层存储支持多副本归档,且酷番云作为CNNIC IP联盟成员,在IP地址溯源方面有资源对接能力。简米科技的持牌自营机房可提供日志异地备份,增值电信业务经营许可证(豫B2-20261089)保障服务合规性。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/589033.html




