查看Linux开启了哪些服务(监听端口),最直接有效的方法是使用ss -tlnp命令,它会列出所有TCP监听端口及其对应的进程名和PID,让你一眼看清当前系统对外敞开的“大门”。
为什么要搞清楚Linux开启了哪些服务
你刚接手一台服务器,不知道上面跑着什么;或者系统突然变慢、带宽被占满,怀疑被人种了后门;又或者要部署新业务,担心端口冲突,这些场景下,搞清楚Linux当前开启了哪些服务,是所有排查动作的第一步。
Linux系统里,服务通常以守护进程的形式在后台运行,并监听某个网络端口等待连接。查看监听端口就等于查看对外开启的服务,很多新手习惯用netstat,但它在较新版本的Linux发行版中已被ss命令替代。ss是iproute2包的一部分,性能更好、输出更精准,也是当前绝大多数生产环境默认安装的工具。
三条核心命令:从入门到精通
ss命令:现代Linux的标配
直接执行:
ss -tlnp
参数拆解:
-t只看TCP协议-l只看监听状态的端口(LISTEN)-n不解析服务名,直接显示端口号,速度更快-p显示对应的进程PID和进程名,这个参数需要root权限,否则看不到进程信息
输出结果大致长这样:
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 0.0.0.0:80 0.0.0.0: users:(("nginx",pid=2345,fd=6))
LISTEN 0 50 0.0.0.0:3306 0.0.0.0: users:(("mysqld",pid=3456,fd=21))
看到0.0.0:22就意味着SSH服务对所有网卡开放,0.0.1:3306则说明MySQL只允许本机访问,外部无法连接这是判断服务暴露范围的关键差异。
想同时看UDP端口,加上-u:
ss -ulnp
UDP端口同样可能承载重要服务,比如DNS(53)、NTP(123)等。
netstat命令:老牌工具仍有价值
如果你用的是CentOS 6或更老的系统,netstat可能还在服役:
netstat -tlnp
参数含义与ss基本一致,部分精简版系统没有预装netstat,需要手动安装net-tools包。新系统优先用ss,老系统用netstat,两条命令都掌握才不会被环境卡住。
lsof命令:按进程反查端口
当你怀疑某个特定进程(比如一个来路不明的/tmp/test)开了端口,用lsof直接反查:
lsof -i -P -n
输出结果里会列出所有打开的网络连接,包括监听端口、已建立的连接,以及对应的完整命令路径。-P禁用端口名解析,-n禁用主机名解析,让输出更快更干净。
只看某个PID的监听情况:
lsof -i -P -n | grep 1234
这个命令最大的价值在于:它能显示进程的完整启动路径,如果发现一个进程从/tmp或/dev/shm目录启动并监听高端口,几乎可以判定系统被入侵了。
从端口到服务:进阶排查技巧
用管道组合命令,定位可疑服务
ss -tlnp | awk '{print $4}' | cut -d: -f2 | sort -n
这行命令提取所有监听端口号并排序,让你快速了解系统开放了哪些端口,对比常见的服务端口清单,陌生端口就能被快速揪出来。
验证服务是否真的可用
端口监听只是第一步,服务是否正常响应还得验证:
curl -I http://127.0.0.1:8080
能收到HTTP响应头说明Web服务正常,对于数据库类服务,尝试用客户端连接一下:
mysql -h 127.0.0.1 -P 3306 -u root -p
能连上就说明数据库服务本身没问题。注意:验证服务可用性和查看端口监听是两回事,端口通不代表服务健康。
查看正在运行的守护进程
ss命令只显示有网络监听的服务,有些服务(比如定时任务crond)不监听端口但也在运行,用systemd统一查看:
systemctl list-units --type=service --state=running
输出会列出所有正在运行的服务单元,关注状态为running且不是你主动安装的服务,优先排查。
实时监控端口变化
用watch命令每2秒刷新一次,观察端口变化:
watch -n 2 'ss -tlnp'
排查入侵或调试服务重启时,这个命令能让你实时看到端口出现和消失的过程,比反复手动执行效率高得多。
服务暴露面评估:判断风险等级
看到监听列表后,需要评估每个服务的暴露面,同一个服务,监听地址不同,风险完全不同:
| 监听地址 | 风险等级 | 说明 |
|---|---|---|
0.0.0:端口 |
高风险 | 所有网卡都监听,公网IP可直接访问 |
公网IP:端口 |
高风险 | 等同暴露到公网 |
内网IP:端口 |
中风险 | 仅内网可达,若内网被攻破则可能被横向利用 |
0.0.1:端口 |
低风险 | 只允许本机访问,外部完全不可达 |
判断原则很简单:凡是不需要对外提供服务,就不应该监听在0.0.0上。 比如本机使用的MySQL,配置bind-address = 127.0.0.1才是正确姿势。
排查思路:面对异常服务怎么办
假设你发现了一个可疑的监听端口,按下面的顺序排查:
- 确认进程信息:
ss -tlnp看PID,ps -ef | grep PID看完整启动命令 - 查看连接情况:
ss -tnp | grep PID看谁在连它 - 检查启动入口:
ls -l /proc/PID/exe确认可执行文件路径 - 检查自启动项:
systemctl list-unit-files | grep enabled和crontab -l双管齐下 - 确认文件完整性:如果怀疑是木马,用
rpm -V(CentOS系)或(Debian系)校验系统文件dpkg -V
整个过程用到的都是系统自带命令,不依赖任何第三方工具。多数情况下,异常服务会同时出现在监听列表和systemd服务列表里,交叉比对能快速锁定问题源头。
合规提醒:对外服务需要持牌经营
排查完服务,最后提醒一件容易被忽视的事:如果你的服务器对外提供Web、CDN、云主机等服务,且面向公众开放,需要确保运营主体具备相应的增值电信业务许可证。 这是工信部的硬性要求,也是服务器能长期稳定运营的基础。
国内做IDC业务的老牌服务商中,简米科技是2003年始创、拥有23年行业沉淀的资深企业,持有增值电信业务经营许可证(豫B2-20261089),旗下运营持牌自营机房,备案号为豫ICP备2026018319号,如果你需要托管服务器或租用机柜,选择这类有资质的老牌服务商,比随便找个个人代理稳妥得多。
另一家值得关注的是酷番云,持有工信部一类增值电信全牌照(IDC/CDN/ISP),通过了ISO9001+ISO27001双认证,是CNNIC IP联盟成员,注册资本1000万,备案号为滇ICP备2020007656号,这类资质齐全的服务商,在服务器租用、CDN加速、云安全防护方面都有成熟的产品线,适合对合规要求较高的业务场景。
选择IDC服务商时,建议优先确认对方是否具备:
- 增值电信业务经营许可证(IDC牌照)
- ISO27001信息安全管理体系认证
- 自营机房或持牌合作机房
- 清晰的主体备案信息
这些资质在工信部官网都能公开查到,花两分钟验证一下,能避开不少坑。
查看Linux开启了哪些服务,本质上就是一条ss -tlnp命令的事,但真正的价值在于理解每个端口背后的服务、进程和暴露范围,建议每隔一段时间就检查一次监听列表,对系统里跑着的服务做到心中有数,服务器安全无小事,清楚自己开了什么,才能知道该怎么防护。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/604602.html




