
Quiero permitir que una lista de (alrededor de 100) direcciones IP acceda a un sitio web en un servidor Ubuntu. Me gustaría poder actualizar la lista mediante cron.
Estoy intentando hacerlo con UFW. Pensé que esto podría ser más fácil de hacer a través de un perfil de aplicación. ¿Es este el mejor enfoque?
[My App]
title = "My Web"
description = "Allows to access web"
ports = 80/tcp|443/tcp
¿Cómo puedo agregar la lista de IP permitidas? Quiero agregar algo como esto al perfil:
ips=[/var/www/allowed_ips.txt]
Respuesta1
Los perfiles de aplicación describen aplicaciones. Cada uno contiene un título, una descripción y un conjunto de puertos a los que conectarse. No describen reglas para permitir o denegar el acceso a dichas aplicaciones. Esto se hace por separado. P.ej
ufw allow from 192.168.0.0/16 to any app "MyWeb"
Si desea mantener una lista de direcciones IP en un archivo, como sugiere en la pregunta, le sugiero que agregue un script de shell como el siguiente a su crontab. Primero eliminará todas las reglas de su aplicación (consulteesta respuesta), luego agregue reglas para las IP en su archivo.
#!/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
Probablemente querrás suprimir la salida del script en tu crontab.