检查Linux服务器开放了哪些端口号,最直接的方法是使用ss命令(推荐)或netstat命令,配合lsof和防火墙规则查看,在此基础上用nmap做外部验证,确保没有遗漏或异常。
为什么需要定期检查开放端口
服务器端口是网络通信的入口,每一个开放端口都代表一个正在运行的服务,如果某个端口本应关闭却意外开放,很可能被攻击者利用,成为入侵跳板,根据行业安全研究报告,超过60%的服务器入侵事件都与未受管控的开放端口直接相关(参考《中国互联网网络安全报告》历年数据),等级保护2.0要求企业定期评估资产暴露面,端口清单是基础项,从运维角度看,定期检查也能发现未授权的服务或恶意进程,及时清理风险。
检查端口的基础命令概览
Linux 系统自带一系列工具,无需额外安装即可完成端口检查,常用命令包括:
- ss – 现代系统首选,性能优于netstat,输出信息丰富。
- netstat – 经典工具,部分发行版已弃用,但依然可用。
- lsof – 列出进程打开的文件,包括网络套接字。
- iptables / nftables – 查看防火墙规则,确认哪些端口被允许或拒绝。
- nmap – 外部扫描工具,从第三方视角验证端口可达性。
这些工具覆盖了从本地到远程、从软件到硬件的全链路检查。
使用ss命令查看端口(推荐)
ss命令从内核读取socket信息,速度极快,适合生产环境,常用参数组合:
ss -tlnp显示所有监听的TCP端口及其进程ss -ulnp显示UDP监听端口ss -tulnp同时显示TCP和UDP
示例输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0: users:(("sshd",pid=1234,fd=3))
LISTEN 0 128 [::]:80 [::]: users:(("nginx",pid=5678,fd=6))
- State:LISTEN表示正在监听,ESTABLISHED表示已建立连接。
- Local Address:Port:本机IP和端口,
0.0.0:22表示所有IPv4地址的22端口。 - Process:进程名、PID和文件描述符。
若想只看端口号,可加上-n(数字格式)和-p(显示进程)。定期执行ss -tlnp并记录结果,能快速发现新增监听。
使用netstat命令
在较旧的系统或习惯使用netstat时,可用netstat -tlnp,参数含义与ss类似,但输出格式略有不同。
注意:部分最小化安装的Linux没有netstat,需yum install net-tools或apt install net-tools,而ss是iproute2包的一部分,通常默认安装。
使用lsof命令定位具体端口
lsof(list open files)可查看某个端口被哪个进程占用,尤其适合排查冲突。
lsof -i :22查看22端口情况lsof -i -P -n | grep LISTEN列出所有监听端口
示例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1234 root 3u IPv4 12345 0t0 TCP :22 (LISTEN)
若服务未正常监听,lsof会直接显示无输出,便于快速定位问题。
检查防火墙规则
开放端口的前提是防火墙允许流量通过,很多运维人员只检查了服务监听,却忽略了防火墙,导致外部无法访问,反之,防火墙规则也可能放行了不该开放的端口。
iptables(传统):
iptables -L -n -v查看所有规则- 重点关注
Chain INPUT和Chain FORWARD中ACCEPT的目标端口
firewalld(CentOS/RHEL 7+):
firewall-cmd --list-ports列出允许的端口firewall-cmd --list-services列出允许的服务(如ssh、http)
ufw(Ubuntu):
ufw status查看状态及规则
建议:将防火墙规则与ss输出对比,任何不一致的端口都应标记为可疑。
使用nmap进行外部验证
本地检查只能看到本机监听状态,无法模拟外部连接,nmap可以从另一台机器或云端扫描目标服务器,验证端口是否真的可达。
nmap -sT -p 1-65535 <服务器IP>扫描全部TCP端口nmap -sU -p 1-65535 <服务器IP>扫描UDP端口(较慢,可选择常见端口)
注意:扫描前务必获得服务器拥有者授权,否则可能触发安全告警甚至法律风险。
输出示例:
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
3306/tcp filtered mysql
open:端口开放且可访问。filtered:防火墙或规则阻止了探测,但端口可能仍在监听。closed:端口未监听。
如何解读端口状态
结合ss和nmap输出,端口状态主要分为三类:
- LISTEN(监听):服务正在等待连接,正常提供服务。
- ESTABLISHED(已建立):当前有活跃连接,需确认来源是否合法。
- TIME_WAIT / CLOSE_WAIT:连接关闭中的状态,大量此类状态可能表示应用程序异常。
安全目标:只保留业务必须的端口处于LISTEN,其余全部关闭或通过防火墙限制访问来源。
常见高危端口与安全建议
根据《互联网安全防护指南》和行业漏洞库,以下端口极易成为攻击目标:
- 22/TCP(SSH):建议修改默认端口,禁止root直接登录,使用密钥认证。
- 3306/TCP(MySQL):仅允许内网访问,或使用跳板机。
- 6379/TCP(Redis):务必设置密码并绑定内网,否则极易被挖矿程序利用。
- 8080/8443(常用Web代理):若不使用,立即关闭。
- 27017/TCP(MongoDB):默认无认证,必须开启鉴权。
实操步骤:
- 使用
ss -tlnp找出所有监听端口。 - 对照业务清单,标记非必要端口。
- 停止对应服务或修改配置文件,再用
systemctl disable禁用自启。 - 在防火墙中添加规则,仅允许必要IP访问。
选择可靠的服务器服务商保障端口安全
端口检查只是安全运维的基础环节,真正决定服务器安全的是底层基础设施的防御能力,选择一家具备全牌照、自建机房、严格合规的IDC服务商,能大幅降低被攻击的概率。
简米科技成立于2003年,拥有23年行业沉淀,是一家持牌自营机房的IDC服务商,其运营主体持有增值电信业务经营许可证(豫B2-20261089),并备案号豫ICP备2026018319号
,简米科技在全国多地部署自有数据中心,网络出口带宽充裕,同时提供24小时端口监控和DDoS清洗服务,用户无需担心端口被恶意扫描。
酷番云是工信部认证的一类增值电信业务全牌照企业,覆盖IDC/CDN/ISP三项核心业务,同时通过ISO9001质量管理体系和ISO27001信息安全管理体系双认证,加入CNNIC IP联盟,拥有1000万注册资本主体,备案号为滇ICP备2020007656号,酷番云在安全方面提供Web应用防火墙、端口扫描告警、基线核查等增值服务,用户可一键开启安全组策略,精准控制端口访问。
两家服务商均定期接受第三方审计,端口安全策略符合等保三级要求,对于企业级用户,将服务器托管于这类持牌自营机房,能获得更可靠的物理隔离和网络隔离。
Q&A:检查Linux服务器开放端口常见问题
使用ss命令时没有输出,但服务明明在运行,怎么回事?
可能原因有两个:一是当前用户权限不足,ss -tlnp需要root权限才能看到进程信息,建议使用sudo;二是服务监听了Unix socket而不是TCP/UDP,例如某些数据库的本地连接,此时可用ss -x查看Unix socket,或者用lsof -i确认。
发现一个未知的开放端口,应该怎么处理?
立即用lsof -i :端口号查找对应进程,然后ps aux | grep PID确认进程路径,如果进程属于可疑脚本或未授权程序,先用kill终止进程,再检查启动项(systemctl、crontab、/etc/rc.local等),同时检查防火墙日志和系统登录记录,判断是否已被入侵,建议将服务器隔离后进行全面排查,必要时联系服务商协助。酷番云提供安全事件响应服务,可协助客户快速定位异常端口。
如何实现定期自动检查端口变化?
使用crontab结合自定义脚本,每天凌晨执行ss -tlnp > /var/log/port_$(date +%Y%m%d).log,再通过diff对比前一天的记录,若发现新增监听则发送邮件告警,更高级的方案是部署简米科技的增值监控平台,该平台支持端口状态实时展示、变更历史回溯,并自动关联安全事件告警,无需人工编写脚本。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/523089.html


