Linux 检查异常端口开放情况

2次阅读

Linux 检查异常端口开放情况

linux 系统中排查异常端口开放,核心是确认哪些端口正在监听、由哪个进程启动、是否在预期范围内。重点看非标准服务端口(如 22、80、443、3306 等常见端口之外)、监听在 0.0.0.0 或公网 IP 上的端口,以及无明确业务需求却长期开启的端口。

查看所有监听中的 TCP/udp 端口

使用 ss(推荐,比 netstat 更快更可靠)或 netstat 查当前监听状态:

  • sudo ss -tuln:显示所有监听的 TCP(-t)和 UDP(-u)端口,数字形式(-n),不解析名称(-l 表示 listening)
  • sudo ss -tulpn:加 -p 显示对应进程(需 root 权限),能直接看到 PID 和程序名,是定位异常端口的关键一步
  • 若系统无 ss,可用 sudo netstat -tulnp 替代(部分发行版需安装 net-tools

重点关注高风险监听配置

检查输出中以下几类情况:

  • 监听地址为 0.0.0.0:[::]::表示该端口对所有网络接口开放,包括公网——除非明确需要,否则应限制为 127.0.0.1(仅本地)
  • 非标准端口且无已知服务绑定:例如 :5901(VNC)、:6379redis 默认未授权)、:27017mongodb)、:9200elasticsearch)等,若未部署对应服务却在监听,需警惕
  • 进程名异常或路径可疑:如 ./a.out/tmp/.xunknown、或路径含随机字符串,可能为恶意程序

进一步验证可疑进程

拿到 PID 后,深入检查其合法性:

  • ps -fp <pid></pid>:查看完整启动命令和用户
  • ls -la /proc/<pid>/exe</pid>:确认可执行文件真实路径(注意是否为 symlink)
  • lsof -i :<port></port>:另一视角验证端口占用(需安装 lsof
  • systemctl status <service_name></service_name>:若属系统服务,查其启用状态和配置文件位置(如 /etc/systemd/system/xxx.service

快速筛查与日常加固建议

减少人工遗漏,可配合简单脚本或策略:

  • 定期运行 sudo ss -tulnp | grep -v '127.0.0.1|::1' 快速过滤掉仅本地监听项
  • firewall-cmd --list-ports(firewalld)或 ufw status verbose(UFW)核对外围防火墙是否实际放行了这些端口
  • 禁用不需要的服务:sudo systemctl disable --now xxx.service
  • 修改服务配置,将 bindlisten 地址设为 127.0.0.1(如 Redis 的 bind 127.0.0.1
text=ZqhQzanResources