Verständnisfrage zu ufw, iptable und Skripten
Hallo,
ich setzte auf einem Ubuntu Server ufw ein. Funktioniert auch soweit alles.
Ich habe nicht viele Regeln angelegt, nur diese hier:
UFW ist ja quasi ein Frontend, welches dann letztendlich iptables anlegt.
Durch Installation von UFW wird ja ein Standardregelwerk von iptables erstellt, welches ich auch mit iptables -L sehen kann.
Und jetzt zum Hintergrund:
Ich möchte eine IP Block Lösung umsetzen: https://github.com/trick77/ipset-blacklist
Hierzu muss eine bestimmte Regel zu iptables hinzugefügt werden. UFW Regeln bleiben beim Reboot erhalten. iptables Regeln meines Wissens nicht.
Ufw möchte ich aber weiter nutzen.
Ich dachte ich mach das folgendermaßen. Würde das so Sinn machen und funktionieren?
Lt. Punkt 6 der oben verlinkten Anleitung soll man dies zu einem Firewall Script hinzufügen:
Ich will in dem Script aber keine anderen Regeln definieren, die hab ich ja schon mit ufw erstellt.
- Hab ich das richtig verstanden, dass so ein Script per see erstmal die bestehenden Regeln nicht antastet und nur die Regeln hinzufügt, die ich ihm eben reinschreibe, alles andere aber so lässt wie es ist?
Ich hab also dieses Firewall script angelegt und mit chmod 755 anusführbar gemacht:
/etc/init.d/firewall.sh:
Dann noch der /etc/crontab eine Zeile hinzugefügt:
Frage:
Geht das so, damit die Regel immer wieder geladen wird und wie oben geschrieben, bestehende Regeln nicht verändert oder gelöscht werden?
2. Frage:
Ich habe mit
ufw default allow outgoing
erst mal allen ausgehenden Verkehr zugelassen.
Nachdem ich mich jetzt tiefer eingelesen habe, bin ich der Meinung, dass ich das gar nicht brauche und lieber ufw default deny outgoing nehme und dann die Ports freischalte, die ich brauche.
Welche Ports brauche ich denn unbedingt outgoing? Es läuft nur eine Nextcloud drauf und Daten vom Server werden mit Rsync over SSH auf einen anderen Sever gesichert. Kann ich irgendwie rausfinden, welche Ports ich alles brauche?
Wäre klasse, wenn die Experten hierzu eine Rückmledung hätten.
Danke
ich setzte auf einem Ubuntu Server ufw ein. Funktioniert auch soweit alles.
Ich habe nicht viele Regeln angelegt, nur diese hier:
ufw default deny incoming
ufw default allow outgoing
ufw allow xx/tcp comment 'SSH'
ufw allow http
ufw allow https
ufw limit xx
UFW ist ja quasi ein Frontend, welches dann letztendlich iptables anlegt.
Durch Installation von UFW wird ja ein Standardregelwerk von iptables erstellt, welches ich auch mit iptables -L sehen kann.
Und jetzt zum Hintergrund:
Ich möchte eine IP Block Lösung umsetzen: https://github.com/trick77/ipset-blacklist
Hierzu muss eine bestimmte Regel zu iptables hinzugefügt werden. UFW Regeln bleiben beim Reboot erhalten. iptables Regeln meines Wissens nicht.
Ufw möchte ich aber weiter nutzen.
Ich dachte ich mach das folgendermaßen. Würde das so Sinn machen und funktionieren?
Lt. Punkt 6 der oben verlinkten Anleitung soll man dies zu einem Firewall Script hinzufügen:
# Enable blacklists
ipset restore < /etc/ipset-blacklist/ip-blacklist.restore
iptables -I INPUT 1 -m set --match-set blacklist src -j DROP
Ich will in dem Script aber keine anderen Regeln definieren, die hab ich ja schon mit ufw erstellt.
- Hab ich das richtig verstanden, dass so ein Script per see erstmal die bestehenden Regeln nicht antastet und nur die Regeln hinzufügt, die ich ihm eben reinschreibe, alles andere aber so lässt wie es ist?
Ich hab also dieses Firewall script angelegt und mit chmod 755 anusführbar gemacht:
/etc/init.d/firewall.sh:
#!/bin/bash
# Enable blacklists
ipset restore < /etc/ipset-blacklist/ip-blacklist.restore
iptables -I INPUT 1 -m set --match-set blacklist src -j DROP
# Exit gracefully.
#------------------------------------------------------------------------------
exit 0
Dann noch der /etc/crontab eine Zeile hinzugefügt:
@reboot root /etc/init.d/firewall.sh
Frage:
Geht das so, damit die Regel immer wieder geladen wird und wie oben geschrieben, bestehende Regeln nicht verändert oder gelöscht werden?
2. Frage:
Ich habe mit
ufw default allow outgoing
erst mal allen ausgehenden Verkehr zugelassen.
Nachdem ich mich jetzt tiefer eingelesen habe, bin ich der Meinung, dass ich das gar nicht brauche und lieber ufw default deny outgoing nehme und dann die Ports freischalte, die ich brauche.
Welche Ports brauche ich denn unbedingt outgoing? Es läuft nur eine Nextcloud drauf und Daten vom Server werden mit Rsync over SSH auf einen anderen Sever gesichert. Kann ich irgendwie rausfinden, welche Ports ich alles brauche?
Wäre klasse, wenn die Experten hierzu eine Rückmledung hätten.
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1888219842
Url: https://administrator.de/contentid/1888219842
Ausgedruckt am: 21.11.2024 um 23:11 Uhr
6 Kommentare
Neuester Kommentar
Guten Morgen,
Das kommt auf die Befehle im Script an. In deinem Fall hast du ja ein iptables Befehl mit dem Parameter -I (Insert). Dieser fügt dir diese Firewall Regel den iptables hinzu. Also ja, so wie du das gemacht hast, passt das so.
Jup. Vollkommen richtig gemacht. Alternativ gebe es noch das Tool iptables-save, wenn du das nicht per Skript und Cronjob erledigen möchtest.
Willst du das wirklich so einschränken? Nun gut, dann überlege doch mal, welche Ports du brauchst.
Du brauchst doch DNS für die Namensauflösung, HTTP für Updates und selbstverständlich die Ports für die Antworten an die Clients. (Dynamically Allocated Ports). Für letzteres kannst du bei Iptables auch das Connection Tracking verwenden.
MfG
Hab ich das richtig verstanden, dass so ein Script per see erstmal die bestehenden Regeln nicht antastet und nur die Regeln hinzufügt, die ich ihm eben reinschreibe, alles andere aber so lässt wie es ist?
Das kommt auf die Befehle im Script an. In deinem Fall hast du ja ein iptables Befehl mit dem Parameter -I (Insert). Dieser fügt dir diese Firewall Regel den iptables hinzu. Also ja, so wie du das gemacht hast, passt das so.
Geht das so, damit die Regel immer wieder geladen wird und wie oben geschrieben, bestehende Regeln nicht verändert oder gelöscht werden?
Jup. Vollkommen richtig gemacht. Alternativ gebe es noch das Tool iptables-save, wenn du das nicht per Skript und Cronjob erledigen möchtest.
Welche Ports brauche ich denn unbedingt outgoing?
Willst du das wirklich so einschränken? Nun gut, dann überlege doch mal, welche Ports du brauchst.
Du brauchst doch DNS für die Namensauflösung, HTTP für Updates und selbstverständlich die Ports für die Antworten an die Clients. (Dynamically Allocated Ports). Für letzteres kannst du bei Iptables auch das Connection Tracking verwenden.
MfG
Hallo,
Gruß,
Peter
Zitat von @hokaido:
Welche Ports brauche ich denn unbedingt outgoing? Es läuft nur eine Nextcloud drauf und Daten vom Server werden mit Rsync over SSH auf einen anderen Sever gesichert. Kann ich irgendwie rausfinden, welche Ports ich alles brauche?
Schau dir mit Wireshark doch einfach an was dein(e) Rechner so brauchen/benötigen. https://www.wireshark.org/Welche Ports brauche ich denn unbedingt outgoing? Es läuft nur eine Nextcloud drauf und Daten vom Server werden mit Rsync over SSH auf einen anderen Sever gesichert. Kann ich irgendwie rausfinden, welche Ports ich alles brauche?
Gruß,
Peter
Skript ist auf dem Hauptserver vorhanden und Berechtigungen passen?
Ansonsten bau mal ein Logger in das Script ein und schau nach was passiert, wenn der Cronjob das Skript ausführt.
Ansonsten bau mal ein Logger in das Script ein und schau nach was passiert, wenn der Cronjob das Skript ausführt.