Está en la página 1de 11

SSH

SSH o también conocido como Secure Shell, es un protocolo y el nombre del programa que lo
implementa. SSH es ampliamente conocido por ser el protocolo seguro para la administración
remota de servidores, routers, switches y un largo etcétera de equipos. El protocolo SSH permite
manejar por completo el servidor o dispositivo de red mediante un intérprete de órdenes, además,
también podemos redirigir el tráfico de X para ejecutar programas gráficos a través de la propia
sesión SSH.

Otras características fundamentales de SSH son que nos va a permitir copiar datos de manera
segura, tanto archivos como carpetas, a través del protocolo SFTP (SSH FTP), un protocolo hecho
desde cero y que no tiene nada que ver con FTPS o FTPES (FTP sobre SSL/TLS). El protocolo
SSH es fundamental en el ámbito de las redes y sistemas, además, podremos configurarlo en detalle
para dotar a nuestro sistema de la máxima seguridad posible.

El protocolo SSH proporciona confidencialidad (los datos van cifrados punto a punto),
autenticación (podremos autenticarnos frente al servidor SSH de múltiples maneras, con
usuario/clave, criptografía de clave pública e incluso podremos configurar un segundo factor de
autenticación), integridad (si los datos se modifican o los modifica un usuario malintencionado se
podrá detectar, ya que usa HMAC para comprobar la integridad de todos y cada uno de los datos).

Existen dos versiones de SSH, la versión 1 no se recomienda hoy en día usarla, de hecho, por
defecto siempre se utiliza ya la versión SSHv2. Por defecto SSH utiliza el protocolo TCP de la capa
de transporte, y el número de puerto es el 22, no obstante, podremos cambiar (se recomienda) el
número de puerto para mitigar posibles escaneos de bots al servicio SSH.

En esta guía vamos a configurar el servidor SSH de OpenSSH (ver página oficial), un programa que
está disponible para sistemas operativos basados en Unix y Linux, como por ejemplo FreeBSD,
OpenBSD, Debian, Red Hat Enterprise Linux y un largo etcétera de distribuciones.

Instalación de OpenSSH y puesta en marcha

Como siempre actualizamos el sistema.

$ sudo apt update

$ sudo apt upgrade

OpenSSH es el programa servidor/cliente SSH más utilizado por los routers, switches, servidores y
un largo etcétera de dispositivos. Este programa es completamente gratuito y de código abierto. La
instalación de este servidor SSH es muy sencilla:

$ sudo apt install openssh-server


Observar que también
instala openssh-sftp-
server

Como siempre, si queremos comprobar | parar | iniciar | reiniciar un servicio :

$ sudo systemctl [ status | stop | start | restart ] ssh

Si queremos ver el estado de todos los servicios:

$ sudo service --status-all

Establecer una conexión ssh a través de windows

Bien, pues a partir de este momento nuestro servidor ya es accesible a través de ssh, vamos a hacer
la prueba utilizando la máquina anfitriona (que trabaja con windows) como cliente. Para realizar
esta operación necesitamos utilizar un programa cliente de ssh, existen varios (putty, kitty, cmder,
putty solar, etc) pero el más utilizado sin duda es PUTTY (descargas, documentación).

Instalamos putty y lo abrimos:


Sin entrar por ahora en los detalles de putty, para establecer la conexión con el servidor, es
suficiente con escribir su nombre o su ip y darle a 'open'.

A continuación putty nos pedirá las credenciales de acceso al sistema, por tanto, le damos un
usuario y su password, y listo. Ya estamos en el servidor!
Establecer una conexión ssh a través de linux

Para acceder al servidor ssh desde un cliente linux lo haremos a través de la linea de comandos

Generalmente:

$ ssh usuario@ipservidor

Sí el puerto de acceso lo hemos cambiado:

$ ssh -p númerodepuerto usuario@ipservidor

Sí queremos poder ejecutar aplicaciones gráficas desde el cliente en nuestro servidores

$ ssh -p númerodepuerto usuario@ipservidor -Y

Configuración básica de ssh

Estudiemos ahora con un poco de detalle la configuración básica de openssh. Para acceder al
fichero de configuración, ejecutamos:

$ sudo nano /etc/ssh/sshd_config


Cambiar el puerto por defecto

Por defecto los servidores SSH utilizan el puerto 22 para las conexiones. Es recomendable cambiar
este número de puerto, para evitar que bots o cibercriminales puedan intentar iniciar sesión, aunque
por sí solo esto no proporciona seguridad, sí podremos pasar desapercibidos a los escaneos masivos
desde Internet. Se recomienda utilizar uno por debajo del 1024, si por ejemplo queremos usar el
puerto 845 debemos poner en el fichero de configuración lo siguiente:

Port 845

Bloquear el acceso root en las conexiones remotas

Por defecto, cualquier usuario en el sistema operativo que tenga permisos de Shell, podrá iniciar
sesión en el servidor. Además, debemos tener en cuenta que si tenemos activado el usuario root,
también podrá conectarse al servidor de forma local o remota, evitando al atacante tener que
«adivinar» el nombre de usuario. Por defecto, los bots siempre intentan atacar el puerto 22 y al
usuario «root».

Desactivando al propio usuario root, y usando «sudo» para elevar a permisos de superusuario,
evitaremos esto. Además, OpenSSH también nos permitirá deshabilitar el login del usuario root
para dotar al sistema de mayor seguridad:

PermitRootLogin no

De esta manera las conexiones root quedarán bloqueadas evitando que usuarios no autorizados
puedan realizar ataques de fuerza bruta contra nuestro servidor SSH para adivinar los credenciales
del usuario Root. También tenemos otras opciones en este apartado, como por ejemplo
«PermitRootLogin without-password» donde se permite autenticación pero no con usuario y
contraseña, sino con claves criptográficas RSA.

Configuraciones de seguridad adicionales

Existen otras configuraciones recomendadas para evitar las conexiones no deseadas a nuestro
servidor SSH. Estas conexiones son:

LoginGraceTime: Estableceremos el tiempo necesario para introducir la contraseña, evitando que


el atacante tenga que «pensar mucho».

MaxAuthTries: Número de intentos permitidos al introducir la contraseña antes de desconectarnos.

MaxStartups: Número de logins simultáneos desde una IP, para evitar que se pueda utilizar la
fuerza bruta con varias sesiones a la vez.

AllowUsers: Es crear una lista blanca de usuario. Este parámetro nos permite configurar los
usuarios que podrán conectarse. Una medida muy restrictiva pero a la vez muy segura ya que
bloqueará todas las conexiones de los usuarios que no estén en el listado. Los usuarios que
tengamos aquí podrán conectarse, y el resto no.
DenyUsers: Parecido al anterior, pero ahora creamos una lista negra. Los usuarios que tengamos
aquí no podrán conectarse, y el resto sí.

AllowGroups/DenyUsers: Exactamente igual a lo anterior, pero en lugar de crear una lista


blanca/negra de usuarios, es de grupos de usuarios.

Por ejemplo, un archivo de configuración de sshd_config podría contener las siguientes directivas:
Protocolo SFTP

El protocolo SFTP (SSH File Transfer Protocol) o también conocido como transferencia de ficheros
SSH, es un protocolo que no tiene nada que ver con el protocolo FTP. SFTP no es la versión segura
del protocolo FTP, ya que está basado en el protocolo SSH por completo. Este protocolo SFTP nos
permite autenticarnos y realizar transferencia de ficheros entre equipos como si fuera un servidor
FTPES, pero utilizando criptografía del protocolo SSH que tengamos instalado en el servidor de
archivos. SFTP tampoco es un protocolo donde FTP utilice SSH para asegurar la conexión, es un
protocolo completamente nuevo basado en SSH y no en FTP.

El protocolo SFTP hace uso del puerto TCP 22 por defecto, el mismo que el protocolo SSH. Si en
nuestro servidor de archivos tenemos un servidor SSH para ejecutar comandos CLI, también
tendremos la opción de habilitar el SFTP para conectarnos con clientes SFTP como FileZilla, y
comenzar a transferir archivos. La autenticación de SFTP es exactamente la misma que en SSH, es
decir, si en SSH utilizamos clave pública, en SFTP también deberemos hacer uso de esta
criptografía de clave pública.

Más información en https://www.redeszone.net/tutoriales/servidores/ftps-ftpes-sftp-caracteristicas-


diferencias/

Conectarnos por sftp a un servidor ssh desde linux

Utilizamos el programa sftp

$ sftp [-P número de puerto] usuario@ip

El argumento [-P número de puerto] solo es necesario cuando es distinto de 22

$ sftp -P 845 pepito@192.168.1.64

Una vez en sftp podemos pedir help para recibir una lista de opciones en sftp
Algunos ejemplos con sftp

sftp> pwd

Nos dice el directorio donde estamos

sftp> cd

no comment

sftp> get remoteFile

transfiere archivos / carpetas del servidor remoto al sistema local


Si usamos el modificador -r (get -r nombrecarpeta) copiamos de forma recursiva

sftp> put localFile

transfiere archivos / carpetas del sistema local al servidor remoto


Si usamos el modificador -r (put -r nombrecarpeta) copiamos de forma recursiva
sftp> df -h

Revisa si hay espacio suficiente para completar las transfencias

sftp> exit

Salir de sftp

Como hemos visto en el help de sftp la lista de comandos es bastante amplia, sobre todo si tenemos
en cuenta los modificadores, por esta razón con frecuencia se utilizan clientes gráficos que facilitan
la tarea, por ejemplo filezilla, winSPC, Ciberduck, AndFTP

Instalación de Filezilla.

Desde la página oficial https://filezilla-project.org/

Cuando accedemos a Filezilla lo primero será crear un "nuevo sitio" a través del menú "Archivo" en
el especificaremos que el tipo de protocolo es SFTP, los datos del servidor, el usuario y el modo de
validación

También podría gustarte