martes, 27 de enero de 2015

Acceso Remoto utilizando la herramienta WinRM

WinRM (Windows Remote Management) es una herramienta que nos permite
administrar el Hardware de computadores basados en Windows Vista y de Servidores
basados en Windows Server 2012 tanto de forma local como remota. WinRM está
basado en el protocolo WS-Management (Web Services Management que es un
protocolo basado en SOAP – Arquitectura Orientada a servicios – diseñado para
localizar e intercambiar información de administración mediante la interoperabilidad y
consistencia entre sistemas de diferentes fabricantes de Hardware y diferentes sistemas
operativos. El estándar forma parte del “Distributed Management Task Force”)
Componentes WinRM Scripting API – Permite obtener datos desde computadores remotos
usando Scripts que ejecuten operaciones basadas en el protocolo WS Management
  • Winrm.cmd – Herramienta basada en CLI (Command Line Interface) que permite la configuración de WinRM, manejar sus recursos y obtener datos

  • Winrs.exe – Herramienta de línea de comandos que permite ejecutar remotamente la mayoría de comandos cmd.exe usando el protocolo WS Management
  • WMI Service - Servicio que habilita la implementación de Clases WMI para la obtención de datos de Hardware locales
  • ITPMI (Intelligent Platform Management Interface ) - Interface para controlar y diagnosticar hardware en un servidor remoto mediante controladores de administración de base (baseboard management controllers BMCs)

Configuración Control Remoto Winrm

EN SERVIDOR
Primer Paso: Antes de nada hay que configurar los nombres de maquina a un nombre
que sepamos fácil de recordar para tener acceso a esa máquina.
Nuestro servidor se va a llamar Server P, como se ve en la siguiente imagen.

Segundo Paso: Nuestro equipo debe pertenecer o bien a un grupo de red privado o
dominio como nuestro equipo no este configurado con ese tipo de redes no vamos a
poder realizar la conexión remota.

Tercer paso: Una vez configurado estos dos pasos tendremos que ejecutar la
powershell en modo administrador, combinación de tecla Windows+Q.

Cuarto paso: Una vez que tengamos la powershell es habilitar el servicio Winrm, para
ello tendremos que ejecutar la siguiente sintaxis, get-service winrm, la que nos dirá el
estado del servicio.

Quinto Paso: Una vez que sabemos el estado del servicio y como está corriendo
tenemos que forzar con este comando para que arranque y configuré el winrm para ello
escribimos la sintaxis enable-PSRemoting –force. Que nos dice como esta ese servicio
y si esta disonible.

Sexto Paso: Ahora tenemos que habilitar la maquina cliente en el servidor para que
acepte el nombre, para ello escribimos esta sintaxis, winrm set winrm/config/client
‘@{TrustedHosts=”NombreEquipoCliente”}’ , con ese comando habilitaremos y
daremos acceso al cliente.

Como vemos incorporo ese nombre a TruestedHosts que es un pc de confianza.
Séptimo Paso: Con el comando winrm quickconfig o winrm qc vemos como está el
servicio y si esta configurado.

Octavo Paso: Podemos ver la configuración del winrm estableciendo el siguiente
comando winrm get winrm/config lo que permite ver los parámetros de configuración
de winrm y podemos coger luego más adelante parámetros necesario para la conexión
remota.

Noveno Paso: Podremos modificar cualquier parámetro sabiendo que significa cada
línea de código estableciendo el siguiente comando winrm set winrm/ruta
‘@{nombre=”parámetro a insertar”}’, como vemos en la siguiente imagen son como
un árbol que están ordenados cada parámetro.

Con estas opciones ya estaría configurado el servidor.
EN CLIENTE
Como habíamos dicho importantísimo establecer nombre de máquina tanto en cliente
como en servidor, la que hemos puesto de nombre Pc1.

Segundo paso: Es arrancar la powershell en modo administrador como anteriormente
hemos explicado en el servidor. Y pondremos el siguiente comando para ver el estado
del servicio get-service winrm.
Como podemos apreciar el servicio está parado así que no podemos realizar conexiones
remotas ni configurar el winrm, para ello vamos a forzar el servicio para que se ponga
en iniciado con el siguiente comando, enable-PSRemoting –force.
IMAGEN12
Con esto nos dice que winrm se activó para recibir solicitud y se creó una escucha
winrm en el protocolo HTTP. Si volvemos a poner el comando get-service winrm,
podemos ver de nuevo el estado del servicio como cambio a iniciado.
IMAGEN13
Tercer Paso: Ahora tenemos que añadir el servidor en nuestro archivo de configuración
de la máquina cliente para ello escribiremos la siguiente sintaxis winrm set
winrm/config/client ‘@{TrustedHosts=”Nombre equipo servidor”}’, con esto ya
introducimos el servidor en el cliente.
IMAGEN14
Cuarto Paso: Ahora pondremos el comando winrm quickconfig o winrm qc para
comprobar si está disponible y bien configurado el servicio. Como nos dice que ya está
disponible para la administración remota:
IMAGEN15
Quinto Paso: Ya estamos listos para la conexión remota e interactuar con el servidor
pero antes necesitamos la sintaxis para la realización de ese medio que nos dará el
acceso remoto para ello vemos el comando winrs /?.
winrs [-/MODIFICADOR[:VALOR]] COMANDO
COMANDO: cadena que se ejecuta como comando en el.
MODIFICADORES
===============
(Todos aceptan la forma corta y la larga.
Tanto -r como -remote son válidos).
-r[emote]:EXTREMO - El extremo de destino con nombre
 NetBIOS o la dirección URL de conexión
 estándar: [TRANSPORTE://]DESTINO[:PUERTO].
 Si no se especifica, se usa -r:localhost.
-un[encrypted] - Especifica que los mensajes al shell remoto
 no se cifrarán. Útil para solucionar
 problemas, cuando el tráfico de red se
 cifra mediante IPsec o cuando se aplica
 seguridad física. De forma predeterminada,
 los mensajes se cifran con claves Kerberos
 o NTLM. Este modificador se omite cuando se
 selecciona el transporte HTTPS.
-u[sername]:NOMBRE_DE_USUARIO - Especifica el nombre de usuario en la línea de comandos. Si no se especifica, la
 herramienta usará la autenticación Negotiate
 o pedirá el nombre. Si se especifica -username,
 también se debe indicar -password.
-p[assword]:CONTRASEÑA - Especifica la contraseña en la línea de
 comandos. Si no se especifica -password, pero
 sí -username, la herramienta pedirá la
 contraseña. Si se especifica -password,
 también se debe indicar -user.
-t[imeout]:SEGUNDOS - Esta opción no se usa.
-d[irectory]:RUTA - Especifica el directorio de inicio del shell
 remoto. Si no se especifica, el shell remoto
 se iniciará en el directorio particular del
 usuario definido por la variable de entorno
 %USERPROFILE%.
-env[ironment]:CADENA=VALOR - Especifica una variable única de entorno
 que se establecerá cuando se inicie el shell, 
lo que permite cambiar el entorno
 predeterminado para el shell. Se puede usar
 este modificador varias veces.
-noe[cho] - Especifica que se debe deshabilitar el eco.
 Necesario para asegurar que las
 respuestas a los mensajes remotos
 no se muestren localmente. De forma
 predeterminada, el eco se establece en
 "on" (habilitado).
-nop[rofile] - Especifica que no debe cargarse el perfil del
 usuario. El servidor cargará el
 perfil de usuario de forma predet.
 Si el usuario remoto no es un administrador
 local en el sistema de destino, se necesitará
 esta opción (el valor predeterminado causará
 un error).
-a[llow]d[elegate] - Especifica que se pueden usar credenciales
 de usuario para obtener acceso a un recurso.
compartido remoto, por ejemplo, en un equipo
 distinto del extremo de destino.
-comp[ression] - Activa la compresión. Puede que las
 instalaciones anteriores en equipos remotos
 no admitan la compresión; por tanto, está
 desactivada de forma predeterminada.
-[use]ssl - Use una conexión SSL al usar un extremo
 remoto. Si especifica esto en lugar del
 transporte "https:", se usará el puerto
 predeterminado WinRM.
Ejemplos:
 winrs -r:https://miServidor.com comando
 winrs -r:miServidor.com -usessl comando
 winrs -r:miServidor comando
 winrs -r:http://127.0.0.1 comando
 winrs -r:http://169.51.2.101:80 -unencrypted comando
 winrs -r:https://[::FFFF:129.144.52.38] comando
 winrs -r:http://[1080:0:0:0:8:800:200C:417A]:80 comando
 winrs -r:https://miServidor.com -t:600 -u:administrador -p:$%fgh7 ipconfig
 winrs -r:miServidor -env:RUTA=^%RUTA^%;c: ools" -env:TEMP=d: emp
config.cmd 
 winrs -r:miServidor netdom join miServidor /domain:dominioDePrueba
 /userd:juans /passwordd:$%fgh789
 winrs -r:miServidor -ad -u:administrador -p:$%fgh7 dir
 \\otroServidor\recursoCompartido
Sexto Paso: Esta es la ayuda del comando WINRS, pero también necesitaremos un
puerto ya que es imprescindible para la conexión. Para ver el siguiente puerto tenemos
que poner la siguiente sintaxis, winrm get winrm/config.
 IMAGEN16
 Como vemos en el rectángulo tenemos que coger el puerto 5985 que es el que usa el
servicio winrs para la conexión remota, también podemos utilizar el otro pero nos va a
dar fallos de certificados ya que tenemos que pedir un certificado ya que el https es un
protocolo de hipertexto de transmisión segura.
Septimo Paso: una vez que ya sabemos el puerto comenzaremos a interactuar con el
servidor poniento la siguiente sintaxis en el cliente, winrs –r:http://ServerP:5985 –
u:administrador “comando”.
Una vez que le escribamos nos va a pedir que introduzcamos la contraseña del usuario
que hemos especificado en nuestro caso es el administrador.
IMAGEN17
Pondremos la contraseña y nos conecta con el servidor y podremos interactuar con él
por medios de comando.
IMAGEN18
Ahora para verificar que estamos dentro del servidor podremos poner hostname para
ver el nombre de máquina que nos devuelve. 
IMAGEN19
Podremos crear una carpeta en el servidor y un archivo de texto:
IMAGEN20
Creamos un documento de texto.
IMAGEN21
Y ahora vemos si es verdad que esta creado en el servidor. Como vemos en la siguiente
imagen
IMAGEN22
IMAGEN23
Con esto ya estaría todo comprobado.
¿Pero qué hubiese pasado si en el TrustedHosts hubiésemos puesto otra máquina como
en la siguiente imagen y ponemos la sintaxis de conexión para el servidor.?
IMAGEN24
Manda el siguiente error;
IMAGEN25 
Lo que significa que no está bien vinculado el nombre al TrustedHosts o que la base de
datos de kerberos no es capaz de resolver ese nombre, del active directory.
¿Pero qué es Kerberos?
Kerberos es un protocolo de autenticación de redes de ordenador creado por el MIT que
permite a dos ordenadores en una red insegura demostrar su identidad mutuamente de
manera segura. Sus diseñadores se concentraron primeramente en un modelo de clienteservidor,
y brinda autenticación mutua: tanto cliente como servidor verifican la
identidad uno del otro.
Con esto estaría todo explicado. 

No hay comentarios:

Publicar un comentario