Servidor OpenSSH para Windows.

Este artículo es una mejora y actualización de otro que ya publiqué hace unos años (Servidor OpenSSH en windows NT/2k/XP).

Que es SSH y OpenSSH

OpenSSH es una implementación abierta y gratuita de SSH. SSH es un protocolo que permite establecer conexiones seguras a través de redes que no lo son, además es capaz de servir de tunel seguro para otros protocolos que tampoco lo son. Podemos entonces realizar tareas de mantenimientos de sistemas y conexiones remotas al estilo UNIX de forma segura.

SSH2, la segunda versión de SSH, resuelve algunas de las deficiencias de su antecesor SSH1, ofreciendo de esta manera un alto nivel de cifrado de datos y un método de autentificación bastante fiable. Es además una alternativa fiable a no seguro telnet ó rlogin, rsh, rcp, rdist.

Secure Shell previene, además, de una serie de ataques como son:

· Ataques proveniente de Sniffers.
· IP Spoofing
· MACpoofing
· DNS Spoofing
· Telnet Hickjacking
· ARP Spoofing
· ARP Spoofing
· IP Routing Spoofing
· ICMP Spoofing

Nos puede servir también para crear canales o túneles seguros para otras aplicaciones como correo, VNC, ftp, etc.

En esta artículo pues vamos a aprender a instalar un servidor SSH para Windows.

Pasos para su instalación y configuración.

Instalando el paquete OpenSSH para Windows

Descargar el paquete desde aquí (setupssh381-20040709.zip) Actualizado a 9 de Julio de 2004. Última versión disponible en este momento.

Crear un par de llaves

Este proceso se realiza de forma automática al instalar el software. En cualquier caso expongo aquí la forma de para realizar esta tarea.

Para crear un par de claves DSA, acceder al directorio base de OpenSSH mediante la línea de mandatos y ejecutar:

ssh-keygen -d -f c:\ssh\ssh_host_dsa_key -N “”

Para crear un par de claves RSA, ejecute el mandato:

ssh-keygen -f c:\ssh\ssh_host_key -N “”

En estos ejemplos se ha utilizado el directorio C:\ssh como directorio base, por lo que si utiliza un directorio base distinto habrá que reemplazar este dato en el ejemplo. Serán generadas por defecto pares de claves de 1.024 bits, en principio suficientemente seguras.

Variables de entorno

Mi PC > Propiedades > Avanzado > Variables de Entorno>

Añadir al path el valor del la ruta donde se encuentr OpenSSH por ejemplo:

C:\Archivos de programa\Exceed.nt;C:\Archivos de programa\Archivos comunes\Autodesk Shared\;C:\OpenSSH

Mi PC > Propiedades > Avanzado > Variables de Entorno>

Crear una nueva variable del sistema:

Variable: HOME
Valor : C:\SSH ( o la ruta donde se encuentre OpenSSH )

Creación de los archivos passwd y group

Dentro de la carpeta /bin se encuentran los programas mkpasswd y mkgroup para crear usuarios/grupos que servirán para la autentificación. Una vez realizada la autenteificación se transfiere la solicitud de autentificación a Windows para la comprobación de contraseñas en el SAM (Administrador de cuentas de seguridad) local y después en la base de datos del dominio si este exsite. Con lo cual los usuarios creados con passwd deben ser tambien usuarios creados en el sistema.

mkpasswd -l -u username >> ..\etc\passwd
mkgroup -l >> ..\etc\group

reemplazaremos username por el nombre de usuario quie debe de existir en Windows y -l por -d si estamos en un dominio. Para ver los usuarios del sistema donde queremos configurar OpenSSH:

C:\SSH\bin>mkpasswd -l
SYSTEM:*:18:544:,S-1-5-18::
Administradores:*:544:544:,S-1-x-32-544::
Administrador:unused_by_nt/2000/xp:500:513:U-INFOGRAFIA3\Administrador,
S-1-5-21-682003330-10600084298-49167539
-500:/home/Administrador:/bin/switch

Ejemplo de creación d e usuario/grupo:

C:\SSH\bin>mkpasswd -d -u USUARIO01 >> ..\etc\passwd
C:\SSH\bin>mkgroup -d >> ..\etc\group

Restricción de usuarios

Para que solo algunos usuarios puedan conectarse via SSH al servidor, agregar la siguiente linea en /etc/sshd_config:

AllowUsers usuario1 usuario2 …

Esta tambien permitido aceptar grupos de usuarios. Se hace con AllowGroups

Arrancar el servicio

C:\ssh\bin\net start opensshd

El servicio de OpenSSH Server está iniciándose.
El servicio de OpenSSH Server se ha iniciado con éxito.

Conexión con el servidor OpenSSH

Para conectarse al servidor OpenSSH desde un cliente Windows podemos usar PuTTY. PuTTY es un cliente de Telnet y de SSH «libre» para la interoperación con OpenSSH desde sistemas Windows.

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Para conectarse desde una shell en modo MSDOS:

ssh usuario@servidor

Seguridad

Es necesario asignar permisos a las carpetas par que sólo los usuarios que queramos puedan acceder a ellas. Además de asignar permisos a la carpeta C:\SSH que hemos creado en la instalacion de OpenSSH.

Algunas reglas importantes.

1. Siempre que sea posible, conceder el acceso remoto sólo a los administradores.
2. Sólo la cuenta LocalSystem y el grupo local «Administradores» deben tener acceso a los directorios
\ssh, \var y \etc.
3. Si aparece en pantalla un mensaje de advertencia del cliente SSH para comunicarle que la clave de host del servidor OpenSSH ha cambiado y no se trata de la primera vez que establece conexión con dicho servidor, averigüar cuál es la causa.
4. Utilizar SSH1 exclusivamente cuando existan clientes más antiguos que utilicen dicha versión de SSH.


En otro artículo referente a OpenSSH aplicaremos esto a la tunelización de comunicaciones con VNC y otras aplicacionres prácticas.

Anexos

Algunos parámetros de ssh_config

( sacado en su momento de http://www.tau.org.ar/base/computacion/gsal-19991128-htm/ssh.htm ahora no se encuentra accesible)

Port 22
# se ejecuta en el puerto 22,
ListenAddress 0.0.0.0
# escucha en todos los interfaces
HostKey /etc/ssh/ssh_host_key
# dónde se encuentra la llave del host
RandomSeed /etc/ssh/ssh_random_seed
# dónde se encuentra la simiente aleatoria
ServerKeyBits 768
# durante cuanto tiempo dura la llave del servidor
LoginGraceTime 300
# cuánto tiempo se tiene para introducir las credenciales
KeyRegenerationInterval 3600
# cada cuánto tiempo se regeneran las llaves del servidor
PermitRootLogin no
# permitir hacer login al root
IgnoreRhosts yes
# ignorar los ficheros .rhosts de los usuarios
StrictModes yes
# para asegurarse de que los usuarios no hacen tonterías
QuietMode no
# Si es sí no hace log de nada. Queremos hacer log de logins/etc.
X11Forwarding no
# ¿reenviar X11? no habría por qué en un servidor
FascistLogging no
# quizás no querramos hacer demasiado log
PrintMotd yes
# mostrar el mensaje del día? Siempre está bien
KeepAlive yes
# se asegura de que las sesiones se desconectan correctamente
SyslogFacility DAEMON
# ¿quién está haciendo el logging?
RhostsAuthentication no
# la autentificación está usando rhosts o /etc/hosts.equiv No está
# en mi mente. Por defecto es sí, de modo que se desactiva.
RSAAuthentication yes
# permitir autentificación RSA pura? Es bastante segura
PasswordAuthentication yes
# permitir a los usuarios que utilicen su login/contraseña habitual?
# Por qué no.
PermitEmptyPasswords no
# permitir cuentas con contraseñas vacias? no
Otras directivas sshd_conf útiles incluyen:
AllowGroups – permitir a grupos explícitamente (/etc/group) hacer login utilizando ssh
DenyGroups – deshabilitar explícitamente hacer login a grupos (/etc/groups)
DenyUsers – bloquear explícitamente a los usuarios el hacer login
AllowHosts – permitir ciertos hosts, al resto se les denegará
DenyHosts – bloquea ciertos hosts, al resto se les permitirá
IdleTimeout time – tiempo en minutos/horas/días/etc, que fuerza un logout haciendo un SIGHUP del proceso.

Sobre las claves públicas

· ssh_host_dsa_key — la clave privada DSA usada por sshd.
· ssh_host_dsa_key.pub — la clave pública DSA usada por sshd.
· ssh_host_key — la clave privada RSA usada por sshd para la versión 1 del protocolo SSH.
· ssh_host_key.pub — la clave pública RSA usada por sshd para la versión 1 del protocolo SSH.
· ssh_host_rsa_key — la clave privada RSA usada por sshd para la versión 2 del protocolo SSH.
· ssh_host_rsa_key.pub — la clave pública RSA usada por sshd para la versión 2 del protocolo SSH.

Esta entrada fue publicada en Seguridad y redes y etiquetada , , , , , , , , , , . Guarda el enlace permanente.

7 respuestas a Servidor OpenSSH para Windows.

  1. Fernando dijo:

    Qué tal? quisiera hacer una pregunta. Tengo instalado el OpenSSH en un w2k y tengo problemas con el tema permisos.
    tengo creado el usuario sshlogin que tiene que tener permiso total en todas las carpetas. y otro usuario q se llama credenciales, q solamente tiene q tener permiso para leer y ejecutar en una sola carpeta.
    cuando doy los permisos de esta forma, o no funciona el sshlogin o no funciona credenciales, es decir, si con sshlogin puedo escribir en todas las carpetas, con credenciales tambien. y si logro hacer que crdenciales solo pueda leer en una sola carpeta, con sshlogin puedo acceder a todas las carpetas pero no puedo escribir!. estoy enloqueciendo! necesito una pista por favor!
    Muchas gracias!

  2. Jose Luis dijo:

    Buen Dia! tengo una duda. tengo instaldo el OpenSSH en mi PC, con toda la configuración mencionada, la duda es que cuando trato de abrir un programa en base DOS desde la otra Pc (utilizando Putty) solo veo letras y simbolos no miro ni colores, ni nada. que es lo que se debe configurar, para mirarlo correctamente. y tambien cuando trato de acceder a unidades virtuales (creadas con subst) me dice no se puede hallar el controlador especificado. Gracias. mi correo companying@latinmail.com

  3. NATALIE dijo:

    Hola! no se que estoy haciendo mal! pero no puedo crear los usuarios… me dice q no reconoce los comandos! ya cambie las variables de entorno y eso… pero cuando intento crear los usuario no puedo! ayudenme please! ya revise los directorios y estan bien:/

  4. alfon dijo:

    Natalie,
    Hazlo desde C:\SSH\bin> y me cuentas.
    Saludos,

  5. kamp dijo:

    Tengo el siguiente problema:

    C:\SSH\bin>mkpasswd -d -u Administrador >> ..\etc\passwd
    mkpasswd: [2453] No se puede puede encontrar el controlador de dominio para este dominio.

    C:\SSH\bin>

    Ayuda utilizo windows Vista.

  6. Jose dijo:

    kamp, creo que tienes que hacer mkpasswd –l

  7. ignacio dijo:

    hola, ya tengo instalado el openssh y genere los grupos sin problema alguno, pero al general el primer usuasrio no tengo problema, si requiero agregar otro usuario adicional, me manda el mensaje de que el proceso esta ocupado, y de ahi no paso.

    en total son 3 usuarios los que debo de tener utilizando openssh, y los 3 pertenecen a mi domiono, no requiero meter a todos los usuarios del dominio

    la instruccion es C:\archivos de programas\openssh\bin>mkpasswd -d -u soporte2 >> ..\etc\passwd dominio.com

    que tengo que hacer para poder adicionar mas usuarios.

    gracias de antemano

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s