DO 101: Configuración inicial de VPS con Arch Linux

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.

Anuncios

DO 101: Introducción a DigitalOcean

En los últimos días he estado probando un servicio relativamente nuevo en el mundo de los VPS (servidores privados virtuales). DigitalOcean, me atrajo inicialmente por su precio y al día de hoy no me arrepiento de haber empezado a usarlo. Crear un VPS aquí, es realmente fácil y toma muy poco tiempo. Y no es para menos, dejar funcionando un servidor que tenga Apache, Maria DB, PHP toma unos pocos minutos. Puede colaborar conmigo registrándose a través de este enlace: DigitalOcean.

Portada de DigitalOcean

Portada de DigitalOcean

Primero solo hay que registrarse, con un correo electrónico y una contraseña basta. Una vez iniciada la sesión, podremos crear nuestro primer VPS, que de ahora en adelante llamaremos droplet. Los droplets no son más que sistemas operativos virtualizados, en el caso de DigitalOcean utilizando KVM.

Panel para creación de droplets

Panel para creación de droplets

Le damos un nombre a nuestro droplet, seleccionamos el plan que utilizaremos, la región del datacenter, la imagen de la distro a utilizar (en mi caso Arch Linux para sentirme como en casa). Dejamos la opción VirtIO activada.

Una vez creado nuestro primer droplet, veremos algo así y nos será enviada por correo electrónico nuestra clave de usuario root. Por supuesto que lo más recomendable es cambiar esta contraseña una vez iniciada sesión por primera vez.

Panel de control de DigitalOcean

Panel de control de DigitalOcean

Ahora podemos explorar un poco sus opciones. Entre las opciones podremos reiniciar y apagar el droplet, cambiar la contraseña del usuario root, cambiar el tamaño del droplet, generar snapshots y backups, cambiar el kernel y eliminar por completo el droplet.

Controles del droplet

Controles del droplet

Los snapshots permiten guardar por decirlo así la configuración del servidor y permiten crear un nuevo droplet con la misma configuración, esto permite ahorrar tiempo valioso al momento de crear otro droplet. Los backups, pueden ser configurados para que cada “x” tiempo hagan un respaldo de todo el servidor, estos tienen un costo adicional del 20% del plan actual. Los snapshots son gratis. Para generar un snapshot es necesario apagar el droplet, pero para generar un backup no es necesario apagarlo.

Por último, para conectarse al servidor utilizaremos SSH con el usuario root, la ip que fue asignada a nuestro droplet y la contraseña que nos fue enviada al correo:

$ ssh root@192.168.1.1

Por último para cambiar la clave por una de nuestra elección, escribimos el comando passwd.

# passwd
Changing password for root.
Enter new UNIX password:

Eso es todo por hoy, pronto vendrán más tutoriales para poner a punto nuestros droplets. Puede colaborar conmigo registrándose a través de este enlace: DigitalOcean.