UFW でポートにアクセスするための IP アドレスのリストを許可する

UFW でポートにアクセスするための IP アドレスのリストを許可する

Ubuntu サーバー上の Web サイトにアクセスするために、(約 100 個の) IP アドレスのリストを許可したいと考えています。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アドレスのリストをファイルに保存したい場合は、次のようなシェルスクリプトを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 内のスクリプトからの出力を抑制したいでしょう。

関連情報