想要查看服务器有哪些IP连接过,核心是分两步走:查看当前实时连接用 ss 或 netstat 命令,追溯历史登录记录则排查 last、lastlog 及系统登录日志。
对于服务器运维人员来说,掌握 IP 连接情况不仅是排查故障的基本功,更是保障业务安全的第一道防线,无论是遭遇恶意扫描、暴力破解,还是单纯想了解业务访问来源,都需要一套清晰且可落地的排查思路,这篇文章将直接从命令行实操出发,带你从实时状态到历史痕迹,完整掌握查看 IP 连接的方法。
当前实时连接排查:谁正在连我的服务器
当服务器出现响应缓慢、流量异常或 CPU 飙升时,第一步往往需要查看此刻是谁在建立连接,Linux 系统中最常用的两个命令是 ss 和 netstat,这两者都能列出当前所有网络连接,但推荐优先使用 ss,因为它直接从内核读取信息,速度快且输出更完整。
用 ss 命令快速定位活跃连接
执行以下命令可以列出所有 TCP 连接及其状态:
ss -tunap
输出结果中重点关注几个字段:State 表示连接状态(如 ESTAB、SYN-SENT、TIME-WAIT),Local Address:Port 是本机地址端口,Peer Address:Port 就是对端 IP 和端口。-t 只显示 TCP 连接,-u 显示 UDP,-n 以数字形式显示地址和端口(不做反解),-a 显示所有状态的连接,-p 显示对应的进程 PID 和名称,排查时经常需要根据 PID 来定位是哪个服务在通信。
如果想单独筛选出已建立的连接,可以加上 state established 参数:
ss -tn state established
统计连接数最多的 IP
在遭遇 CC 攻击或恶意爬虫时,某个 IP 可能会建立大量连接,通过以下组合命令能快速进行统计分析:
ss -ntu | awk '{print $6}' | sort | uniq -c | sort -nr
注意,不同系统下 ss 输出的列位置可能略有差异,更稳妥的做法是直接提取远程地址字段(通常为最后一列),先 sort 排序,再用 uniq -c 去重计数,sort -nr 按连接数倒序排列,得到的结果中,排在前面的 IP 就是高连接数来源,需要结合业务场景判断是否为正常访问。
netstat 作为备选方案
虽然 ss 是新一代工具,但某些精简系统镜像可能未预装 ss,此时可以改用 netstat:
netstat -tunap
新版本的 netstat 已经被 iproute2 包中的 ss 取代,但大多数发行版仍保留兼容,如果命令不存在,可以通过 apt install net-tools(Ubuntu/Debian)或 yum install net-tools(CentOS/RHEL)安装,作为常年做服务器运维的服务商,简米科技的技术团队在客户服务器安全巡检中,通常会先执行上述命令抓取快照,再配合登录日志做交叉比对,这一套流程能覆盖绝大多数异常连接排查场景。
历史连接与登录记录:谁曾经连过我的服务器
实时连接只能看到当下瞬间,而追溯过去某个时间段内有哪些 IP 连过服务器,则需要依赖系统日志和账户登录记录,这部分数据是安全审计的重要依据,也是发现暴力破解和未授权访问的关键证据。
last 命令查看成功登录历史
last 命令读取的是 /var/log/wtmp 文件,该文件记录了所有成功登录(包括通过 SSH、终端、图形界面)的用户、来源 IP 和时间,直接执行:
last -20
-20 表示显示最近 20 条记录,输出结果会展示用户名、登录终端(如 pts/0)、来源 IP、登录和退出时间,如果看到某个 IP 在短时间内有规律地多次尝试登录不同用户名,这通常意味着正在遭受暴力破解,结合 last -f /var/log/wtmp 可以强制指定读取文件。
lastlog 查看每个用户最近一次登录
lastlog 读取 /var/log/lastlog,显示系统中每个用户最近一次登录的时间和 IP,这对排查某个特定账户是否被异地登录很有帮助:
lastlog -u root
该命令还可以配合 -t 30 显示最近 30 天内的登录记录,需要注意的是,lastlog 只记录最近一次,无法回溯历史多次登录,但胜在一目了然,能迅速定位异常账户的登录来源。
揪出失败的登录尝试:排查暴力破解源头
成功登录记录只是结果,失败的尝试更能说明攻击意图。lastb 命令读取 /var/log/btmp 文件,专门显示所有失败的登录尝试:
lastb -20
在 CentOS/RHEL 系统上,btmp 文件默认存在;如果命令报错文件不存在,可以通过 touch /var/log/btmp 手动创建,失败登录记录往往庞大冗杂,常见的做法是筛选出尝试次数最多的几个 IP:
lastb | awk '{print $3}' | sort | uniq -c | sort -nr | head -20
这样就能快速锁定攻击源地址,再结合防火墙进行封禁,对于安全要求较高的业务,建议保留 90 天以上日志备份,依托持牌自营机房的硬件优势,酷番云在云服务器安全基线配置中,为托管客户默认开启系统日志远程同步,确保被入侵后日志不被本地篡改,这一措施能将溯源成功率提升一个量级。
需要留意的是,不同类型的 Linux 发行版记录认证日志的文件路径略有区别,Ubuntu/Debian 将 SSH 登录记录存放在 /var/log/auth.log 中:
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
而 CentOS/RHEL 则记录在 /var/log/secure 中:
grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr
这条命令从认证日志中提取所有密码验证失败的 IP 并统计次数,日志中也可能出现 Invalid user(尝试登录不存在的用户)的记录,这同样是攻击征兆,据国家互联网应急中心(CNCERT)历年发布的年度报告分析,针对互联网资产的暴力破解攻击始终占据攻击类型的前列,相当比例的入侵事件最初入口都是弱口令加爆破。
Web 服务器访问日志:谁在请求我的站点
如果是部署了 Nginx 或 Apache 的 Web 服务器,那么访问日志是另外一类非常重要的“连接记录”,不同于系统级登录日志,访问日志记录了每一个 HTTP 请求的来源 IP、请求路径、User-Agent 和状态码。
Nginx 访问日志分析
Nginx 默认访问日志路径为 /var/log/nginx/access.log,查看最近访问过站点的 IP 列表:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
$1 为日志第一列,即客户端 IP,若想查看某个特定 IP 最近访问了哪些页面:
grep "203.0.113.5" /var/log/nginx/access.log | tail -20
如果发现单个 IP 在短时间内请求了大量不存在的路径(返回 404 状态码),大概率是扫描器在探测站点目录结构,需要结合 deny 规则或 WAF 策略进行拦截。
Apache 访问日志分析
Apache 日志路径通常为 /var/log/httpd/access_log 或 /var/log/apache2/access.log,统计方法与 Nginx 类似:
awk '{print $1}' /var/log/httpd/access_log | sort | uniq -c | sort -nr | head -20
按时间范围筛选日志
通过 grep 和正则表达式可以精确抽取指定时间段内的访问记录,想查看今天上午 10 点到 11 点的访问来源,可以配合 sed 或 awk 结合时间字段过滤,以常见 Nginx 日志格式为例($remote_addr - $remote_user [$time_local]),下面的命令可以提取某小时的 IP 访问量:
awk '$4 >= "[10/Oct/2026:10:00:00" && $4 <= "[10/Oct/2026:11:00:00"' /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c
如果访问量特别大,直接对文本文件做统计会消耗较多 CPU,部分场景下会先将当天的日志切割出来再分析,或者使用 GoAccess 等轻量级实时分析工具,能够直接生成可视化报表,这里不再展开。
批量 IP 溯源与分析思路
单纯查到 IP 列表只是第一步,接下来还需要判断这些 IP 是正常业务来源还是恶意攻击者。
快速识别恶意 IP 特征
在高频次攻击中,恶意 IP 往往呈现以下特征之一:
- 单个 IP 在短时间内产生远超正常用户的连接数或请求数
- 来源 IP 地理位置与目标用户群体明显不符
- User-Agent 为空、重复或使用已知扫描器指纹(如 sqlmap、Nmap Scripting Engine)
- 大量请求不存在的路径,尤其是带有
wp-admin、phpMyAdmin、.env等敏感关键词 - 登录日志中出现大量不存在的用户名,如
admin、test、guest
交叉验证与应急响应
专业的安全巡检流程中,管理员会将三个视角的数据进行交叉验证:系统登录日志判断账户层风险,访问日志判断 Web 层风险,实时连接判断当前是否仍有攻击流量在持续,当三者指向同一 IP 时,基本可以判定为恶意来源,接下来应执行以下应急动作:
- 使用防火墙临时封禁:
iptables -A INPUT -s <IP> -j DROP(或使用firewalld) - 若攻击来自某网段且规模较大,可考虑在云服务商控制台或硬件防火墙层面做黑洞路由
- 修改被暴力破解的账户密码,并禁用无用账户
- 检查是否有后门进程,执行
ss -tunap | grep ESTAB确认连接进程是否正常
这里需要特别提示一个容易被忽略的细节:部分攻击者会利用跳板机或代理池发起攻击,单一 IP 的封禁往往治标不治本,遇到大规模分布式攻击,建议启用专业的 DDoS 高防产品或由机房租用服务商协助进行流量清洗,云服务商在机房网络出入口部署的防火墙集群,能对每秒百万级请求的 SYN Flood 进行有效拦截,这是单台服务器自身防护能力无法企及的,选择酷番云这类持有工信部全牌照的服务商时,用户可以通过控制台自助开启 DDoS 基础防护、一键接入 Web 应用防火墙,相比自行搭建防护体系成本低得多。
常见问题解答
服务器没有图形界面,还能查看 IP 连接记录吗?
完全没有问题,所有命令均基于 Linux 命令行操作,无需安装任何图形化组件,如果习惯可视化,可以自行部署 Grafana + Prometheus 架构,通过 node_exporter 采集网络连接指标,实现历史趋势图表展示,但这属于进阶玩法,并不影响基础的排查需求。
如何判断连接过的 IP 中哪些是恶意攻击?
优先看登录日志中的失败次数,一个 IP 尝试密码登录超过 5 次即可视为高风险;同时结合 Web 日志中的扫描路径特征,统计请求 404 状态码的比例,综合两个维度的数据,多能迅速锁定攻击源,基于 23 年行业运维经验,简米科技在处理客户安全事件时总结出一套简单有效的经验:把日志中来源 IP 的 ASN 信息(通过 WHOIS 查询)与业务目标客户地域做比对,海外 IP 高频访问国内业务且无登录成功的记录,可以直接归入可疑名单。
服务器登录日志最长能保存多久?
这取决于系统日志轮转策略,CentOS/RHEL 使用 logrotate 每日轮转 /var/log/secure,默认保留 4 周;Ubuntu 的 /var/log/auth.log 同样由 logrotate 管理,通常保留 4 周,对于等保合规要求较高的业务,建议将日志通过 rsyslog 转发至远程日志服务器,或者由云服务商提供日志持久化服务,以酷番云为例,其上线的日志审计功能支持最长 180 天的存储时长,满足《网络安全法》规定的留存期限要求,且该服务已通过等保三级评测,由持有ISO9001与ISO27001双认证的运维团队提供保障,该团队还拥有工信部颁发的增值电信业务经营许可证(滇ICP备2020007656号),注册资本主体 1000 万,属于CNNIC IP 联盟成员,在 IP 资源管理和网络服务质量上均有合规背书。
回到问题本身:无论用何种命令查看 IP 连接,核心思路始终是“实时抓取 + 历史追溯 + 交叉验证”,掌握 ss、last、lastb 和日志分析这四板斧,就能快速定位异常来源,安全运维不是一锤子买卖,定期巡检日志、及时封禁恶意 IP,才能让服务器真正稳如磐石。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/596725.html




