
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 内のスクリプトからの出力を抑制したいでしょう。