linux-vps

Hace unas semanas y tras meditarlo mucho, he decidido contratar un VPS para alojar varios dominios y dejar atrás el alojamiento compartido. Una vez operativo el servidor, la primera cuestión que me inquieta es  la seguridad.  A diferencia del alojamiento compartido, donde todo eso está en manos de los  técnico del proveedor de hosting, con el vps o servidor no administrado es responsabilidad nuestra. A continuación os dejo un pequeño tutorial para tomar unas precauciones necesarias que refuercen la seguridad de nuestro servidor linux, en este caso concreto se trata de un VPS montado sobre Centos 6.

Medidas de seguridad que vamos a implantar

  1. Actualizar el  servidor para su uso
  2. Cambiar el puerto de acceso SSH que viene por defecto
  3. Deshabilitar acceso de Root al SSH y habilitar acceso a nuevo usuario

1. Preparar el servidor para su uso

(En mi caso este paso de actualización me lo salté)

Una vez que tenemos los datos del servidor es necesario conectarnos a él para poder toquetear lo que haga falta. Si utilizamos Windows como Sistema Operativo de nuestro PC lo mejor es descargar Putty e instalarlo en nuestro sistema. Putty es una herramienta gratuita que sirve para establecer una conexión remota con el servidor, o mejor dicho establecer una conexión por SSH. Si utilizamos Mac, para establecer la conexión SSH a nuestro servidor, podéis descargar del Apple Store la aplicación gratuita vSSH.

Una vez configurada la herramienta establecemos la conexión con nuestro servidor. Lo primero que nos preguntará será nuestro usuario y password y como es un servidor nuevo seguramente el usuario sea root y la contraseña que te dieron al contratar el servicio.

Aparecerá una linea como la siguiente:

[root@deserver ~]#

La cual significa que estaremos dentro del VPS y donde no podemos hacer nada más que escribir comandos de linux.

Como primera medida es necesario que actualizemos el sistema para evitar problemas después, para ello debemos ejecutar una serie de comandos. El primero y con el fin de eliminar todos los residuos y actualizar el cache de linux es:

yum clean all && yum makecache

Luego podemos listar los paquetes que requieran actualización con

yum list updates

y actualizarlos con

yum update

Dependiendo de varios factores esta ultima operación puede llevarte unos minutos. Al finalizar el sistema estará completamente actualizado.

2. Cambiar el puerto de acceso SSH que viene por defecto

Aquí empieza lo bueno, vamos mano a la obra. En primer lugar, necesitamos  un editor muy sencillo de usar llamado nano. Por lo general nano no viene instalado en ningún OS por lo que debemos instalarlo, para ello ejecutamos

yum install nano

Con la instalación de nano completa, procederemos a editar el archivo sshd_config, que es el encargado de las configuraciones de nuestra conexión por SSH.:

# nano /etc/ssh/sshd_config

En este archivo hay varias  líneas, pero las principales son las que verás a continuación:

 #Port 22
 #AddressFamily any
 #ListenAddress 0.0.0.0
 #ListenAddress ::

Allí ubicamos # Port 22 y lo cambiaremos por otro número que deberemos recordar ya que ese número será el puerto al que nos conectaremos luego por ssh. Además, y para que este cambio surta efecto deberemos descomentar la línea, eliminando el # al inicio por lo que nos quedaría algo así:

Port 5050
 #AddressFamily any
 #ListenAddress 0.0.0.0
 #ListenAddress ::

Yo elegí 5050 pero puedes elegir otro puerto, recuerda anotarlo para colocarlo en la próxima configuración de putty, de lo contrario no podrás acceder a tu servidor nuevamente.

Una vez realizados los cambios guardamos el archivo con Ctrl + X,  nos preguntará si queremos sobreeescribir el archivo original, le decimos Yes y presionamos Enter para confirmar los cambios.

Por último y para aplicar los cambios realizados deberemos reiniciar el servicio de SSH, por lo que hará falta ejecutar la línea:

service sshd restart.

Nos deslogueamos con logout y cuando intentemos volver a conectarnos a traves de Putty, este nos indicará que no es posible realizar la conexión, cambiamos el puerto por el que pusimos anteriormente en sshd_config y seguramente ya debería funcionar.

Bien, hasta aquí hemos actualizado el sistema a su ultima versión y hemos logrado quitar a nuestro server de la lista de posibles intentos de ingreso ilegales, ya que el puerto de ssh por default en todos los servidores es 22, imagínate que existen millones de servidores en el mundo que aún poseen ese puerto. El nuestro ya no está en esa lista por lo que podemos dormir tranquilos.

¿Pero que tal si vamos un poco más allá y le quitamos acceso al ssh al usuario root?

3. Deshabilitar acceso de Root al SSH y habilitar acceso a nuevo usuario.

Así como todos los piratas informáticos saben que hay grandes probabilidades de que tu puerto de SSH sea 22, también saben que hay muchas más probabilidades de que tu usuario de SSH sea Root, es por ello que no debemos dejar nada al azar y crear un nuevo usuario y restringir el uso de root es justamente la clase de acciones que nos llevarán a una noche de sueño placentero.

Antes de restringir el acceso de Root deberemos crear otro usuario que tenga quizás los mismos permisos que Root, asi que en este caso crearemos un nuevo usuario escribiendo en  la línea de comandos:

useradd pablo

Para verificar que el usuario se ha creado correctamente ejecutamos el comando:

[root@deserver ~]# ls /home -l

Lo que nos arrojaría un resultado como este:

 drwx------ 2 pablo pablo 4096 Sep 29 21:31 pablo

Ahora le asignamos una clave con el comando:

passwd pablo

Y deberemos ingresar una contraseña y luego repetirla para confirmar que la hemos puesto correctamente. Si todo ha salido bien, nos quedará algo similar a esto:

Changing password for user pablo.
 New password:
 Retype new password:
 passwd: all authentication tokens updated successfully.

Ahora que tenemos un usuario con su respectivo password, vamos a agregarlo al grupo de sudoers para poder utilizarlo como administrador de nuestro servidor.

nano /etc/sudoers

Buscamos las lineas

## Allow root to run any commands anywhere
 root ALL=(ALL) ALL

y debajo de root colocamos

pablo ALL=(ALL)       ALL

lo que nos dejaría algo así:

## Allow root to run any commands anywhere
 root ALL=(ALL) ALL
 pablo ALL=(ALL) ALL

Realizados estos cambios nos deslogueamos de la consola y nos logueamos con el usuario creado recientemente.

Si todo está bien deberíamos poder ejecutar acciones de root, así que probamos con algo que no nos cause ningún inconveniente:

sudo yum update

En mi caso, luego de ingresar la contraseña me mostró el típico mensaje de responsabilidad y luego ejecutó el comando sin ningún problema:

[pablo@deserver ~]$ sudo yum update
We trust you have received the usual lecture from the local System
 Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
 #2) Think before you type.
 #3) With great power comes great responsibility.
[sudo] password for pablo:
 Loaded plugins: fastestmirror
 Loading mirror speeds from cached hostfile
 * base: mirror.netcologne.de
 * extras: mirror.netcologne.de
 * updates: mirror.netcologne.de
 Setting up Update Process
 No Packages marked for Update

Si!!! Bien, hasta ahora no hemos tenido ningún problema y ya estamos casi finalizando la seguridad básica de nuestro servidor.

Para continuar editaremos nuevamente el archivo sshd_config para cambiar la propiedad de acceso del usuario Root, ejecutamos nuevamente:

sudo nano /etc/ssh/sshd_config

Buscamos la linea correspondiente, que seguramente la encontrarás en la sección de autentificación:

# Authentication:
#LoginGraceTime 2m
 #PermitRootLogin yes
 #StrictModes yes
 #MaxAuthTries 6
 #MaxSessions 10

Descomentamo la línea PermitRootLogin quitando al principio el símbolo # y le cambiamos el yes por no. Quedaría de la siguiente manera.

#LoginGraceTime 2m
 PermitRootLogin no
 #StrictModes yes
 #MaxAuthTries 6
 #MaxSessions 10

Guardamos los cambios, salimos de nano y  reiniciamos el servicio de ssh:

[pablo@deserver ~]$ sudo service sshd restart
 Stopping sshd: [ OK ]
 Starting sshd: [ OK ]
 [pablo@deserver ~]$

Esto es todo. Intenta loguearte mediante Root y verás que te resulta imposible. Con esto finalizamos las configuraciones básicas del servidor y estamos listos para ir un paso más allá, instalar un panel de control web, instalar nuevos servicios y conocer un poco más sobre nuestro servidor.

Tengo que dar las gracias a Seba Guzman.

Print Friendly
Compartir