
Ich möchte einer Liste von (etwa 100) IP-Adressen den Zugriff auf eine Website auf einem Ubuntu-Server erlauben. Ich möchte die Liste per Cron aktualisieren können.
Ich versuche es mit UFW. Ich dachte, das wäre über ein App-Profil vielleicht einfacher. Ist das der beste Ansatz?
[My App]
title = "My Web"
description = "Allows to access web"
ports = 80/tcp|443/tcp
Wie kann ich die Liste der erlaubten IPs hinzufügen? Ich möchte dem Profil so etwas hinzufügen:
ips=[/var/www/allowed_ips.txt]
Antwort1
Anwendungsprofile beschreiben Anwendungen. Jedes enthält einen Titel, eine Beschreibung und eine Reihe von Ports, mit denen eine Verbindung hergestellt werden kann. Sie beschreiben keine Regeln, um den Zugriff auf solche Anwendungen zuzulassen oder zu verweigern. Dies geschieht separat. Beispiel:
ufw allow from 192.168.0.0/16 to any app "MyWeb"
Wenn Sie eine Liste von IP-Adressen in einer Datei speichern möchten, wie Sie in der Frage vorschlagen, würde ich vorschlagen, dass Sie Ihrer Crontab ein Shell-Skript wie das folgende hinzufügen. Es löscht zuerst alle Regeln für Ihre Anwendung (siehediese Antwort), und fügen Sie dann Regeln für die IPs in Ihrer Datei hinzu.
#!/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
Wahrscheinlich möchten Sie die Ausgabe des Skripts in Ihrer Crontab unterdrücken.