排查Linux异常UDP端口需先用sudo ss -uulpn发现监听端口及进程,再确认是否绑定0.0.0.0、有无业务依据、进程路径是否可疑,最后通过防火墙拦截或停用服务安全封禁。

排查 Linux 系统中异常开放的 UDP 端口,关键在于“先发现、再确认、后封禁”——不能只看端口是否在监听,更要判断它是否该开、由谁开启、是否暴露在公网、有无业务依据。
快速定位所有监听中的 UDP 端口
用 ss(推荐)或 netstat 查出当前正在监听的 UDP 套接字:
- sudo ss -uuln:显示所有 UDP 监听端口(-u UDP,-l listening,-n 数字格式)
- sudo ss -uulpn:加 -p 显示对应进程名和 PID(需 root 权限),这是识别异常的核心一步
- 若系统无 ss,可用 sudo netstat -uulnp 替代(部分发行版需先安装 net-tools)
注意过滤掉仅本地回环监听项(如 127.0.0.1:53 或 [::1]:53),真正要警惕的是绑定在 0.0.0.0 或具体公网 IP 上的 UDP 端口。
识别高风险 UDP 端口与可疑进程
重点关注以下几类情况:
-
非标准端口且无明确业务用途:例如
:68(DHCP 客户端一般不监听)、:161(SNMP 若未部署却开启)、:5353(mDNS)、:5355(LLMNR),或像:6379(Redis 默认不监听 UDP)、:27017(MongoDB 不走 UDP)等本不该出现 UDP 监听的服务端口 - 监听地址为 0.0.0.0 或 [::]:表示该 UDP 端口对所有网络接口开放,可能被外部探测或滥用
-
进程名异常:如
unknown、./a.out、/tmp/.x、路径含随机字符串(/dev/shm/XXXXX)、或exe指向 symlink 到已删除文件(ls -la /proc/PID/exe可验证)
深入验证可疑 UDP 进程合法性
拿到 PID 后,别急着 kill,先交叉验证其真实性:
- ps -fp PID:查看完整启动命令、运行用户、启动时间,判断是否符合运维习惯
-
ls -la /proc/PID/exe:确认可执行文件真实路径;若显示
(deleted)或指向临时目录,高度可疑 - lsof -iUDP :PORT:换一个工具再次确认端口占用(需安装 lsof),比对结果是否一致
-
systemctl status $(basename $(readlink /proc/PID/exe) 2>/dev/null):若进程属系统服务,查其启用状态和配置来源(如
/etc/systemd/system/xxx.service)
安全封禁方式:按场景选择合适手段
封禁 ≠ 直接 kill 进程。优先采用最小权限、可逆、可审计的方式:
-
防火墙拦截(推荐首选):
• firewalld:sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="PORT" protocol="udp" reject',然后firewall-cmd --reload
• UFW:sudo ufw deny udp PORT -
停用对应服务(如确属非必要系统服务):
sudo systemctl disable --now service-name(例如avahi-daemon、rpcbind) -
修改服务配置限制监听范围:例如编辑
/etc/default/avahi-daemon加AVAHI_DAEMON_DETECT_LOCAL=0,或在/etc/avahi/avahi-daemon.conf中设allow-interfaces=lo -
仅在紧急确认恶意时 kill 进程:
sudo kill -9 PID,但务必同步记录日志、保留内存快照(如用gcore)并溯源
封禁后,用 sudo ss -uuln | grep PORT 和 sudo firewall-cmd --list-all(或 ufw status verbose)双重验证是否生效。


















