Permitir una lista de direcciones IP para acceder a puertos con UFW

Permitir una lista de direcciones IP para acceder a puertos con UFW

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.

información relacionada