ufw不直接支持应用层名称规则,但可通过应用配置文件将服务名映射到端口/协议组合实现便捷配置;配置文件存于/etc/ufw/applications.d/,可用ufw allow '服务名'启用,需预先注册且大小写敏感。

UFW(Uncomplicated Firewall)本身不直接支持基于应用层名称(如“Apache”“PostgreSQL”“Transmission”)的规则管理,它工作在传输层(TCP/UDP端口)和网络层(IP),但可以通过内置的 应用配置文件(application profiles) 实现“类应用名”的便捷规则配置——本质是把服务名映射到端口+协议组合,再生成对应 iptables 规则。
什么是 UFW 应用配置文件
UFW 的 /etc/ufw/applications.d/ 目录下存放文本格式的 profile 文件,每个文件定义一个服务的名称、描述及端口/协议信息。例如 nginx profile 可能包含:
[Nginx Full]<br> title=Web Server (Nginx, HTTP + HTTPS)<br> description=Small, scalable web server<br> ports=80,443/tcp
安装 Nginx 后,UFW 通常会自动提供该 profile;其他服务可手动创建或通过
ufw app list 查看已注册的服务。如何使用应用名添加规则
确认 profile 存在后,即可用服务名代替端口号操作:
-
sudo ufw allow 'Nginx Full'→ 开放 80 和 443 TCP -
sudo ufw allow 'OpenSSH'→ 等效于allow 22/tcp -
sudo ufw delete allow 'PostgreSQL'→ 删除对应规则(需先添加过)
注意:服务名需用单引号包裹(尤其含空格时),大小写敏感,且必须已注册到 UFW。
手动创建自定义应用配置文件
以 myapp 为例(监听 8080 TCP):
- 新建文件:
sudo nano /etc/ufw/applications.d/myapp - 填入内容:
[MyApp]<br>title=Internal API Service<br>description=REST service on port 8080<br>ports=8080/tcp
- 重载配置:
sudo ufw app update MyApp - 验证:
sudo ufw app info MyApp应显示端口与描述 - 启用:
sudo ufw allow 'MyApp'
注意事项与常见问题
应用 profile 是静态映射,不感知进程状态或实际运行情况。例如:
- 即使 Nginx 没在运行,ufw allow 'Nginx Full' 仍会开放端口;
- 若服务改用非标端口(如 SSH 改为 2222),原 OpenSSH profile 不适用,需新建或直接按端口配置;
- profile 不支持动态协议(如 FTP 数据连接)、ALG 或应用层过滤(如 HTTP 路由、SQL 注入拦截)——这些需搭配 fail2ban、nginx ACL 或专用 WAF。











