Ich habe versucht, automatisch UFW-Regeln hinzuzufügen, um SSH-Zugriff während einer Installation von 16.04 unter Verwendung einer Preseed-Datei zu ermöglichen. Keine der dokumentierten Methoden führt jedoch dazu, dass Port 22 nach dem ersten Start geöffnet ist.
Insbesondere habe ich Variationen der folgenden Zeilen ausprobiert:
ufw ufw/enable boolean true
ufw ufw/allow_custom_ports string 22/tcp
ufw ufw/allow_known_ports string 22/tcp
ufw ufw/allow_known_ports string SSH
Aber nichts davon schien einen Unterschied zu machen. Darüber hinaus schlugen meine Versuche, die Regel im Post-Install-Abschnitt hinzuzufügen, fehl, da das iptables-Kernelmodul nicht geladen wurde, was zu einem Fehler führte.
Ist dies innerhalb der Preseed-Datei möglich? Oder sollte ich einfach aufgeben und die Firewall beim Booten mit einem Hack aktivieren?
Antwort1
Ich habe auch eine Weile versucht, dies zum Laufen zu bringen. Nichts schien zu funktionieren. Bis ich schließlich aufgegeben und es mit einem einfachen rc.local-Workaround behoben habe:
d-i preseed/late_command string \
mv /target/etc/rc.local /target/etc/rc.local.orig; \
echo '#!/bin/sh -e' > /target/etc/rc.local; \
echo '/usr/sbin/ufw allow ssh' >> /target/etc/rc.local; \
echo 'mv -f /etc/rc.local.orig /etc/rc.local' >> /target/etc/rc.local; \
echo 'test -x /etc/rc.local && /etc/rc.local' >> /target/etc/rc.local; \
echo 'exit 0' >> /target/etc/rc.local; \
chmod +x /target/etc/rc.local
Die Problemumgehung besteht rc.local
darin, ein benutzerdefiniertes Skript hinzuzufügen preseed/late_command
, das Folgendes ermöglicht:
Erstellen Sie eine Sicherungskopie des Originals
rc.local
alsrc.local.orig
(mithilfe vonmv
)Dann wird new
rc.local
erstellt - das ist ein Skript, das beim ersten Systemstart ausgeführt wirdDas neue Skript wird:
- Aktivieren Sie den SSH-Zugriff mit
ufw
- Wiederherstellen des Originals
rc.local
(durch Verschiebenrc.local.orig
nachrc.local
, Löschen selbst) - Testen Sie, ob das Original
rc.local
ausführbar ist und führen Sie es aus - Erfolgreich beenden
- Aktivieren Sie den SSH-Zugriff mit