服务器开了哪些端口?3条命令全查清 1. 服务器开了哪些端口3条命令全查清2. 端口扫描暴露你的服务器3招自查隐匿服务3. 你的服务器在裸奔3条命令揪出隐藏端口### 正文内容昨天帮一个客户做安全评估扫了一下他们的服务器——好家伙开了147个端口。其中有个Redis直接绑在了公网0.0.0.0上6379端口大开密码还是空的。开发团队说这是测试环境没事的。测试环境黑客可不管你什么环境。很多运维人都有一个错觉服务器上运行的服务我都知道。但现实是——历史遗留服务、临时调试端口、自动启动的组件……这些隐形炸弹你根本想不到。今天教你3条命令把服务器上的端口翻个底朝天。第一招ss命令——看谁在监听ss是netstat的现代替代品速度快信息全。一条命令就能看到所有监听端口ss -tlnp | grep LISTEN输出大概长这样State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:22 0.0.0.0:* sshd LISTEN 0 80 0.0.0.0:3306 0.0.0.0:* mysqld LISTEN 0 511 0.0.0.0:6379 0.0.0.0:* redis-server关键看这3列Local Address——如果是0.0.0.0说明监听所有网卡公网也能访问Port——记录端口号对照常用端口表检查是否异常Process——哪个进程占的端口不认识的马上查特别注意看到127.0.0.1开头的端口基本安全只允许本机访问但如果绑的是0.0.0.0或具体公网IP就要高度警惕了。第二招lsof命令——深度排查端口归属ss有时候看不到容器或特殊进程的信息这时候上lsoflsof -i -P -n | grep LISTEN这招能查到更底层的端口占用包括那些隐藏在Docker容器或systemd服务里的端口。我之前遇到过一次诡异情况——ss看不到的端口lsof查出来是一个僵尸进程占着。要不是用lsof深挖根本发现不了。# 进一步过滤指定端口 lsof -i :8080 -P -n # 查看指定进程打开的所有端口 lsof -p PID -i -P -n小技巧把结果和你的CMDB配置管理数据库对一下多出来的端口就是嫌疑对象。第三招nmap自查——用黑客的武器查自己最后这一步最狠——用nmap从外部扫描自己的服务器# 在另一台机器上执行模拟外部视角 nmap -sS -sV -p- 服务器IP # 只扫常见高风险端口 nmap -sS -p 21,22,23,25,53,80,110,135,139,443,445,1433,1521,3306,3389,5432,6379,8080,8443,9200,27017 服务器IP参数说明-sS半连接扫描速度快不留记录-sV探测服务版本帮你判断有没有已知漏洞-p-扫描全部65535个端口这一步会告诉你一个残酷的事实——你自己以为关掉的端口可能还开着。很多防火墙规则改了但没生效或者服务重启后又回到了默认配置。扫描完怎么处理发现可疑端口后的标准动作# 1. 确认进程归属 systemctl status 进程名 # 2. 如果确认不需要停掉服务 systemctl stop 服务名 systemctl disable 服务名 # 3. 防火墙层面封堵双保险 iptables -A INPUT -p tcp --dport 端口号 -j DROP # 4. 如果是必须对外开放的服务限制IP白名单 iptables -A INPUT -p tcp --dport 端口号 -s 信任IP -j ACCEPT iptables -A INPUT -p tcp --dport 端口号 -j DROP最后说个实在话很多人觉得我的服务器在内网安全。但内网被突破的案例太多了——钓鱼邮件、VPN被盗、供应链攻击……一旦攻击者进入内网端口扫描就是他们横向移动的第一步。建议做成定期巡检脚本每周自动跑一次把结果发到运维群#!/bin/bash # port_audit.sh echo 端口巡检 $(date) echo 【监听端口】 ss -tlnp | grep -E 0.0.0.0|:: echo 【异常端口检查】 ss -tlnp | grep -vE :(22|80|443|3306)\s | grep LISTEN加到crontab里每周一早上自动报告。安全不是一次性的事是持续监控的事。你上次扫描服务器端口是什么时候评论区说说看