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

Связанный контент