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

2

Я пытаюсь автоматически добавлять правила 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

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

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

    
задан zymhan 10.05.2016 в 23:17
источник

1 ответ

3

Я тоже пытался заставить это работать некоторое время. Ничто не работает. Пока я наконец не сдался, и я исправил его простым обходным путем 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, который запускает ufw allow ssh при первом запуске, который затем уничтожит себя, переименовав оригинальный скрипт rc.local обратно в исходное место. Кажется, что это работает.

    
ответ дан jheusala 04.02.2017 в 23:05