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 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 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.
La creación de túnneles seguros con SSH
será motivo de otro artículo en breve.
Pasos para su instalación y configuración.
Instalando el paquete OpenSSH para Windows
Descargar el paquete desde aquí
(OpenSSH for Windows v3.7.1p1-1 Actualizado a 30 September 2003)
Crear un par de llaves
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:\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 autenteificació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 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 Windows2000 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 d e usuario/grupo:
C:\OpenSSH\bin>mkpasswd
-d -u INFOGRAFIA3 >> ..\etc\passwd
C:\OpenSSH\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 <user1>
<user2> ...
Esta tambien 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. PuTTY es 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 qye sólo
los usuariosque queramos puedan acceder a ellas.
Algunas reglas importantes.
1. Siempre que sea posible, conceda 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üe cuál
es la causa.
4. Utilice SSH1 exclusivamente cuando existan
clientes más antiguos que utilicen dicha versión
de SSH.
Anexos
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.
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.
¿
Algún comentarío sobre este artículo ?
Pincha aquí
|