Agregar reglas ufw durante una instalación preestablecida

Agregar reglas ufw durante una instalación preestablecida

He estado intentando agregar automáticamente reglas UFW para permitir el acceso SSH durante una instalación de 16.04 mientras uso un archivo preconfigurado. Sin embargo, ninguno de los métodos documentados da como resultado que el puerto 22 esté abierto después del primer inicio.

Específicamente, probé variaciones de las siguientes líneas:

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

Pero ninguno de ellos pareció marcar la diferencia. Además, mis intentos de agregar la regla en la sección posterior a la instalación fallaron porque el módulo del kernel de iptables no está cargado, lo que generó un error.

¿Es esto posible lograrlo dentro del archivo preestablecido? ¿O debería simplemente rendirme y habilitar el firewall al arrancar con un truco?

Respuesta1

También he estado intentando que esto funcione durante un tiempo. Nada parece funcionar. Hasta que finalmente me di por vencido y lo arreglé con una sencilla solución alternativa a 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

La solución alternativa agregará un rc.localscript personalizado mediante preseed/late_commandel cual:

  1. Haga una copia de seguridad del original rc.localcomo rc.local.orig(usando mv)

  2. Luego rc.localse crea uno nuevo, que es un script que se ejecutará en el primer inicio del sistema.

  3. El nuevo guión:

    1. Habilite el acceso SSH usandoufw
    2. Restaurar el original rc.local(moviéndose rc.local.origa rc.local, eliminándose)
    3. Pruebe si el original rc.locales ejecutable y ejecútelo.
    4. Salir exitosamente

información relacionada