.png)
Ich habe ein /etc/init.d/iptables start|stop|restart
Skript auf verschiedenen Ubuntu-Servern (das ist ein normales Shell-Skript)
Für jeden neuen Dienst muss ich eine Zeile bearbeiten und einfügen, um einen Port zu öffnen. Dies führt zu vielen verschiedenen Versionen des init.d-Skripts auf verschiedenen Maschinen.
Ist es möglich, beispielsweise alle Dateien automatisch einzuschließen /etc/iptables/include.d/
?
Das Ziel ist, dass nur eine Zeile in derStartFunktion von /etc/init.d/iptables wie
include /etc/iptables/include.d/*
Und nach einer zusätzlichen Datei /etc/iptables/include.d/
würde ich einfach sagen
/etc/init.d/iptables restart
Bearbeiten:Wie Saurabh anmerkte, kann dies zu Problemen führen, wenn Befehle eine bestimmte Reihenfolge erfordern. Ein erweitertes Setup könnte verschiedene Verzeichnisse haben, wie:
/etc/iptables/include01.d/
/etc/iptables/include02.d/
/etc/iptables/include03.d/
und sie wie folgt einbinden:
include /etc/iptables/include01.d/* ... vielleicht gehört hier etwas Code in die Hauptdatei ... include /etc/iptables/include02.d/* include /etc/iptables/include03.d/*
Antwort1
Fügen Sie Ihrem init.d-Skript die folgende Zeile hinzu.
run-parts --report /etc/iptables/include.d
Es wird alles im Verzeichnis als Shell-Skript ausführen (muss ausführbar sein).
Wenn Sie nur Dateien ausführen möchten, die mit .port enden, können Sie etwas wie Folgendes verwenden:
run-parts --regex '\.port$' /etc/iptables/include.d/
Wenn Sie sicherstellen möchten, dass die Reihenfolge richtig ist, können Sie die Dateien wie folgt benennen:
10_web.port
20_ssh.port
etc..
Antwort2
for f in /etc/iptables/include.d/*
. $f
done
Beachten Sie das Leerzeichen zwischen Punkt und %f
Saurabh hat Recht – das wird nicht unbedingt wie beabsichtigt funktionieren, aber verwenden Sie eine Namenskonvention, z. B. 10-xxx, 20-yyy usw., dann könnte es zu bewältigen sein.
Antwort3
Sie können eine einfache Funktion in Bash definieren:
function include() {
for FILE in $( find "$1" -type f -print | sort )
do
source $FILE
done
}
und dann:
include some_dir/*
oder auch:
include some_dir/*.conf
Antwort4
Ich glaube nicht, dass Sie Dateien in die iptables-Konfiguration aufnehmen können. Die Wahl ist sinnvoll, da Firewall-Regeln stark von der Reihenfolge abhängen, in der sie geschrieben werden. Wenn wir nur Dateien in Ordner aufnehmen, weiß iptables nicht, welche Regeln zuerst und welche später eingefügt werden sollen.