我想允许 (大约 100 个) IP 地址列表访问 ubuntu 服务器上的网站。我希望能够通过 cron 刷新列表。
我正在尝试使用 UFW 来实现。我认为通过应用程序配置文件来实现可能更容易。这是最好的方法吗?
[My App]
title = "My Web"
description = "Allows to access web"
ports = 80/tcp|443/tcp
我如何添加允许 IP 的列表?我想在配置文件中添加类似以下内容:
ips=[/var/www/allowed_ips.txt]
答案1
应用程序配置文件描述应用程序。每个配置文件都包含标题、描述和一组要连接的端口。它们不描述允许或拒绝访问此类应用程序的规则。这是单独完成的。例如
ufw allow from 192.168.0.0/16 to any app "MyWeb"
如果您想在文件中保留 IP 地址列表(如问题中所建议的那样),我建议您将如下所示的 shell 脚本添加到 crontab。它将首先删除应用程序的所有规则(请参阅这个答案),然后在您的文件中添加针对 IP 的规则。
#!/bin/bash
APPNAME="MyWeb"
IPFILE=/var/www/allowed_ips.txt
RULES_DESC=$(ufw status numbered | grep "$APPNAME" \
| awk -F"[][]" '{print $2}' | tr --delete [:blank:] | sort -rn)
for NUM in $RULES_DESC; do
yes | ufw delete $NUM
done
for IP in $(cat $IPFILE); do
ufw allow from $IP to any app "$APPNAME"
done
您可能希望抑制 crontab 中脚本的输出。