Página 1 de 1

[RESUELTO] Episodio 3 de Kerberos

Publicado: 31 de diciembre de 2019 - 13:19
por pirona
Buen día,

Tengo un pequeño problema con la implementación de mi sistema Wapt con respecto a Kerberos.

Leí los episodios anteriores y no me engañó el problema $(hostname): tengo un serviceprincipalname que tiene el nombre con el que se comunican los agentes.

Cuando implemento mi agente, mi máquina cliente de prueba no se registra en la consola.
Todo lo demás funciona: uso un script de PowerShell para iniciar waptdeploy.
Tengo el servicio, la tienda, puedo ver mis paquetes, pero no hay ninguna PC nueva en la consola.

Cuando estoy en el símbolo del sistema elevado, ejecuto el comando:

Código: Seleccionar todo

wapt-get register -l debug --service
Tengo esto:

Código: Seleccionar todo

C:\Windows\system32>wapt-get register -l debug --service
Current loglevel : DEBUG
About to speak to waptservice...
Call register URL...
url: http://127.0.0.1:8088/register.json?notify_user=0&notify_server=1 timeout: 10000
url: http://127.0.0.1:8088/events?max_count=1 timeout: 11000
Waptservice User :url: http://127.0.0.1:8088/events?max_count=1 : OK Duration: 47
... que queda suspendido ad vitam eternam.

También recibo un error 403 cuando voy a https://myserver.td/add_host_kerberos .. lo cual no puedo explicar en un navegador cuando inicio sesión como administrador del dominio.

Estoy en un servidor Debian 9, no tengo nada especial en mi nombre de host ni en mi /etc/hosts.
En el lado del cliente, estos son Windows 10 Pro 1903/1909

Si tienes alguna pista, ¡estoy todo oídos! :)

Equipo del administrador: Windows 10
Versión de Wapt: 1.7.4.6232

Re: Episodio 3 de Kerberos

Publicado: 2 de enero de 2020 - 10:09 a. m.
por sfonteneau
Buen día

La forma más fácil de depurar es hacerlo con un psexec

Código: Seleccionar todo

psexec.exe -s cmd
wapt-get register -ldebug
Luego puede verificar que la estación de trabajo haya negociado un ticket Kerberos:

Código: Seleccionar todo

klist

Tenga en cuenta que su agente wapt debe tener el valor correcto (en wapt-get.ini)

Código: Seleccionar todo

use_kerberos=1
Luego en el servidor, en el archivo

/opt/wapt/conf/waptserver.ini

Es necesario:

Código: Seleccionar todo

use_kerberos = True
En el archivo /etc/nginx/sites-enabled/wapt.conf

Debes poder encontrar esto

Código: Seleccionar todo

            
            location /add_host_kerberos {
                auth_gss on;
                auth_gss_keytab  /etc/nginx/http-krb5.keytab;
                proxy_pass http://127.0.0.1:8080;
            }
De lo contrario, reinicie postconf y marque la casilla Kerberos

Re: Episodio 3 de Kerberos

Publicado: 7 de enero de 2020 - 16:43
por pirona
Buen día,

Gracias por el consejo: hice todas tus pruebas y recibí esto a través de un psexec:

Código: Seleccionar todo

...
2020-01-07 16:36:16,733 DEBUG https://monserveur.tld:443 "POST /add_host_kerberos HTTP/1.1" 403 169
2020-01-07 16:36:16,733 DEBUG authenticate_user(): returning <Response [403]>
2020-01-07 16:36:16,733 DEBUG handle_401(): returning <Response [403]>
2020-01-07 16:36:16,733 DEBUG handle_response(): returning <Response [403]>
2020-01-07 16:36:16,733 DEBUG handle_response() has seen 0 401 responses
2020-01-07 16:36:16,733 DEBUG handle_other(): Handling: 403
2020-01-07 16:36:16,733 DEBUG handle_other(): returning <Response [403]>
2020-01-07 16:36:16,733 DEBUG handle_response(): returning <Response [403]>
Traceback (most recent call last):
  File "<string>", line 1425, in <module>
  File "<string>", line 1207, in main
  File "C:\Program Files (x86)\wapt\common.py", line 5412, in register_computer
    signer = self.get_host_certificate().cn
  File "C:\Program Files (x86)\wapt\common.py", line 1882, in post
    req.raise_for_status()
  File "C:\Program Files (x86)\wapt\lib\site-packages\requests\models.py", line 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://monserveur.tld/add_host_kerberos
FATAL ERROR : HTTPError: 403 Client Error: Forbidden for url: https://monserveur.tld/add_host_kerberos
Exception at 0044181C: EPyIOError:
HTTPError: 403 Client Error: Forbidden for url: https://monserveur.tld/add_host_kerberos.

También volví a ejecutar postconf con éxito.
Parece un problema muy simple, pero no puedo identificarlo exactamente.

Re: Episodio 3 de Kerberos

Publicado: 7 de enero de 2020 - 17:03
por pirona
También quiero aclarar qué recibo con una actualización de estado en el servicio (en el servidor wapt):

Código: Seleccionar todo

root@wapt:/opt/wapt# systemctl status waptserver.service
● waptserver.service - WAPT Server startup script
   Loaded: loaded (/lib/systemd/system/waptserver.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-01-07 16:58:54 CET; 1min 4s ago
 Main PID: 8929 (python)
    Tasks: 1 (limit: 1147)
   Memory: 42.1M
   CGroup: /system.slice/waptserver.service
           └─8929 /opt/wapt/bin/python /opt/wapt/waptserver/server.py

Jan 07 16:58:54 monserveur.tld systemd[1]: Started WAPT Server startup script.
Jan 07 16:59:22 monserveur.tld  python[8929]: 2020-01-07 16:59:22,559 CRITICAL Get_websocket_auth_token failed EWaptAuthenticationFailure(u'Unknown host UUID 4DA586BB-BE2D-4232-903D-1DDC1F8E190F. Please register first.',)

[RESUELTO] Episodio 3 de Kerberos

Publicado: 7 de enero de 2020 - 17:29
por pirona
Hola,

encontré la solución: un chmod 644 en el archivo keytab utilizado por nginx...

Gracias por su ayuda.