Hinzufügen von UFW-Regeln während einer vorab festgelegten Installation

Hinzufügen von UFW-Regeln während einer vorab festgelegten Installation

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.localdarin, ein benutzerdefiniertes Skript hinzuzufügen preseed/late_command, das Folgendes ermöglicht:

  1. Erstellen Sie eine Sicherungskopie des Originals rc.localals rc.local.orig(mithilfe von mv)

  2. Dann wird new rc.localerstellt - das ist ein Skript, das beim ersten Systemstart ausgeführt wird

  3. Das neue Skript wird:

    1. Aktivieren Sie den SSH-Zugriff mitufw
    2. Wiederherstellen des Originals rc.local(durch Verschieben rc.local.orignach rc.local, Löschen selbst)
    3. Testen Sie, ob das Original rc.localausführbar ist und führen Sie es aus
    4. Erfolgreich beenden

verwandte Informationen