UFW 防火墙端口管理一键脚本
本卡片记录服务器上用于快速放行和管理 UFW(Uncomplicated Firewall)端口规则的交互式 Bash 脚本,支持 TCP、UDP 以及双协议(Both)的快速切换和自动刷新生效。
一、 一键管理脚本 (dk.sh)
cat << 'EOF' > dk.sh
#!/bin/bash
echo "=========================================="
echo " UFW 端口快捷管理脚本 (支持双协议)"
echo "=========================================="
# 检查权限
if [ "$EUID" -ne 0 ]; then
echo "❌ 错误: 请使用 root 权限运行此脚本。"
exit 1
fi
# 获取用户输入
read -p "请输入需要开放的端口号 (1-65535): " PORT
if ! [[ "$PORT" =~ ^[0-9]+$ ]] || [ "$PORT" -lt 1 ] || [ "$PORT" -gt 65535 ]; then
echo "❌ 错误: 端口号无效。"
exit 1
fi
# 获取协议类型,增加 both 选项并作为默认值
read -p "请输入协议类型 (输入 tcp、udp 或 both,直接回车默认 both): " PROTOCOL
PROTOCOL=${PROTOCOL:-both}
# 将输入统一转换为小写,增加容错性
PROTOCOL=$(echo "$PROTOCOL" | tr '[:upper:]' '[:lower:]')
# 根据输入执行放行指令
if [[ "$PROTOCOL" == "both" ]]; then
echo "正在放行端口 $PORT (同时包含 TCP 与 UDP) ..."
ufw allow $PORT >/dev/null 2>&1
elif [[ "$PROTOCOL" == "tcp" || "$PROTOCOL" == "udp" ]]; then
echo "正在放行端口 $PORT/$PROTOCOL ..."
ufw allow $PORT/$PROTOCOL >/dev/null 2>&1
else
echo "❌ 错误: 协议只能是 tcp、udp 或 both。"
exit 1
fi
ufw reload >/dev/null 2>&1
echo "✅ 端口规则已成功添加!"
echo "--- 当前防火墙状态 ---"
ufw status
echo "=========================================="
EOF
chmod +x dk.sh二、 常用防火墙管理命令
在没有使用脚本时,也可以通过以下 UFW 常用指令直接操作:
1. 基础状态管理
# 查看防火墙状态(含规则编号,便于删除)
ufw status numbered
# 启用防火墙
ufw enable
# 禁用防火墙
ufw disable
# 重载配置文件
ufw reload2. 添加与放行规则
# 限制 SSH 爆破(30秒内有6次以上连接尝试将自动封禁该 IP 端口)
ufw limit 60621/tcp
# 仅允许指定 IP 访问某端口(安全加固必选)
ufw allow from *.*.*.100 to any port 3306 proto tcp3. 删除规则
# 方法 A:按编号删除(推荐,先运行 ufw status numbered)
ufw delete 3
# 方法 B:直接用规则表达式删除
ufw delete allow 80/tcp相关链接
- Debian系统安全加固与优化 系统层 UFW/Fail2ban 深度联动与网络优化
- Linux运维与文件传输 系统端口及网络连通性排查