数字化技能提升教程,数字化时代生存宝典

Linux端口暴露检查教程:使用ss与Nmap发现多余服务

浏览:130

服务器安装数据库、面板或监控工具后,部分服务可能自动监听公网地址。如果没有及时检查,管理后台、数据库和内部接口就可能被外部访问。

端口检查应同时从服务器内部和外部网络进行。内部检查负责确认哪些进程正在监听,外部扫描则用于验证防火墙和云安全组是否真正生效。

一、查看服务器监听端口

使用ss查看TCP和UDP监听状态:

sudo ss -lntup

常用参数含义如下:

  • l:只显示监听端口
  • n:直接显示端口数字
  • t:显示TCP
  • u:显示UDP
  • p:显示对应进程

如果只检查TCP端口,可以执行:

sudo ss -lntp

重点关注监听地址:

127.0.0.1:3306
0.0.0.0:3306
[::]:3306

127.0.0.1只允许本机访问;0.0.0.0通常表示监听所有IPv4接口;[::]表示监听IPv6接口,部分系统也可能同时接受IPv4连接。

二、查找端口对应的进程

假设发现8080端口,可执行:

sudo lsof -nP -iTCP:8080 -sTCP:LISTEN

也可以通过进程ID查看程序路径:

sudo readlink -f /proc/进程ID/exe
sudo systemctl status 服务名称

不要在不了解用途的情况下直接结束进程。它可能属于网站、监控、备份或其他业务服务。

三、从外部扫描服务器

在另一台已经获得授权的设备上运行:

nmap -sT -Pn 服务器IP

检查指定端口:

nmap -sT -Pn -p 22,80,443,3306,6379 服务器IP

只应扫描自己管理或已经获得授权的服务器。外部扫描结果可以帮助发现云安全组、系统防火墙和服务监听配置之间的差异。

四、处理多余开放端口

确认某个服务不需要外部访问时,可以采取以下措施:

  1. 停止并禁用不再使用的服务。
  2. 将服务监听地址改为127.0.0.1或内网地址。
  3. 使用系统防火墙限制来源IP。
  4. 删除云安全组中的多余规则。
  5. 重新执行内部检查和外部扫描。

数据库、Redis、Docker API和管理面板不应在没有访问控制的情况下直接暴露。

五、建立定期检查

建议在以下时间重新检查端口:

  • 新安装软件后
  • 修改防火墙后
  • 系统升级后
  • 网站迁移后
  • 发生安全事件后
  • 每月例行巡检时

可以将端口清单与服务负责人、用途和允许来源一起记录,便于后续审计。

常见问题

1、服务器内部显示监听,为什么外部无法访问?

系统防火墙、云安全组、路由或服务访问控制可能已经拦截。需要从外部网络验证实际暴露情况。

2、修改默认端口能提高安全吗?

可以减少部分自动扫描,但不能代替身份认证、防火墙、来源限制和软件更新。

3、发现陌生端口应该立即关闭吗?

不建议。先确认对应进程、软件包和业务用途,再制定停用和回滚方案。

相关文章
猜你喜欢