Добавление правил UFW во время предварительной установки

Добавление правил UFW во время предварительной установки

Я пытался автоматически добавить правила UFW, чтобы разрешить доступ SSH во время установки 16.04 с использованием файла preseed. Однако ни один из документированных методов не приводит к открытию порта 22 после первой загрузки.

В частности, я пробовал вариации следующих строк:

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

Но ни один из них, похоже, не имел значения. Кроме того, мои попытки добавить правило в раздел post-install не увенчались успехом, поскольку модуль ядра iptables не был загружен, что привело к ошибке.

Возможно ли это сделать в файле preseed? Или мне просто сдаться и включить брандмауэр при загрузке с помощью взлома?

решение1

Я тоже пытался заставить это работать некоторое время. Ничего не получалось. Пока я наконец не сдался и не исправил это простым обходным решением rc.local:

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

Обходной путь — добавление пользовательского rc.localскрипта, использование preseed/late_commandкоторого:

  1. Сделайте резервную копию оригинала rc.local( rc.local.origиспользуя mv)

  2. Затем rc.localсоздается новый скрипт, который будет выполнен при первой загрузке системы.

  3. Новый сценарий будет:

    1. Включить доступ SSH с помощьюufw
    2. Восстановить оригинал rc.local(переместив rc.local.origв rc.local, удалив себя)
    3. Проверьте, является ли оригинал rc.localисполняемым, и запустите его.
    4. Успешно выйти

Связанный контент