miércoles, 27 de enero de 2021

Averiguar a qué DC se ha autenticado una máquina



¿A qué Domain Controller / Active Directory / Directorio Activo se ha autenticado una máquina de una organización cuando ha iniciado sesión en su sistema operativo Windows?



En las organizaciones que tienen varios Domain Controllers, los inicios de sesión de máquina y de usuario se reparten entre ellos para balancear la carga. Esto hace que dos máquinas de una misma sede puedan estar autenticadas en diferentes controladores de dominio.

Para ver a qué directorio activo se ha conectado una máquina para recibir sus GPO, podemos usar el siguiente comando en una ventana de cmd:

nltest /DSGETDC:

Esto nos dará información sobre el DC en el que se ha conectado la máquina, por ejemplo:

C:\Users\usuario>nltest /DSGETDC: DC: \\USA-DC01.dominio.local Dirección: \\192.168.1.4 GUID del DOM: c95a30af-2af1-cf3c-a4fa-cfbe3b776daf Nombre del DOM: dominio.local Nombre del bosque: dominio.local Nombre de sitio DC: USA Nuestro nombre de sitio: USA Marcas: GC DS LDAP KDC TIMESERV WRITABLE DNS_DC DNS_DOMAIN DNS_FOREST CLOSE_SITE FULL_SECRET WS DS_8 DS_9 DS_10 El comando se completó correctamente

En el resultado del comando podemos ver el nombre de máquina del controlador de dominio, su IP, el nombre del dominio, etc.
0

miércoles, 13 de enero de 2021

No matching host key type found



Cómo solucionar el error "no matching host key type found. Their offer: ssh-dss".



Tuve que crear un script que se conectara a un host externo vía SSH. Al probar la conexión manualmente para ver que podía establecerse, me encontré con el siguiente problema:

HOST # sftp usuario@host Unable to negotiate with 1.2.3.4 port 22: no matching host key type found. Their offer: ssh-dss Connection closed

Parece que el otro extremo corre una versión antigua (muy antigua) de OpenSSH, por lo que hay que indicarle explícitamente a la última versión de OpenSSH (es decir, la versión que ejecutamos en nuestro host) que use el algortimo "ssh-dss" para establecer la conexión.

Para ello, deberemos usar una opción en el comando ssh (las opciones se añaden con el parámetro -o seguido de la opción que querramos añadir) del siguiente modo:

-oHostKeyAlgorithms=+ssh-dss

De esta forma, el comnando completo queda así:

HOST # sftp -oHostKeyAlgorithms=+ssh-dss usuario@host

Tras usar el comando ssh con el parámetro indicado, ya podremos establecer la conexión con el host en cuestión con normalidad y ya no nos saltará el mensaje de error.

Como curiosidad, si queremos averiguar qué versión de OpenSSH corre en el otro extremo, podemos usar la opción "-vvv" de ssh para ver las versiones local y remota:

debug1: Local version string SSH-2.0-OpenSSH_8.4 debug1: Remote protocol version 2.0, remote software version OpenSSH_6.2p2+sftpfilecontrol-v1.3-hpn13v12
0

miércoles, 6 de enero de 2021

Averiguar a qué DC se ha autenticado un usuario



¿A qué Domain Controller / Active Directory / Directorio Activo se ha autenticado un usuario de una organización cuando ha iniciado sesión en su sistema operativo Windows?



Si trabajamos en una organización que tenga varios Domain Controllers, puede resultarnos útil saber en cual de ellos ha iniciado sesión un usuario determinado con el fin de resolver problemas en el inicio de sesión de esa cuenta de usuario, por ejemplo.

Averiguar a qué directorio activo ha iniciado sesión un usuario al introducir sus credenciales en el inicio de sesión de Windows es posible mediante una variable de sistema de Windows llamada %logonserver%.

Para ver el contenido de la variable %logonserver% podemos usar la sentencia:

echo %logonserver%

Esto nos devolverá el nombre de máquina del directorio activo donde el usuario ha iniciado sesión.

Un ejemplo de output del comando en una ventana de cmd podría ser:

C:\Users\usuario>echo %logonserver% \\USA-DC01

En este caso, el directorio activo en cuestión sería el USA-DC01.


Alternativa



Alternativamente, podemos usar el comando "set L":

C:\Users\usuario>set L LOCALAPPDATA=C:\Users\usuario\AppData\Local LOGONSERVER=\\USA-DC01

Como vemos, este comando muestra también la variable LOGONSERVER.
0