允許 IP 位址清單存取帶有 UFW 的連接埠

允許 IP 位址清單存取帶有 UFW 的連接埠

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

相關內容