Postfix/chroot: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „=== Postfix in einer chroot === Postfix wird standardmäßig nicht in ein Chroot-Gefängnis gesteckt. * Die Postfix-Dokumentation [http://www.postfix.org/BASIC_CONFIGURATION_README.html#chroot_setup [1]] liefert Details darüber, wie man ein solches Jail bewerkstelligen kann. * Die Schritte sind unten beschrieben und basieren auf dem chroot-setup-Skript, das im Postfix-Quellcode bereitgestellt wird. Gehen Sie zuerst in die <tt>master.cf</tt>Datei im Ver…“ |
Keine Bearbeitungszusammenfassung |
||
Zeile 19: | Zeile 19: | ||
} | } | ||
[[Kategorie:Postfix]] | |||
Erstellen Sie als Nächstes die neuen Verzeichnisse für das Gefängnis: | Erstellen Sie als Nächstes die neuen Verzeichnisse für das Gefängnis: | ||
set -e | set -e |
Version vom 5. Juni 2022, 20:10 Uhr
Postfix in einer chroot
Postfix wird standardmäßig nicht in ein Chroot-Gefängnis gesteckt.
- Die Postfix-Dokumentation [1] liefert Details darüber, wie man ein solches Jail bewerkstelligen kann.
- Die Schritte sind unten beschrieben und basieren auf dem chroot-setup-Skript, das im Postfix-Quellcode bereitgestellt wird.
Gehen Sie zuerst in die master.cfDatei im Verzeichnis /etc/postfixund ändern Sie alle Chroot-Einträge auf 'yes' (y) mit Ausnahme der Dienste qmgr, proxymap, proxywrite, local, und virtual
Erstellen Sie zweitens zwei Funktionen, die uns später beim Kopieren von Dateien in das Chroot-Gefängnis helfen (siehe letzter Schritt).
CP="cp -p"
cond_copy() { # Dateien nach Muster in $1 finden # Falls vorhanden, in Verzeichnis $2 kopieren dir=`dirname "$1"` pat=`Basisname "$1"` lr=`find "$dir" -maxdepth 1 -name "$pat"` wenn testen! -d "$2" ; dann Ausfahrt 1 ; fi if test "x$lr" != "x" ; dann $CP $1 "$2" ; fi }
Erstellen Sie als Nächstes die neuen Verzeichnisse für das Gefängnis:
set -e umask 022
POSTFIX_DIR=${POSTFIX_DIR-/var/spool/postfix} cd ${POSTFIX_DIR}
mkdir -p etc lib usr/lib/zoneinfo test -d /lib64 && mkdir -p lib64
Suchen Sie die localtime-Datei
lt=/etc/localtime if test ! -f $lt ; then lt=/usr/lib/zoneinfo/localtime ; fi if test ! -f $lt ; then lt=/usr/share/zoneinfo/localtime ; fi if test ! -f $lt ; then echo "cannot find localtime" ; exit 1 ; fi rm -f etc/localtime
Kopieren Sie localtime und einige andere Systemdateien in die Chroots etc
$CP -f $lt /etc/services /etc/resolv.conf /etc/nsswitch.conf usw $CP -f /etc/host.conf /etc/hosts /etc/passwd usw ln -s -f /etc/localtime usr/lib/zoneinfo
Stellen Sie sicher, dass resolv.conf root gehört:
chown root /var/spool/postfix/etc/resolv.conf
Kopieren Sie die erforderlichen Bibliotheken mit der zuvor erstellten Funktion in die Chroot cond_copy
cond_copy '/usr/lib/libnss_*.so*' lib cond_copy '/usr/lib/libresolv.so*' lib cond_copy '/usr/lib/libdb.so*' lib
Und vergessen Sie nicht, laden Postfix