You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu服务器下使用UFW配置IP白名单访问网站并通过Cron刷新列表的问题咨询

Ubuntu服务器下使用UFW配置IP白名单访问网站并通过Cron刷新列表的问题咨询

嘿,你的思路有可取之处,但UFW的应用配置文件(app profile)本身只能定义端口/协议集合,没法直接引用外部IP列表文件。不过我们可以把应用配置和脚本结合起来,完美实现你要的“白名单+定时刷新”需求,具体步骤如下:

一、先确认你的应用配置文件没问题

你已经写的[My App]配置是有效的,先把它放到UFW的应用配置目录里:

  • 把内容保存到/etc/ufw/applications.d/my-web文件里
  • 执行sudo ufw app update My Web让UFW识别这个应用

这样之后,我们就可以直接用My Web这个名称来指代80/tcp和443/tcp端口,不用重复写端口号了。

二、准备IP白名单文件

创建你说的/var/www/allowed_ips.txt,每个IP(或CIDR网段)单独一行,支持注释行(以#开头),比如:

# 办公室IP段
192.168.1.0/24
# 个人办公电脑IP
10.0.0.5
# 云监控服务器IP
45.xx.xx.xx

三、编写自动更新UFW规则的脚本

我们需要一个脚本,先清理旧的白名单规则,再批量添加新的IP规则。创建/usr/local/bin/update_ufw_whitelist.sh,内容如下:

#!/bin/bash

# 定义我们要允许的应用名称(和之前的app profile对应)
TARGET_APP="My Web"
# IP白名单文件路径
IP_FILE="/var/www/allowed_ips.txt"

# 1. 删除所有带WHITELIST标记的旧规则
# 用numbered状态输出找到对应规则,倒序删除避免编号混乱
ufw status numbered | grep -E "ALLOW.*WHITELIST" | awk '{print $1}' | sort -rn | while read -r rule_num; do
    ufw --force delete "$rule_num"
done

# 2. 遍历IP列表,添加新的允许规则
while IFS= read -r ip_addr; do
    # 跳过空行和注释行
    [[ -z "$ip_addr" || "$ip_addr" =~ ^# ]] && continue
    # 给这个IP添加访问My Web应用的权限,加WHITELIST注释方便后续识别
    ufw allow from "$ip_addr" app "$TARGET_APP" comment "WHITELIST"
done < "$IP_FILE"

# 3. 重新加载UFW确保规则生效
ufw reload

给脚本添加执行权限:

sudo chmod +x /usr/local/bin/update_ufw_whitelist.sh

四、测试脚本是否正常工作

执行脚本:

sudo /usr/local/bin/update_ufw_whitelist.sh

然后运行sudo ufw status verbose,你应该能看到所有白名单IP对应的规则,并且都带有WHITELIST注释。

五、设置Cron定时自动刷新

现在让脚本定时运行,比如每天凌晨3点刷新一次:

  1. 编辑root的crontab:
sudo crontab -e
  1. 在末尾添加一行:
0 3 * * * /usr/local/bin/update_ufw_whitelist.sh >> /var/log/ufw_whitelist_update.log 2>&1

这行的意思是每天凌晨3点执行脚本,把输出和错误信息写到/var/log/ufw_whitelist_update.log里,方便后续排查问题。

额外提醒

  • 确保UFW是启用状态:sudo ufw enable
  • 如果之前你直接添加过允许80/443端口的规则(比如ufw allow 80/tcp),记得删掉这些规则,否则非白名单IP也能访问:sudo ufw delete allow 80/tcp、sudo ufw delete allow 443/tcp
  • 可以根据自己的需求调整Cron的执行频率,比如每小时刷新一次就写成0 * * * * ...

备注:内容来源于stack exchange,提问作者Will

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 13:57:51