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.local
script personalizado mediante preseed/late_command
el cual:
Haga una copia de seguridad del original
rc.local
comorc.local.orig
(usandomv
)Luego
rc.local
se crea uno nuevo, que es un script que se ejecutará en el primer inicio del sistema.El nuevo guión:
- Habilite el acceso SSH usando
ufw
- Restaurar el original
rc.local
(moviéndoserc.local.orig
arc.local
, eliminándose) - Pruebe si el original
rc.local
es ejecutable y ejecútelo. - Salir exitosamente
- Habilite el acceso SSH usando