
Я хочу разрешить списку (около 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-адресов в файле, как вы предлагаете в вопросе, я бы посоветовал вам добавить скрипт оболочки, подобный приведенному ниже, в ваш 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.