En la entrada anterior, vimos como configurar un VPS en un SSD Cloud Server de una manera sencilla a través de DigitalOcean. Seleccionamos Arch Linux como distro para el VPS dada su facilidad de uso.
Como medida inicial, debemos cambiar la contraseña por defecto que nos envía DigitalOcean por correo electrónico, iniciamos sesión por nuestro cliente SSH desde Linux, Mac o desde PuTTY en Windows.
ssh root@192.168.1.1
Iniciamos sesión con la clave por defecto de DigitalOcean, se mostrará un mensaje parecido a este:
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established. ECDSA key fingerprint is 79:95:46:1a:ab:37:11:8e:86:54:36:38:bb:3c:fa:c0. Are you sure you want to continue connecting (yes/no)?
Escribimos yes o no dependiendo de si queremos guardar la huella digital de la clave utilizada. Ahora cambiamos como medida de seguridad la contraseña si no lo hemos hecho ya anteriormente:
passwd Changing password for root. Enter new UNIX password:
Ahora, es momento de configurar nuestro servidor con cuentas de usuario y cambiar la configuración de SSH para endurecer las medidas de seguridad y proteger nuestro servidor de ojos ajenos.
Para crear un usuario normal con su directorio dentro de /home, sin tantos privilegios y con una nueva contraseña hacemos lo siguiente:
useradd -m ejemplo passwd ejemplo
En lo personal no me gusta utilizar sudo, en su lugar prefiero iniciar sesión como usuario root a través de su, hacer lo que tenga que hacer y salir de la sesión de root y continuar mi uso como usuario normal. Dicen que cuentas claras mantienen la amistad, pues en este caso, cuentas y privilegios separados mantienen el servidor.
Configurar SSH
Es hora de asegurar nuestro servidor SSH, para ello abrimos el editor de texto de nuestra preferencia, ya sea vi o nano que son los que vienen instalados por defecto con el archivo sshd_config.
nano /etc/ssh/sshd_config
Buscamos la línea del protocolo y dejamos activada la versión 2 del protocolo SSH, ya que la versión 1 tiene ciertas vulnerabilidades que pueden ser explotadas.
Protocol 2
Desactivamos el login de usuario root, con esto solo podremos iniciar sesión con el usuario recién creado.
PermitRootLogin no
Algunas personas suelen cambiar el puerto por defecto de SSH, usando como argumento la seguridad por oscuridad, pero considero que esta práctica es un poco ineficaz ya que de todas maneras al lanzar un scan contra nuestro VPS encontrarán que corremos SSH.
La mejor manera de asegurar nuestro servidor SSH, en mi opinión personal, es a través de criptografía de llave pública con SSH keys.
Antes de cerrar la sesión de usuario root que estamos corriendo, reiniciamos nuestro servidor SSH
systemctl restart sshd
Abrimos otra terminal para verificar que todo está en orden y podemos proceder.
ssh ejemplo@192.168.1.1
Si nuestro prompt dice, una vez, iniciada sesión esto:
[ejemplo@servidor1 ~]
Sabremos que todo esta corriendo bien y podemos cerrar ahora si la sesión de root que teníamos abierta. Ahora para cambiar a usuario root solo será cuestión de iniciar el comando su.
SSH Keys
Desde Linux
Las SSH keys nos ahorran tener que teclear la clave en la terminal cada vez que nos logueamos al sistema. Una vez puesto en marcha nuestro servidor para que soporte las SSH Keys y desactivada la escritura de contraseñas, se volverá bastante seguro ya que solo podrá entrar quien tenga la llave privada. Razón por la cual debes cuidar esa llave privada como si tu vida dependiera de ello.
Para generar nuestro par de llaves (public key/private key), en una consola en cualquier distro GNU/Linux podemos crearla con el comando ssh-keygen.
ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ejemplo/.ssh/id_rsa): Enter passphrase (empty for no passphrase):
Podemos cambiar el nombre de la clave que estamos creando solo para recordar donde dejamos los archivos. Lo siguiente es enviar la public key al servidor donde nos queremos conectar. Nos movemos al directorio .ssh.
cd .ssh
copiamos la public key al servidor remoto
scp id_rsa.pub ejemplo@servidor1:~/.ssh/
Ahora nos conectamos al servidor remoto para configurar el acceso con SSH keys.
ssh ejemplo@servidor1
Cambiamos los permisos a 700 al directorio .ssh
chmod 700 .ssh
Creamos un archivo para guardar las keys que el servidor remoto vaya a aceptar y le damos permisos 600.
touch authorized_keys chmod 600 authorized_keys
Colocamos el contenido de nuestro public key en el authorized_keys:
cat id_rsa.pub >> authorized_keys
Finalmente, si dejas todo en su lugar con los nombres de archivo por defecto, te podrás conectar directamente con solo hacer:
ssh ejemplo@servidor1
De lo contrario, especificas el archivo donde guardaste la private key
ssh ejemplo@servidor1 -i .ssh/privatekey
Es posible que si creaste un passphrase durante la creación de las SSH keys, te lo pida para conectarte.
Eso es todo por ahora, para la siguiente entrada un tutorial para conectarse con SSH keys desde PuTTY. Por último te invito a crear un VPS en un SSD Cloud Server de una manera sencilla a través de DigitalOcean.