
我想允許一組(大約 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 中腳本的輸出。