Add Linux Active Directory enrollment bootstrap

This commit is contained in:
2026-09-07 09:42:24 -06:00
parent dcbf5e87e3
commit c737bd3192
6 changed files with 365 additions and 4 deletions
+26 -2
View File
@@ -1,6 +1,6 @@
# Recuperación desde cero y alta en una sola ejecución
Los releases entregan dos ZIP independientes. Cada uno contiene sus binarios,
Los releases entregan tres ZIP independientes. Cada uno contiene sus binarios,
scripts, instalador offline requerido y un manifiesto SHA-256 interno. No contienen
contraseñas, claves privadas ni certificados reutilizables.
@@ -131,6 +131,30 @@ bosque modificar el dominio. Para la operación soportada, el script aplica una
transacción proveedor-primero y se niega a unir un equipo que no haya pasado las
validaciones.
## Cliente Linux nuevo
El ZIP `sgu-linux-client-bootstrap-VERSION.zip` usa el mecanismo nativo de
Linux: `realmd`, Kerberos, SSSD, NSS y PAM. No distribuye ni instala el
Credential Provider de Windows.
En una VM con Internet por `Default Switch` y una NIC privada conectada a
`Laboratorio AD`, ejecutar como administrador:
```bash
sudo bash ./Enroll-SguLinuxDomainClient.sh \
--domain-controller 192.168.50.10 \
--domain-interface eth0 \
--domain-address 192.168.50.12/24 \
--enable-ssh
```
La contraseña de la cuenta autorizada para la unión se solicita de forma
interactiva por `realmd`; no se incluye en la línea de comandos. El script
configura DNS de AD en la NIC privada, preserva la ruta de Internet, crea la
cuenta de equipo en `OU=Laboratorio`, habilita creación de directorio personal
mediante PAM y valida la cuenta de equipo con `adcli testjoin`. La documentación
de operación completa está en [linux-client-enrollment.md](linux-client-enrollment.md).
## Crear y publicar un release
Desde el repositorio y con el SDK fijado en `global.json`:
@@ -150,4 +174,4 @@ la línea de comandos. Para empaquetar recursos institucionales adicionales:
-ServerContentPath C:\Preparacion\Packages
```
`SHA256SUMS-VERSION.txt` permite comprobar ambos ZIP antes de usarlos.
`SHA256SUMS-VERSION.txt` permite comprobar los tres ZIP antes de usarlos.
+78
View File
@@ -0,0 +1,78 @@
# Enrolamiento de clientes Linux
El enrolador Linux incorpora una estación Debian/Ubuntu o RHEL/Fedora/Rocky/AlmaLinux a `lci.lasalle.mx` mediante `realmd`, `adcli`, Kerberos y SSSD. No instala el Credential Provider de Windows: Linux conserva su propio inicio de sesión PAM/SSSD.
La contraseña de la cuenta autorizada para unir equipos se solicita directamente por `realmd`. Nunca se acepta como argumento, ni se escribe en archivos, registros o la línea de comandos.
## Requisitos de red
El equipo debe alcanzar por una interfaz privada al controlador de dominio, DNS y Kerberos. En el laboratorio:
| Servicio | Destino |
| --- | --- |
| Controlador y DNS | `192.168.50.10` |
| Dominio | `lci.lasalle.mx` |
| OU de equipos | `OU=Laboratorio,DC=lci,DC=lasalle,DC=mx` |
Para una VM Hyper-V con dos NIC, mantén el Internet en `Default Switch` y conecta una segunda NIC a `Laboratorio AD`. El enrolador puede configurar la segunda NIC sin modificar la ruta predeterminada:
```bash
sudo bash ./Enroll-SguLinuxDomainClient.sh \
--domain-controller 192.168.50.10 \
--domain-interface eth0 \
--domain-address 192.168.50.12/24 \
--enable-ssh
```
`--domain-interface` y `--domain-address` son opcionales como pareja. Si ya se aprovisionó la red privada mediante cloud-init, DHCP o gestión de configuración, omítelos y conserva únicamente `--domain-controller`.
El script se niega a reconfigurar una interfaz que posea la ruta predeterminada; así no deja a la máquina sin salida a Internet al agregar AD.
## Qué instala y configura
1. Instala `realmd`, `adcli`, SSSD, Kerberos y los módulos NSS/PAM adecuados para la familia de distribución.
2. Comprueba el registro DNS SRV de Active Directory y sincronización de hora ya existente.
3. Establece el nombre de host `NOMBRE.lci.lasalle.mx` antes de crear la cuenta de equipo.
4. Une el equipo con `adcli` en `OU=Laboratorio`.
5. Activa SSSD, creación de directorio personal mediante PAM y valida la contraseña de la cuenta de equipo con `adcli testjoin`.
6. Cuando se proporcionó la NIC privada, activa actualizaciones DNS dinámicas de SSSD en esa interfaz.
7. Con `--enable-ssh`, instala y habilita OpenSSH y abre únicamente el servicio SSH cuando el firewall local ya está activo.
El objeto de equipo aparece como `NOMBRE` en `OU=Laboratorio`. SSSD registra su registro A cuando la actualización DNS dinámica está activada.
## Inicio de sesión de dominio
Después de la unión, el formato explícito es:
```text
usuario@lci.lasalle.mx
```
La primera sesión crea `/home/usuario@lci.lasalle.mx`. El valor predeterminado de SSSD conserva credenciales para desconexiones breves de la red; las contraseñas no son administradas ni almacenadas por el Auth Broker.
Para limitar quién puede iniciar sesión, incluye un grupo de AD:
```bash
sudo bash ./Enroll-SguLinuxDomainClient.sh \
--domain-controller 192.168.50.10 \
--allow-group 'SG-Laboratorio-Linux-Users'
```
Ese modo ejecuta `realm deny --all` seguido de `realm permit --groups`; crea y administra el grupo antes de usarlo.
## Verificación y salida controlada
```bash
realm list
sudo adcli testjoin --domain=lci.lasalle.mx
getent passwd 'usuario@lci.lasalle.mx'
sudo sssctl domain-status lci.lasalle.mx
```
Para sacar un equipo del dominio de forma explícita:
```bash
sudo realm leave lci.lasalle.mx
```
Esta última acción elimina la relación de confianza local; debe ejecutarse sólo durante baja o reconstrucción del equipo.