Acceso seguro a tu servidor Linux [SSH]

29 08 2011

Bien, varios de uds o pagan por un hosting con un OS propio.. alquilan un servidor, o tienen uno en su casa, o en su empresa. Varios tambien aun tienen un teclado y un monitor conectados al servidor, para poder configurar las cosas que sean necesarias, o modificar aplicaciones del sistema. Incluso varios ya usan acceso por ssh, pero lo hacen en cierta forma, insegura, mas alla que ssh es encriptado.. seguro.. etc.

Lo ideal es acceder sin la necesidad de enviar o usar un password, pero ya llegaremos a eso. Primero una basica de configuracion para los que no saben como implementarlo.

En nuestro servidor antes que nada tenemos que tener instalado el servicio SSH, lo instalamos en Ubuntu Server con:

  • sudo apt-get install openssh-server

Una vez instalado, ya queda configurado con los parametros por defecto; que a efectos de un caso “nuevo” nos viene genial. Ahora podemos conectarnos desde otra computadora (si tenemos ubuntu tenemos que instalar “openssh-client“. Para conectarnos lo hacemos con el siguiente comando:

  • ssh usuario@direccionIPremota

Bien, ahora que ya tenemos instalado el servidor ssh y funcionando, y que ya estmos conectados a el, podemos modificarlo para tener un poco mas de seguridad.

Uno de las opciones para incrementar la seguridad es cambiar el puerto que se utiliza para la conexion. Claro que esto no frenara ni confundira a quienes realmente se propongan entrar al servidor, pero si es un obstaculo mas para los posibles intrusos o bots que andan por ahi.

El archivo principal que modificaremos para las configuraciones del servicio de servidor SSH es /etc/ssh/sshd_config.

Cambio de Puerto

Una vez tengamos elegido el puerto que queramos usar, tenemos que corroborar que el puerto no este en uso ya, para esto usamos el comando:

  • netstat -an | grep “puerto”
El resultado deberia ser vacio, ya que con esto buscamos en todos los puertos activos, el que este usando el puerto que nosotros le dijimos. Luego de saber que tenemos ese puerto libre, podemos proceder a modificarlo. En el archivo sshd_config, tenemos que modificar el puerto en uso, el parametro es Port 22. En vez de 22 le podemos poner 2222 o cualquier otro puerto que nosotros queramos.
Por ejemplo, algo que podemos hacer, si NO estamos corriendo un servicio HTTPS, deberiamos tener el puerto 443 libre, esa es una buena forma de “camuflar” nuestro servicio ssh. Claro que cualquier scanner bueno lo detectaria igual, pero… mientras mas “oscuridad” tengamos, mejor para nosotros. Tambien nos sirve si queremos acceder desde un lugar en donde filtren los puertos a usar (por ejemplo el trabajo, el centro de estudios, etc), donde el puerto 443 generalmente esta libre para usar, para poder conectarte de forma segura a tu email, ebanking, u otro servicio que use HTTPS.

Login sin usar Password

Una buena opcion para mejorar la seguridad, es no tener que usar password para logearnos al servidor. Con esto nos ahorramos a los ojos curiosos que quieran ver nuestro ingreso de password y los scripts que prueben claves y usuarios por fuerza bruta.

Para esto lo que tenemos que hacer es generar un par de llaves cifradas, que son una “publica” y otra “privada”. La privada es la que tendremos solo nosotros en nuestra computadora, y NUNCA deberiamos darsela a nadie. La publica es la que va a estar en el servidor, contra la cual la “privada” sera corroborada.

Bien, para generar el par de llaves cifradas, en nuestra PC usamos el siguiente comando:

  • ssh-keygen -t dsa

Ahora solo seguimos las indicaciones en pantalla. Podemos indicarle una frase secreta, la cual servira como “password” para logearnos, pero no sera el password del usuario en el servidor. Por lo no podran tener control total de la cuenta.

Este metodo supone que nuestra PC es segura, y que nadie mas va a usar nuestra cuenta de usuario en ella. Si nos robaran la PC o si alguien lograra logearse en nuestra PC con nuestro usuario, esa frase secreta puede prevenir que logren entrar al servidor.

Una vez generadas las llaves, estas quedan guardadas en la carpeta /home/usuario/.ssh . 

El archivo “publico” se llama (a menos que le cambiemos el nombre en el proceso) id_dsa.pub

Este archivo lo tenemos que agregarlo al archivo /home/usuario/.ssh/authorized_keys, esto lo podemos hacer de la siguiente forma (suponiendo que estamos en la ruta que dijimos):

  • cat id_dsa.pub >> authorized_keys
  • rm id_dsa.pub

Bien, ahora ya podemos acceder al servidor sin contrasena, pero esto no alcanza. Al menos no para nuetro fin, de mejorar la seguridad del mismo. Lo ideal seria ahora deshabilitar el acceso con contrasenas, ya que no lo necesitamos mas (antes corroboremos que podemos logearnos, solo para chequear).

Una vez que corroboramos que podemos logearnos sin dar nuestro password, tenemos que volver a modificar el archivo sshd_config.

Tenemos que buscar la opcion que dice: #PasswordAuthentication yes y la cambiamos por PasswordAuthentication no. Osea que le sacamos el “#” y le decimos que NO.

Y con esto ya tenemos acceso sin password y relativamente seguro. Para una proteccion extra podemos instalar Fail2Ban para prevenir ataques por fuerza bruta (suponiendo que exista acceso desde internet al servidor).

Fuentes usadas:

Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: