jueves, 15 de mayo de 2008

SSH

SSH es un protocolo seguro y un conjunto de herramientas para reemplazar otras más comunes (inseguras). Fue diseñado desde el principio para ofrecer un máximo de seguridad y permitir el acceso remoto a servidores de forma segura. SSH se puede utilizar para asegurar cualquier tráfico basado en red, configurándolo como un pipe (p. ej., vinculándolo a cierto puerto en ambos extremos). Es bastante cutre, pero está bien para utilizar X a través de Internet. Además de esto, los componentes del servidor se ejecutan en la mayoría de sistemas UNIX, y NT, y los componentes del cliente se ejecutan en casi cualquier cosa. Por desgracia SSH ya no es gratis; sin embargo hay un proyecto para crear una implementación gratis del protocolo SSH.

No existen tantos problemas con el SSH per se como existen con telnet, todo el tráfico de la sesión va cifrado y el intercambio de llaves se hace de forma relativamente segura (opcionalmente se pueden precargar las llaves al final, para evitar que sean transmitidas y ser vulnerables a ataques tipo ‘man in the middle’, hombre de por medio. SSH se suele ejecutar como un demonio, y se puede cerrar utilizando el fichero sshd_config. También se puede ejecutar sshd desde inetd, y de tal forma utilizar TCP_WRAPPERS, y por defecto los rpm’s de ftp://ftp.replay.com/∞ tienen la opción de TCP_WRAPPERS compilada. De modo que utilizar "sshd: blahblah" en hosts.allow y hosts.deny te permite restringir con facilidad el acceso a ssh. Por favor, ten en cuenta que las primeras versiones de ssh contienen bugs, y se han hackeado sitios (generalmente con ataques tipo ‘man in the middle’ o problemas de desbordamientos de pila en el código ssh), pero la última versión de ssh tiene en cuenta estos problemas. El principal asunto con ssh es su licencia, sólo es gratis para usos no comerciales, sin embargo se puede descargar el código fuente de una gran variedad de sitios. Si se quiere instalar ssh con facilidad, hay un script llamado "install-ssh" que descargará, compilará e instalará el ssh sin dolor, está disponible en:

ftp://ftp.yellowdoglinux.com/pub/yellowdog/install-ssh/∞

Las reglas del cortafuegos para ssh son bastante parecidas a telnet. Por supuesto que está TCP_WRAPPERS, el problema con TCP_WRAPPERS es que un atacante se conecta al puerto, pero no consigue un demonio, SIN EMBARGO sabe que hay algo en ese puerto, mientras que mediante el cortafuegos, ni siquiera se consigue conexión con el puerto. Lo siguiente es un ejemplo de cómo permitir a la gente ejecutar ssh desde máquinas internas, y ciertas clases C en Internet (por ejemplo la clase C que utiliza tu PSI para su batería de módems de acceso).

ipfwadm –I –a accept –P tcp –S 10.0.0.0/8 –D 0.0.0.0/0 22

ipfwadm –I –a accept –P tcp –S bateria.módems.psi/24 –D 0.0.0.0/0 22

ipfwadm –I –a deny –P tcp –S 0.0.0.0/0 –D 0.0.0.0/0 22

o

ipchains –A input –p tcp –j ACCEPT –s 10.0.0.0/8 –d 0.0.0.0/0 22

ipchains –A input –p tcp –j ACCEPT –s bateria.módems.psi/24 –d 0.0.0.0/0 22

ipchains –A input –p tcp –j DENY –s 0.0.0.0/0 –d 0.0.0.0/0 22

O vía TCP_WRAPPERS

hosts.allow:

sshd: 10.0.0.0/255.0.0.0, bateria.módems.psi/255.255.255.0

hosts.deny:

sshd: 0.0.0.0/0.0.0.0

Además de esto, por defecto el ssh trae un fenomenal fichero de configuración, /etc/sshd/sshd_config en la mayoría de las instalaciones. Se puede restringir con facilidad a quién se le permite hacer login, qué hosts, y qué tipo de autentificación les está permitido utilizar. El fichero de configuración por defecto es relativamente seguro, pero lo que sigue es uno más seguro con explicaciones. Ten en cuenta que toda esta información se puede obtener con un "man sshd", la cual es una de las pocas páginas que están bien escritas. Lo que sigue es un fichero sshd-config típico:

Port 22

# se ejecuta en el puerto 22, el standard

ListenAddress 0.0.0.0

# escucha en todos los interfaces, quizás sería prefirible vincularlo

# sólo a un cortafuegos interno, etc.

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? ni hablar

IgnoreRhosts yes

# ignorar los ficheros .rhosts de los usuarios? Pues claro

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.



Software SSH

Fresh Free FiSSH

La mayoría de nosotros todavía nos tenemos que sentar frente a estaciones windows, y los clientes ssh para windows son bastante difíciles de encontrar. Fresh Free FiSSH es un cliente ssh gratuito para Windows 95/NT 4.0. Aunque todavía no está completado, recomendaría echarle un vistazo si eres como yo y tienes muchas estaciones Windows. La URL es: http://www.massconfusion.com/ssh/∞



Tera Term

Tera Term es un cliente gratuito para Windows y tiene una DLL añadida para soportar ssh. Tera Term está disponible en: http://hp.vector.co.jp/authors/VA002416/teraterm.html∞. La DLL añadida para soporte SSH se encuentra disponible en: http://www.zip.com.au/~roca/ttssh.html∞

putty



putty es un cliente SSH para Windows, bastante bueno, y completamente gratis, además de pequeño (184k en la actualidad). Se puede descargar de: ftp://rak.isternet.sk/mnt/rhcd/misc/putty/∞



mindterm

mindterm es un cliente gratuito de ssh en java, se puede conseguir en: http://www.mindbright.se/mindterm/∞



LSH

LSH es una implementación gratuita del protocolo SSH (ambos cliente y servidor), LSH trae licencia GNU y se está empezando a parecer a la alternativa (comercialmente hablando) a SSH (que ya no es gratis). Se puede descargar de: http://www.net.lut.ac.uk/psst/∞, ten en cuenta que está bajo desarrollo.



Secure CRT

Un Telnet/Cliente SSH comercial de software Vandyke. Se puede descargar / comprar en: http://www.vandyke.com/∞

Fsh

Fsh significa "Fast remote command execution", "Ejecución remota rápida de comandos", y en concepto es similar al rsh/rcp. Evita el gasto de tener que estar constantemente creando sesiones cifradas, mediante el uso de un túnel cifrado utilizando SSH o LSH, y ejecutando todos los comandos sobre él. Se puede conseguir en: http://www.lysator.liu.se/fsh/∞

SSH Win32 ports

Existen ports del SSH a Win32 disponibles en: http://guardian.htu.tuwien.ac.at/therapy/ssh/--∞-

No hay comentarios: