|

SERVIDOR OpenSSH en WINDOWS NT/ 2K /XP
QUE SON 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 túnel seguro para otros protocolos que no 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 los no seguros: telnet o rlogin, rsh, rcp, rdist.
Secure Shell previene, además, de una serie de ataques como
los procedentes de Sniffers:
-
IP Spoofing
-
MACpoofing
-
DNS Spoofing
-
Telnet Hickjacking
-
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.
* La creación de túnneles seguros
con SSH será motivo de otro artículo en breve.
PASOS PARA SU INSTALACION Y CONFIGURACION
Instalando el paquete OpenSSH para Windows
Descargar el paquete *.ZIP desde
aquí (OpenSSH for Windows v3.7.1p1-1. Actualizado a 30
September 2003).
Creación de un par de llaves / claves
- 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 encuentra 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:\OpenSSH (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
autentificación en Cygenwin, este transfiere la solicitud de
autentificación a Windows 2000 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
existe. 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 que debe existir en Windows 2000 y -l por -d si
estamos en un dominio.
- Para ver los usuarios del sistema donde queremos configurar
OpenSSH:
C:\OpenSSH\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 de usuario/grupo:
C:\OpenSSH\bin>mkpasswd -d -u INFOGRAFIA3
>> ..\etc\passwd
C:\OpenSSH\bin>mkgroup -d >> ..\etc\group
Restricción de usuarios
- Para que sólo algunos usuarios puedan conectarse via SSH al servidor,
agregar la siguiente línea en /etc/sshd_config:
AllowUsers <user1> <user2>
...
- Está también permitido aceptar grupos de usuarios. Se hace
con AllowGroups.
Arrancar el servicio
C:\net start opensshd
Conexión con el servidor OpenSSH
Para conectarse al servidor OpenSSH desde un cliente Windows podemos usar
PuTTY, un cliente de Telnet y de SSH
«libre» para la interoperación con OpenSSH desde sistemas
Windows: http://gnuwin.epfl.ch/apps/putty/es/
- 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.
Algunas reglas importantes.
-
Siempre que sea posible, conceder el acceso remoto sólo a los
administradores.
-
Sólo la cuenta LocalSystem y el grupo local «Administradores» deben tener
acceso a los directorios \ssh, \var y \etc.
-
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üe cuál es la causa.
-
Utilice SSH1 exclusivamente cuando existan
clientes más antiguos que utilicen dicha versión de SSH.
ANEXOS
I Algunos parámetros de ssh_config
(Algunos parámetros de ssh_config: sacado de http://www.tau.org.ar/base/computacion/gsal-19991128-htm/ssh.htm)
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
II 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.
- CIFRADO FUERTE
-
|