En el presente artículo veremos los comandos necesarios para la instalación y configuración de SSH, en un entorno Linux utilizando OpenSSH. Comenzamos comentando los conceptos principales sobre este protocolo.
Qué es SSH
SSH (Secure Shell) es una forma segura de comunicar sistemas informáticos. Es un protocolo que permite establecer conexiones seguras con otros programas o protocolos (Maiorano A., 2009 ). Por ello, es posible que el protocolo de correo o de transferencia de archivos puedan utilizar mecanismos de cifrado para mejorar su seguridad. Se le llama SSH tanto al protocolo como al programa que lo implementa.
Con SSH podemos controlar un equipo informático remotamente a través de una red mediante un intérprete de comandos. Su uso es similar a Telnet, pero es más seguro. (Sivianes et al, 2010 ).
SSH utiliza encriptación (normalmente de 128 bits) para resguardar la información que viaja a través de un medio no seguro como lo es una red de datos. Para conseguir esto puede utilizar diversos algoritmos de compresión y encriptación (como BlowFish, Triple DES, IDEA y RSA). Utiliza contraseñas o bien llaves DSA o RSA para la autenticación y no necesariamente requiere de un servidor de llaves.
SSH está basado en la arquitectura cliente-servidor en la que el cliente es el proceso que se ejecuta en el equipo desde donde nos conectamos, y el servidor es el que se ejecuta en el equipo sobre el que se quiere obtener una sesión de trabajo (Gómez, Padilla y Gil, 2007).
OpenSSH
Existe una vesión open source de SSH llamado OpenSSH. Entre sus herramientas se cuentan ssh-add, ssh-agent, ssh-keygen, ssh-keyscan, ssh-keysign y ssftp-server (Vea Programas de la suite SSH)
OpenSSH es desarrollado por OpenBSD pero tambien existen versiones para el sistema operativo Windows.
Instalación y configuración de SSH
Usaremos un sistema basado en Debian como ejemplo.
Instalar el cliente OpenSSH
apt-get install openssh-client
Instalar la aplicación servidor OpenSSH
apt-get install openssh-server
Configuración del servidor OpenSSH
Antes de realizar cambios a su archivo de configuración recuerde realizar una copia de respaldo y de preferencia protegerlo contra escritura. Eso es lo que realizan los siguiente comandos.
cp /etc/ssh/sshd_config /etc/ssh/ssh_config.original chmod a-w /etc/ssh/sshd_config.original
Abrir el archivo de configuración
nano /etc/ssh/sshd_config
Directivas de configuración más empleadas
Directiva | Uso |
PubkeyAuthentication yes | Hace que sshd permita credenciales de inicio de sesión en clave pública. |
Banner /etc/issue.net | Hace que el servidor OpenSSH muestre el contenido del archivo /etc/issue.net como banner antes del login |
ListenAddress 0.0.0.0 | Hace que sshd escuche peticiones de conexión desde cualquier red externa. |
Port 2222 | Hace que OpenSSH escuche por el puerto TCP 2222 en lugar del puerto 22 (por defecto). |
PermitRootLogin no | Impide que se conecten como usuario “root”. Útil para evitar ataques no deseados. |
Otras directivas que también son útiles
Directiva | Uso |
Protocol | Indica la versión del protocolo. Actualmente hay dos versiones, siendo la 2 la más segura (mit.edu, 2016) |
IdentifyFile | Indica el nombre del archivo que contiene la clave pública, normalmente ~/.ssh/id_rsa |
PasswordAuthentication | Indica que el mecanismo de autenticación a utilizar es el clásico (usuario y contraseña) |
Ciphrers | Indica los algoritmos de cifrado disponibles. |
RSAAuthentication | Para indicar si se usa RSA en la autentificación. |
Si hemos realizado cambios al archivo sshd_config hay que reiniciar el servidor para que los cambios surtan efecto. Esto se hace con el comando
/etc/init.d/ssh restart
Uso del cliente SSH en sistemas Linux
El comando es el siguiente: ssh host_remoto
Donde host_remoto es la IP del servidor SSH o su nombre.
Otra forma de conectarnos es especificando el nombre de usuario en el servidor remoto.
Ssh usuario_remoto@host_remoto
Programas de la suite ssh
Programa | Descripción |
scp | Secure Copy, ofrece un medio seguro de copiar archivos de un host a otro. |
ssh | Cliente de Secure Shell. |
ssh-add | Registra nuevas claves al agente de autenticación |
ssh-agent | Realiza la autenticación al estilo RSA a través de redes y permite a los host remotos acceder y almacenar claves privadas de RSA. |
sshd | Servidor de Secure Shell. De forma predeterminada escucha en el puerto 22. |
ssh-keygen | El generador de claves para ssh. Los usuarios pueden generar una clave RSA para autenticarse local o remotamente. |
Arquitectura de protocolos SSH
La arquitectura de protocolos enviada a la IETF para su aprobación se conforma por tres componentes principales (Nichols y Lekkas, 2003).
- Protocolo de nivel de transporte. Autenticación del servidor, confidencialidad e integridad de los datos.
- Protocolo de autenticación. Autenticación del usuario.
- Protocolo de conexión. Múltiples canales de datos a través de un único túnel cifrado.
Referencias
- Anónimo (2000) Linux Máxima Seguridad. Pearson Educación.
- Gagné (1999). Linux System Administration. A user’s guide. Addison Wesley.
- Gómez, Padilla y Gil (2007). Administración de Sistemas Operativos Windows y Linux, un enfoque práctico. RA-MA Editorial.
- Maiorano A. (2009). Criptografía, técnicas de desarrollo para profesionales. Alfaomega.
- Mit.Edu (2016). Versiones del protocolo SSH. Disponible en [http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-ssh-version.html] consultado el [15-3-2016].
- Nichols y Lekkas (2003). Seguridad para comunicaciones inalámbricas. Mc Graw Hill
- Sivianes et al (2010). Servicios en red. Editorial Paraninfo.
Tu comentario
opiniones