Por fin has contratado el hosting de RamNode para empezar a configurar tu servidor privado virtual y utilizarlo para lo que quieras.
En un rato te va a llegar la clave de root y la IP del servidor que te han asignado. Podrás empezar a trastear con todas las ideas que quieras implementar.
Tendrás que conectarte al servidor por SSH y configurar la conexión para que nadie pueda acceder y hacer lo que quiera con tu servidor. Será una de las distintas medidas de seguridad que utilizaremos.
Conectarse al servidor
Una vez que hayas recibido el correo, solo necesitas introducir en la consola el siguiente comando:
ssh root@1.2.3.4
Tendrás que cambiar 1.2.3.4 por la IP que te han dado de tu servidor.
Una vez que hayas accedido, lo primero que es necesario realizar es crear una cuenta de usuario. Esto debes hacerlo porque permitir el acceso a la cuenta root (superusuario que todo puede hacerlo) desde el exterior aunque sea SSH, es una práctica que conlleva muchos riesgos, así que preparamos crear una que sea un usuario normal.
Vamos a suponer que llamamos al nuevo usuario nuevouser, pues ejecutamos en la consola el siguiente comando:
adduser nuevouser
Para el nuevo usuario te pedirá una contraseña y algunos datos más que podrás responder fácilmente.
Para finalizar desde el usuario root crearemos el directorio para luego copiar las claves que generemos y cambiamos los permisos. En la consola escribiríamos:
mkdir /home/nuevouser/.ssh chmod 700 /home/nuevouser/.ssh
Con esto ya tendríamos listo el nuevo usuario y saldríamos del servidor para generar las claves y copiarlas.
Crear claves RSA
Cuando accedes por SSH lo que menos te apetece es recordar la clave, o buscarla donde la has apuntado, por lo tanto vamos a genera un par de claves RSA, y así no hará falta que nos acordemos de la clave, eso sí, accederemos con nuestro usuario recién creado.
De esta manera aumentamos la seguridad restringiendo el acceso por SSH al usuario root, y luego dentro del servidor podremos cambiarnos a root para las tareas que necesitemos. Sin esta clave privada RSA nadie podrá acceder a nuestro servidor y la seguridad será máxima. Recuerda que este fichero se guarda en tu ordenador.
Así que desde la consola de tu ordenador en linux ejecuta el siguiente comando:
ssh-keygen -b 4096 -t rsa
Nos aparecerá la pregunta de si queremos una passphrase, y para nosotros lo más sencillo será decirle que no. Si queremos que tenga passphrase, te recomiendo usar el nombre del host+key (por ejemplo si tu máquina se llama “Orion”, tu clave se podría llarma OrionKey). Si le pones passphrase entonces perderás el acceso autómatico que te permite este sistema.
Con este comando crearemos en el directorio .ssh (directorio oculto que está en la home de nuestro usuario), un par de ficheros que tendrán los nombres id_rsa e id_rsa.pub. El fichero id_rsa.pub es el que vamos a copiar al servidor.
NOTA: Si van a acceder varias personas a tu servidor, es recomendable crear una clave por cada usuario que acceda.
Para copiar el fichero creado ejecutamos en la consola de nuestro ordenador el siguiente comando (si estas en la home de tu usuario):
scp .ssh/id_rsa.pub root@1.2.3.4:/home/nuevouser/.ssh
Como anteriormente tendrás que cambiar la contraseña 1.2.3.4 por la IP que tengas en tu servidor, y nuevouser por el nombre de usuario que hayas elegido. En este caso te pedirá la contraseña de root (la que has recibido por correo) y copiará el fichero que has creado al directorio /home/nuevouser/.ssh.
El siguiente paso es cambiar el nombre al richero que hemos creado cambiar los permisos del archivo y cambiar el propietario al archivo. Para esto tendremos que acceder a nuestro servidor como root y ejecutar los siguientes comandos:
cat /home/nuevouser/.ssh/id_rsa.pub >> /home/nuevouser/.ssh/authorized_keys chmod 644 /home/nuevouser/.ssh/authorized_keys chown nuevouser:nuevouser /home/nuevouser -R
Una vez que tenemos esto hecho, podemos salir del servidor y acceder usando el nuevouser y sin meter la contraseña (teniendo en cuenta que solo podrás acceder que tenga el fichero id_rsa que acabamos de generar, para acceder desde otro dispositivo tendremos que copiar este fichero).
Antes de salir del servidor vamos a configurar los parámetros de configuración de SSH, para prohibir el acceso root y exigir que solo quien tenga la clave privada que corresponda a una de las claves públicas que hayamos generado en el servidor.
La configuración de SSH está en el fichero sshd_config y lo editaremos con el siguiente comando:
nano /etc/ssh/sshd_config
Aquí nos aparecerán una serie de opciones que tendremos que cambiar:
- Port: 24245. Cambiarías las conexiones por defecto del acceso SSH, así evitarías que bots automáticos vayan directamente a este puerto a probar accesos.
- PermitRootLogin: no. De esta manera no aceptaremos accesos de root aunque tenga la contraseña o la clave criptográfica RSA y así nos protegeremos de ataques de fuerza bruta a este usuario que siempre existirá en nuestro servidor.
- PermitEmptyPasswords: no. Aunque ya viene por defecto así, nos aseguramos de que está así ya que es una medida de seguridad importante.
- LoginGraceTime: 30. Con esta opción estableceremos el tiempo necesario para que se pueda introducir la contraseña, así evitaremos que el atacante tenga que “pensar mucho”.
- MaxAuthTries: 3. Este será el número de intentos que vamos a permitir para introducir una contraseña antes de que nos desconecte el servidor.
- MaxStartups: 3. Esta opción nos permite definir el número de logins simultáneos desde una IP, así nuestro atacante no podrá utilizar la fuerza bruta con varias sesiones a la vez.
- AllowUsers: esta opción nos permitirá crear una lista blanca de usuarios que pueden acceder por ssh. Así podremos permitir solo a unos pocos usuarios que puedan acceder a nuestro servidor y evitaremos cualquier conexión de otros usuarios que no estén en el listado.
- DenyUsers: Aunque parezca que una vez que hemos configurado el apartado anterior, este simplemente nos sirve para hacer un bloqueo a cualquier conexión que intente hacerse con algún usuario de esta lista. Si no tenemos configurado AllowUsers, a esta lista no permitirá conectarse y al resto si.
- AllowGroups/DenyUsers: lo mismo que las opciones anteriores, pero en lugar de que sean usuarios tendremos una lista blanca/negra para los grupos de usuarios.
Una vez que hemos escrito la configuración en el archivo de ssh, guardamos con Ctrl+O ENTER y luego salimos con Ctrl+X. Con esto ya tendremos una protección razonable frente a hacker de medio pelo que con programas automáticos intentan entrar en nuestro servidor.
Antes de cerrar la sesión que tenemos abierta en nuestro servidor vamos a verificar que todo está correcto y que podemos conectarnos sin problemas. Así que abrimos otra terminal y en la de nuestro servidor escribimos lo siguiente:
service ssh restart
Y en la otra terminal que hemos abierto tratamos de ver si podemos acceder sin problemas y sin que nos pida la contraseña:
ssh nuevousuario@1.2.3.4
Con esto deberías acceder a tu servidor sin necesidad de usar contraseña, y con la clave privada que hemos generada. Recuerda que a partir de ahora, ya sea porque instalas de nuevo, o la razón que sea, es vital que guardes una copia de tu directorio y de todas las claves que hayas generado y se las hayas pasado a otros usuarios. Si pierdes estas claves, perderás el acceso al servidor y tendrás que reinstalar todo de nuevo.
Conclusión
Con todos estos pasos ya tendríamos preparado nuestro servidor para acceder a el sin necesidad de password y con el añadido de cierta seguridad de cara a posibles atacantes.
He probado estos mismos pasos en un servidor con debian 8.0, y en el proceso algo no ha salido bien.
Mis propios manuales me gusta probarlos en mis carnes, y al realizar todos los pasos el servidor no coge la clave, y solo puedo conectarme por usuario y clave, obteniendo el siguiente mensaje:
sign_and_send_pubkey: signing failed: agent refused operation
Probablemente algún detalle se me haya escapado, pero después de buscar por internet no he conseguido encontrar la solución.
Espero que a ti te funcione y nos vemos en el siguiente manual.
Deja un comentario