Einzelne Ports freigeben
ufw allow 8200/tcp
ufw allow 1900/udp
IP-Bereich blockieren
ufw deny from 159.223.224.0/24
Einzelne Regeln löschen
Nach Nummer
Regeln mit Nummerierung anzeigen:ufw status numbered
Regel nach Nummer „NUM“ löschen:ufw delete NUM
nach Protokoll/Port
ufw delete allow http
ufw delete allow 80
Speicherort für die Regeln
/etc/ufw
/etc/ufw/user.rules
/etc/ufw/user6.rules
Auswerten der nextcloud.log
Das folgende Skript erst erstellt automatisch Deny-Regeln für die ufw auf Basis der Nextcloud-Logdatei. Das Script ist an die jeweilige Installation anzupassen und kann im ungünstigsten Fall auch berechtigte Benutzer aussperren.
#/bin/bash
# IP-Adressen mit fehlerhaften Nextcloud-Loginversuchen werden in ufw als "DENY" eingetragen und somit gesperrt
# Die Anzahl an ungültigen Login-Versuchen, die dabei ignoriert werden, kann mit der Variable "logcount" definiert werden.
# Variablen setzen
logcount="1,2,3" # Suchparameter für sed zum Löschen der Login-Versuche mit der angegebenen Anzahl
nclogfile="/var/www/nextcloud/nextcloud.log"
tmpfile1="/tmp/ufw_addIPfromNC_IPoutNC.txt"
tmpfile2="/tmp/ufw_addIPfromNC_IPoutUFW.txt"
tmpfile3="/tmp/ufw_addIPfromNC_IPaddtoUFW.txt"
tmpfile4="/tmp/ufw_addIPfromNC_whois.txt"
logfile="/var/log/ufw_addIPfromNC.log"
# NC-Logdatei auslesen
echo "IP-Adressen mit mehr als $logcount Fehlanmeldungen aus der Nextclud-Logdatei auslesen ..."
tail -n 1000 "$nclogfile" | grep "Trusted domain error" | awk '{print $4}' | tr -d '\\"' | sed "/192.*$/d" | sort -g | sed 's/\.[^.]*$/./' | uniq -c | sed "/.* [$logcount] .*$/d" | awk '{print $2}' | tee "$tmpfile1"
#- Anmerkungen -# Letzten 1000 Zeilen der NC-Logdatei auslesen | Fehlerhafte Loginversuche suchen | IP-Adressen ermitteln (spalte 4) | \ und " löschen | IP 192.x löschen | sortieren | Letzter Block der IP löschen | gleiche zählen | Zeilen mit $logcount-Versuchen löschen | nur IP-Adressen (Spalte 2) | in tmp-File speichern
# ufw "DENY"_liste auslesen
echo "In ufw bereits geblockte IP-Adressen auslesen ..."
ufw status | grep "DENY" | awk '{print $3}' | sort | sed 's/0\/24//g' | tee "$tmpfile2"
#- Anmerkungen -# ufw-Filterliste ausgeben | geblockte IPs | nur IP-Adresse | sortieren | "0/24" entfernen | in tmp-File speichern
# IP-Listen vergleichen
echo "Noch nicht geblockte IP-Adressen ermitteln ..."
diff "$tmpfile1" "$tmpfile2" | grep "<" | tr -d "< " | tee "$tmpfile3"
# Neue ufw-Regeln erstellen
echo "IP-Adressen in ufw eintragen ..."
while read IP; do
IPrange=$IP"0/24"
whois "$IP"1 > "$tmpfile4"
IP_name=$(cat "$tmpfile4" | grep -i -m 1 netname | awk '{print $2, $3, $4, $5, $6}')
IP_country=$(cat "$tmpfile4" | grep -i -m 1 country | awk '{print $2}')
echo $IPrange" ("$IP_name"- country: "$IP_country")"
echo "ufw deny from $IPrange"
resp=$(ufw deny from "$IPrange")
echo $resp
echo $(date "+%Y.%m.%d %H:%M:%S")" ["$resp"] "$IPrange" ("$IP_name"- country: "$IP_country")" >> $logfile
done < "$tmpfile3"
# Temporäre Dateien löschen
rm "$tmpfile1" "$tmpfile2" "$tmpfile3" "$tmpfile4" 2> /dev/null
exit