Introducción
SSH (Secure SHell) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X arrancado.
Además de la conexión a otras máquinas, SSH nos permite copiar datos de forma segura (tanto ficheros sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir claves al conectar a las máquinas y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH.
SSH trabaja de forma similar a como se hace con telnet. La diferencia principal es que SSH usa técnicas de cifrado que hacen que la información que viaja por el medio de comunicación vaya de manera no legible y ninguna tercera persona pueda descubrir el usuario y contraseña de la conexión ni lo que se escribe durante toda la sesión; aunque es posible atacar este tipo de sistemas por medio de ataques de REPLAY y manipular así la información entre destinos.
Instalación
Hacemos una simulación para ver qué paquetes nos va a instalar o qué configuraciones automáticas va a realizar.
# apt-get install -s openssh-serverLeyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Paquetes sugeridos:
molly-guard rssh ssh-askpass
Se instalarán los siguientes paquetes NUEVOS:
openssh-server
0 actualizados, 1 se instalarán, 0 para eliminar y 0 no actualizados.
Inst openssh-server (1:4.7p1-2 Debian:testing)
Conf openssh-server (1:4.7p1-2 Debian:testing)
Una vez que ya hemos comprobado los paquetes que va a instalar, ejecutamos sin la simulación.
# apt-get install -s openssh-serverLeyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Paquetes sugeridos:
molly-guard rssh ssh-askpass
Se instalarán los siguientes paquetes NUEVOS:
openssh-server
0 actualizados, 1 se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 0B/244kB de archivos.
Se utilizarán 651kB de espacio de disco adicional después de desempaquetar.
Preconfigurando paquetes ...
Seleccionando el paquete openssh-server previamente no seleccionado.
(Leyendo la base de datos ...
89016 ficheros y directorios instalados actualmente.)
Desempaquetando openssh-server (de .../openssh-server_1%3a4.7p1-2_i386.deb) ...
Configurando openssh-server (1:4.7p1-2) ...
Creating SSH2 RSA key; this may take some time ...
Creating SSH2 DSA key; this may take some time ...
Restarting OpenBSD Secure Shell server: sshd.
Verificamos que el servidor está activado y esperando conexiones.
# ssh localhostThe authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is ad:fb:82:2f:18:db:7c:d2:e9:0f:24:af:f1:38:b9:47.
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.
Configuración básica
Abrimos el archivo de configuración para cambiar algunos parámetros:
# vi /etc/ssh/sshd_configPuerto
Con la configuración por defecto es bastante común que al revisar los logs de acceso al sistema (por defecto está en /var/log/auth.log), observemos una cantidad desmesurada de intentos fallidos de login a nuestra máquina. Dichos intentos proceden de script-kiddies que escanean rangos de red en busca de servidores ssh a los que poder atacar de forma automática buscando usuarios y probando contraseñas.
En lugar de usar un script que detecte estos intentos y añada esas IPs a una lista negra es más sencillo parametrizar nuestro servidor para eludir esos ataques. Para ello, dentro del archivo de configuración podemos cambiar el puerto en el que escucha nuestro servidor del 22 (por defecto) a otro que tengamos libre.
Cambiaremos la línea que contiene "Port 22" por "Port xxxx" donde xxxx sería el puerto en el que escucharía el servidor ssh después de su reinicio.
Si ya lo teníamos instalado y queremos observar si estamos sufriendo ataques de esta índole, podemos hacernos una idea de su insistencia con:
Login como root
Una recomendación de seguridad, es la de no permitir que el usuario root haga login directamente. En caso de necesitar acceder al servidor como root, lo recomendable es acceder al sistema con otro usuario y una vez dentro, identificarme como administrador. Para ello, deberemos cambiar el valor "PermitRootLogin yes" por "PermitRootLogin no"
Tiempo de espera
Podemos bajar el tiempo que permanecerá el servidor con la conexión activa en espera de que el usuario introduzca sus datos de login, modificando el parametro "LoginGraceTime 120" por "LoginGraceTime xxx" donde xxx se mediría en segundos.
X11Forwarding
Deberíamos cambiarlo a "no" si estimamos que ningún usuario necesitará usar esta característica.
Banner
No es un requisito de seguridad, pero es recomendable poner un banner que aparecerá justo cuando se inicie la conexión a nuestro servidor, en el que podríamos avisar, por ejemplo, de que guardamos los intentos de acceso fallidos o con éxito en nuestra máquina y en diferentes idiomas por si tuviéramos que usarlos en un futuro.
Otras opciones
Existen otras muchas opciones de parametrización, pero ya es labor del administrador ojear la manpage de sshd para ajustar al máximo la configuración de su servidor y adaptarlo a sus necesidades.
Finalizando
Una vez hayamos guardado los cambios efectuados a la configuración, es necesario reiniciar el demonio para que ésta tenga efecto, o iniciarlo si lo teníamos detenido. Para ello, entramos lo siguiente:
Restarting OpenBSD Secure Shell server: sshd.
¡¡IMPORTANTE!!: En caso de que estemos modificando la instalación de un servidor remoto, es MUY IMPORTANTE mantenernos logueados, aplicar los cambios, reiniciar el demonio y NO salir hasta que comprobemos que abriendo una sesión nueva, obtenemos conexión y hacemos el login de forma correcta, ya que si hubiera algún problema aún podríamos buscar el origen, no siendo así si la hubieramos cerrado perdiendo el acceso al servidor.
Extraído de:
http://es.wikipedia.org/wiki/Secure_Shell
http://guia-debian.es/index.php?title=Instalaci%C3%B3n_de_servidor_SSH