Publicado el 29 de Mayo del 2017
1.307 visualizaciones desde el 29 de Mayo del 2017
117,2 KB
5 paginas
SSH
Secure shell, también llamado ssh es un protocolo utilizado paro login y ejecución de procesos
remotos.
SSH nos permite:
● iniciar sesiones en servidores remotos.
● ejecutar comandos remotamente.
● realizar tuneles IP cifrados.
● copiar archivos entre diferentes hosts
● ejecutar aplicaciones X11 remotamente.
Cómo funciona el protocolo SSH
El funcionamiento de este protocolo se puede resumir en los siguientes pasos a continuación:
1. El cliente inicia una conexión TCP sobre el puerto 22 del servicio. Este puerto es el que
utiliza por defecto el protocolo, aunque se puede modificar.
2. El cliente y el servidor se ponen de acuerdo en la versión del protocolo a utilizar, así
como el algoritmo de cifrado utilizado para el intercambio de la información.
3. El servidor, que tiene en su poder dos claves (una privada y una pública), manda su
clave pública al cliente.
4. Cuando el cliente recibe la clave enviada por el servidor, la compara con la que tiene
almacenada para verificar su autenticidad. El protocolo SSH exige que el cliente la
confirme la primera vez.
5. Con la clave pública del servidor en su poder, el cliente genera una clave de sesión
aleatoria, creando un mensaje que contiene esa clave y el algoritmo seleccionado para
la encriptación de la información. Toda esa información es enviada al servidor haciendo
uso de la clave pública que envió en un paso anterior de forma cifrada.
6. Si todo es correcto, el cliente queda autenticado, iniciando la sesión para comunicarse
con el servidor.
¿Por qué usar SSH?
Existen ciertas amenazas:
● Intercepción de la comunicación entre dos sistemas:un tercero en algún lugar de la red
entre entidades en comunicación hace una copia de la información que pasa entre ellas.
La parte interceptora puede interceptar y conservar la información, o puede modificar la
información y luego enviarla al recipiente al cual estaba destinada.
● Personificación de un determinado host:un sistema interceptor finge ser el receptor a
quien está destinado un mensaje. Si funciona la estrategia, el cliente no se da cuenta del
interceptor como si su mensaje hubiese
engaño y continúa la comunicación con el
llegado a su destino satisfactoriamente.
Métodos de autenticación de usuarios:
Existen varios métodos que pueden utilizarse para autenticar usuarios. Aunque son
mutuamente excluyentes, tanto el cliente como el servidor pueden soportar varios de ellos. En el
momento de la autenticación se aplicarán los métodos que ambos soporten, siguiendo un orden
determinado.
●
Autenticación con contraseña:Es el método más simple (y común) de autenticación. El
cliente solicita al usuario el
ingreso de una contraseña (password) y la misma es
enviada al servidor, el cuál validará la misma utilizando los mecanismos configurados en
el sistema (generalmente, utilizará la autenticación del sistema Unix para validar la
contraseña contra el contenido del archivo /etc/shadow, de la misma manera que lo
hace el login). Las desventajas de este sistema son varias:
1. El usuario debe tipear su contraseña cada vez que se conecta al servidor .
2. La contraseña del usuario es enviada hacia el servidor.
● Autenticación con clave pública:Para poder llevarse a cabo, el usuario debe tener un par
de claves pública/privada, y la clave pública debe estar almacenada en el servidor
.Luego de establecida la conexión, el servidor genera un número aleatorio llamado
“desafío” (challenge) que es cifrado con la clave pública del usuario usando RSA o DSA
(en los ejemplos nos referiremos siempre a RSA). El texto cifrado es enviado al cliente,
que debe descifrarlo con la clave privada correspondiente y devolverlo al servidor,
demostrando de esta manera que el usuario es quien dice ser. Las ventajas de este
método respecto del anterior son:
1. El usuario no debe tipear (ni recordar) ninguna contraseña.
2. Ninguna contraseña secreta (en este caso, la clave privada del usuario) es
enviada al servidor .
Cómo configurar el protocolo SSH para hacerlo más seguro
Aunque hemos estado hablando de que el uso del protocolo SSH es totalmente seguro, esto no
quiere decir que esté ajeno a sufrir algún tipo de ataque que ponga en riesgo nuestra
información. Por este motivo, los usuarios tienen la opción de modificar la configuración por
defecto que trae este protocolo para hacerlo aún más seguro, como puede ser el cambio del
puerto por defecto o el número máximo de reintentos para conectarse al servidor. Veamos
cómo mejorar la seguridad de nuestro SSH.
Lo primero que debemos hacer es localizar el fichero de configuración y que lleva por nombre
“sshd_config”. Este fichero suele estar en la ruta “/etc/ssh”. Si no estuviera en esa dirección,
podemos hacer uso del comando “find” de Linux para localizar su ubicación.
Una vez localizado lo editamos con nuestro programa de edición de ficheros favorito, como
puede ser Vi, Nano o cualquier otro que tengamos instalado. Una vez que lo abrimos, nos
debemos encontrar un contenido parecido al que dejamos a continuación (los valores pueden
variar).
Port 22
Protocol 2
LoginGraceTime 30
PermitRootLogin no
MaxAuthTries 2
MaxStartups 3
AllowUsers Hostalia
Entre las cosas que podemos hacer están:
a) Cambiar el puerto por defecto: Por defecto, SSH utiliza el puerto 22, por lo que cuando un
hacker lanza un ataque lo suele hacer sobre este puerto. Si le cambiamos el número del puerto,
el servicio no responderá al puerto por defecto y habremos puesto una nueva traba a quien
intente conseguir nuestra información.
Para hacer este cambio, lo único que hay que hacer es en el fichero de configuración cambiar el
valor del campo “port” por el valor que queramos, por ejemplo el puerto 10589.
Port 10589
b) Deshabilitar el acceso root:Todo servidor tiene asignado un usuario root que tiene
privilegios para hacer cualquier tipo de acción sobre la máquina. Una buena práctica para
mejorar la seguridad es impedir el acceso al servidor por medio de este usuario root y obligar
al acceso por medio de alguno de los usuarios que hayamos creado y que no tienen privilegio
root. Una vez logueados con nuestro usuario, podremos convertirnos en usuario root por medio
del comando “sudo”.
Para impedir el acceso del usuario root, debemos poner a “no” la variable “PermitRootLogin”.
PermitRootLogin no
c) Deshabilitar el uso del protocolo 1 de SSH: La versión 1 que apareció primero y a la que
se descubrió algunas vulnerabilidades, y la versión 2 que corregía esos problemas.
De forma general, se puede configurar para que se pueda utilizar cualquiera de las dos
versiones, pero es recomendable no utilizar la primera de las versiones. Para indicar que vamos
a utilizar la versión 2 hay que modificar la variable “Protocol” del siguiente modo:
Protocol 2
d) Limitar el número de reintentos:Por medio de la variable “MaxAuthTries”, podemos indicar
introducir el nombre de usuario o la
el número de veces que nos podemos equivocar al
contraseña. Una vez superado el número que hayamos indicado, la conexión se perderá y
habrá que empezar de nuevo el proceso de conexión. Con esto evitaremos ataques de
persistencia de la conexión.
Si queremos poner un máximo de 3 intentos, habría que indicarlo de la siguiente manera:
MaxAuthTries 3
e) Limitar el número de pantallas de login:Otra de las acciones que podemos llevar a cabo
para mejorar la seguridad es limitar el número de ventanas de logueo simultáneas que podemos
tener activas desde una misma IP, para de esta forma evitar ataques divididos. Una vez
logueado el usuario, no será posible tener abiertos un número superior de terminales SSH al
indicado en esta variable.
Si queremos limitar a una única pantalla de logueo por IP, habrí
Comentarios de: SSH (0)
No hay comentarios