Noticia VPS: Cómo ponerlo en funcionamiento. Tips fundamentales



Aquí en DesdeLinux se ha hablado ya bastante sobre el tema de los VPS, y el amigo KZKG^Gaara ha puesto uno que otro tutorial bastante interesante sobre servidores: Desde jaulas de SSH hasta port knocking. Todos estos tutoriales están geniales y qué mejor que tener un entorno de pruebas REAL para probarlos ¿no? es por esto que he decidido escribir una rápida guía sobre VPS Bootstraping.

¿Qué es un VPS?


Primero y antes que nada debemos definir esta “variable”. Bueno, un VPS es un Servidor Privado Virtual, básicamente es Infraestructura como Servicio (IaaS) que le rentas a una compañía o en palabras más simples, un servidor (computadora accesible desde Internet para fines variados) que alguien te presta y/o facilita mientras le pagues una cuota cada cierto tiempo, esta infraestructura es cuidada y mantenida en las instalaciones (datacenters) de la empresa y tu la puedes administrar de manera remota vía SSH y/o VNC por ejemplo.

¿Porqué querrías tener un VPS?




Si necesitas tener un servidor para lo que sea (hospedar un sitio web, usar una computadora remota a través de VNC, o bien hacer pruebas isoladas de software y configuraciones entre otras cosas) un VPS (Linux) es y siempre será tu mejor opción, sobretodo si eres Linuxero y has manejado antes alguna distro a través de la línea de comandos.

A diferencia de un “hosting” que está muy capado en todos los sentidos (tanto de acceso como de capacidades) un VPS es potente, te da la libertad que quieras y no se mete en tus asuntos, además de que tiene más durabilidad y escalabilidad a largo plazo al ser “una computadora” básicamente que puede agrandar en capacidades con un sólo click.

En un artículo pasado KZKG^Gaara menciona que una de las variables a considerar para saber si ocupas un Hosting, un VPS o un Servidor dedicado son los hits únicos que recibe tu sitio web, y es una métrica bastante adecuada… Sin embargo, mi consejo personal es SIEMPRE irse a por un VPS a menos que puedas montar (y realmente mantener) un servidor dedicado al 100%, no se aventuren con los hostings que “nomás no escalan” y de todos modos les van a costar dinero.Vale mejor jugar a la segura.

Ahora bien, si comparamos los VPS con los servidores dedicados, aún en esta parte yo apostaría por un VPS (o un mix de VPS + Dedicados, como lo que tengo acá montado para Xenode Systems) ya que un VPS te quita de encima todo tipo de costos tanto económicos como podrían ser los gastos en electricidad y/o internet y también los de manpower que serían los referentes a tener que estar manteniendo “el fierro” (hardware) y todo lo que éste conlleve diariamente (optimizaciones, cambios de piezas, implementaciones de seguridad y planes de contingencia etc) para tener tus sitios arriba, cosa que puede ser un tedio si no estás acostumbrad@ a ello.

Todo eso se resume a que por algo así como $20 USD mensuales (hablando de un paquete “medianito”) puedas rentar una máquina con las siguientes características:

  • 2GB RAM
  • 40GB SSD
  • Procesador Dual Core
  • 3TB de transferencia en banda ancha
  • ~1Gbps de conexión a internet simétrica

Entre otras cosas sin tener que preocuparte de la factura eléctrica, los achaques de la manutención (como el tener que cambiar una pieza si se quema en un pico de voltaje) o el costo de la conexión a Internet como tal. Cabe destacar que existen planes de VPS desde $5 USD al mes también (y como veremos más adelante, barato no significa “pequeño” per sé).

Encontrar al mejor proveedor




Hay varios proveedores de VPS en el mundo, de los más conocidos están Amazon Web Services (AWS), DigitalOcean y Linode. Pero fuera de los “pesos pesados” la realidad es que hay decenas de ellos, todos con diferentes características y prestaciones. (DesdeLinux por ejemplo usa uno que se llama GNUTransfer).

Yo personalmente he usado AWS y DigitalOcean, de los demás sólo conozco sus prestaciones y precios (aunque no los he usado directamente). Sin embargo les puedo decir que el mejor de todos (al menos para mi) es DigitalOcean, ya que sus VPS funcionan únicamente con SSD’s, son súper baratos, la interfaz de usuario (dashboard) es súper cómoda de manejar (además de sencilla pero potente) y presentan varias cosas interesantes (como máquinas súper potentes a excelentes precios para empezar) que explico a fondo en este artículo dentro de mi blog personal.

1) Lanzar tu primer VPS




Para esta parte del tutorial, vamos a necesitar crearnos una nueva cuenta en DigitalOcean. Como todos los servicios de VPS éste tiene un costo, pero gracias a unos cupones que les traigo (mismos que estarán válidos durante todo Mayo 2014) pueden obtener Gratis $10 – $65 USD y en caso de que expirasen para cuando lleguen a este artículo, les dejaré una página donde diariamente ponen otros cupones disponibles de manera que todos los que sigan este tutorial tengan saldo gratis en sus cuentas de DigitalOcean sin importar la fecha en la que estén leyendo esto, veamos entonces:

NOTA: Entra a DigitalOcean y haz click en Crear Cuenta y rellena tus datos para crear tu nueva cuenta, cuando se te pida el “cupón de promoción” utiliza los que verás a continuación según la oferta que quieras.

Primera Opción ($65 USD Gratis):

  • CHEFCONF (Expira 31/05/2014)

Segunda Opción ($10 USD Gratis):

  • SSDMAY10 (Expira 31/05/2014)

Tercera Opción (Cupones Diarios):


Suponiendo que utilicen el código de $10 USD, dicho saldo será abonado en su cuenta para poder lanzar su primer VPS en DigitalOcean, pueden elegir entre un VPS de $5 USD al mes (2 meses gratis con el cupón) con las siguientes características:

  • 512MB RAM/ 1 CPU
  • 20GB SSD DISK
  • 1TB TRANSFER

O bien, 1 mes gratis de un VPS ($10 USD/mo) con las siguientes características:

  • 1GB RAM / 1 CPU
  • 30GB SSD DISK
  • 2TB TRANSFER

…Y pues si les toca activar su cuenta con el de $65 USD obviamente pueden montar lo que quieran…

La ventaja de DigitalOcean es que no sólo acepta pagos con tarjeta de crédito y/o Paypal para mantener tus “droplets” activos, sino que también provee estos cupones/sistema de referidos que puedes usar para alimentar con un tanto de saldo a tu cuenta de manera gratuita (cuestión bastante útil considerando la situación económica actual).

Por otro lado, no es que los VPS cuesten en sí eso que se muestra ahí en la lista al mes (cuestan menos generalmente), los precios de lista se basan en el límite normal establecido, si por alguna razón tu VPS no llegase a consumir lo que cuesta su límite en USD al mes, dicho saldo a favor se queda en tu cuenta para futuros cobros (cosa que tiende a pasar).

Una vez activada nuestra cuenta (y con el saldo de regalo) lo que tenemos que hacer es generar nuestro primer “droplet” y/o VPS desde la interfaz de administración de DigitalOcean, cosa que es bastante sencilla: Rellenamos el nombre del Hostname, elegimos cuál plan de VPS queremos, en qué región lo queremos, qué distro/imagen va a usar y listo.

NOTA: En mi caso, yo elegí Ubuntu 14.04 de 32 bits limpio como distro y será la que use en mis ejemplos.



Una vez creado el droplet, los de DigitalOcean nos enviarán el login de root por e-mail al correo que hayamos elegido para abrir nuestra cuenta, tomamos nota de la contraseña y proseguimos.

2) Cambiar contraseña de Root


Tener la contraseña de root de un VPS en el correo electrónico no es buena idea, por lo tanto una vez creado nuestro droplet nos iremos a la pestaña de Access>Console Access, misma que nos dará acceso a una Terminal VNC del droplet para trabajar directamente con el sistema sin necesidad (aún) de conectarnos remotamente vía SSH:



Estando en la consola como root, simplemente corremos el siguiente comando:

sudo passwd

Escribimos nuestro nuevo password para root y listo.

3) Crear un nuevo usuario estándar


Ahora necesitamos crear un nuevo usuario estándar (sin privilegios administrativos) que sea el que pueda accesar por SSH al VPS, esto por cuestiones de seguridad. Crear un nuevo usuario es tan sencillo como correr (como root en la terminal VNC del VPS):

adduser usuario

Reemplazando la palabra usuario por el nombre de usuario que queramos manejar. Este comando nos pedirá entrar una nueva contraseña para dicho usuario y sus datos (tales como nombre, teléfono etc). Rellenamos todo y ya estamos listos para proseguir.

4) Tweaks de SSH


Ahora tenemos que configurar el acceso SSH de nuestro VPS, yo lo que siempre hago es lo siguiente:

  • Cambiar el puerto 22 por otro
  • Evitar el SSH Login a Root
  • Configurar el acceso sólo con llaves RSA y no passwords

Esto se hace cambiando algunos settings en el archivo /etc/ssh/sshd_config de nuestro VPS con el comando (como root):

sudo nano /etc/ssh/sshd_config

Y lo que queremos hacer en él es:

  • Cambiar la variable Port de 22 a algo de nuestra elección (y alto) como 8866
  • Cambiar la variable PermitRootLogin a no
  • Añadir la variable AllowUsers user (Reemplazando user por el nombre del usuario que creamos hace rato)
  • Descomentar la variable PasswordAuthentication yes

Guardamos nuestros cambios en dicho archivo con Ctrl+O, ENTER y luego salimos con Ctrl+X. En un momento les daré un ejemplo de cómo queda dicho archivo (ya que nos falta un cambio).

5) Firewall


Ahora (siguiendo como root en consola) correremos los siguientes comandos:

sudo ufw reset
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 8866/tcp

Esto lo que hace es:

  1. Resetea el firewall (borrando reglas existentes del proveedor)
  2. Lo vuelve a encender
  3. Bloquea las conexiones entrantes
  4. Acepta las conexiones salientes
  5. Nos habilita el acceso entrante a través del puerto 8866 TCP (el que configuramos para nuestro SSH en el paso previo)

Recuerda desbloquear todos los puertos que vayas a ocupar en tu VPS, ya sean el 80/tcp (HTTP) el 21/tcp (FTP) u otros (pueden ser UDP obviamente también); Bajo este setup todos quedan bloqueados a entrada excepto los que tu le digas al firewall explícitamente que desbloquee para tí. Puedes checar los puertos abiertos con sudo ufw status cuando quieras.

6) Configurar acceso RSA


Para configurar el acceso RSA, (usando llaves SSH en lugar de contraseñas para entrar al VPS remotamente) ocupamos primero dentro del VPS correr los siguientes comandos:

sudo mkdir /home/usuario/.ssh
sudo touch /home/usuario/.ssh/authorized_keys
sudo touch /home/usuario/.ssh/known_hosts
sudo chown -R usuario:usuario /home/usuario/.ssh

(Reemplazando la palabra usuario en los comandos por el nombre de usuario que elegimos hace rato). Ahora necesitamos reiniciar nuestro VPS con sudo reboot para que las nuevas reglas del Firewall y de SSHD tomen efecto y mientras, en nuestra máquina cliente (desde donde queramos conectarnos al VPS vía SSH) crearemos un par de claves para usar como ID con los siguientes comandos (como tu usuario normal):

mkdir ~/.ssh
cd ~/.ssh
ssh-keygen -t rsa

El tercer comando nos hará una serie de preguntas como el nombre de la clave y si queremos que tenga alguna passphrase, mi recomendación es usar el nombre del host+key (por ejemplo si tu máquina se llama “Venus” tu clave idealmente se podría llamar venusKey) y por favor déjenlas sin passphrase (de otra manera pierde sentido la autenticación automática y segura sin contraseña que este método nos provee).

NOTA: Recomiendo generar un par de claves por cada cliente que vayas a utilizar para gestionar tu VPS vía SSH según el caso.

Acto seguido debemos copiar la clave pública generada al VPS con el siguiente comando (estando dentro de nuestro directorio “.ssh” todavía en nuestra terminal de la máquina cliente):

cat hostKey.pub | ssh user@my.vps.ip -p 8866 "cat >> ~/.ssh/authorized_keys"

Cambiando:

  • hostKey.pub por el nombre de tu clave
  • user por el nombre de usuario estándar que generamos en el VPS
  • my.vps.ip por la dirección IP de tu VPS (que encontrarás en la pestaña de “Droplets” en DigitalOcean)
  • El puerto SSH por el que le hayas configurado a tu VPS previamente

Este último comando nos va a mostrar una advertencia parecida a la siguiente (misma a la que responderemos con yes si es necesario) y luego nos dejará loguearnos al VPS remotamente con nuestro acceso y/o login:

The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.

Verificamos que la clave haya sido agregada con éxito (en el VPS):

cd ~/.ssh
cat authorized_keys

(El último comando debe mostrarnos la clave); Y procedemos a editar de nuevo nuestro archivo de configuración de ssh con:

su -
nano /etc/ssh/sshd_config

Para cambiar la variable PasswordAuthentication a no; Una vez hecho esto, reiniciamos el VPS una vez más con sudo reboot y en la máquina cliente que utilizaremos para acceder al VPS (donde generamos nuestro KeyPair) corremos los siguientes comandos (como usuario normal desde nuestra carpeta personal):

touch ~/.ssh/config
nano ~/.ssh/config

Y en el archivo vacío que nos saldrá para editar, pondremos lo siguiente:

host my.vps.ip
user usuario
Port 8866
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
CheckHostIP no
IdentityFile ~/.ssh/hostKey
ServerAliveInterval 120

Cambiando los datos en negrilla de manera acorde a nuestro caso. Nótese que la hostKey que estoy usando es la privada del cliente y no la pública. Guardamos los cambios y salimos…

Ahora hacemos (obviamente desde la máquina cliente) un:

ssh usuario@my.vps.ip

y ya nos debería dejar acceder sin contraseña usando nuestra clave privada como ID. Es importante recordar que a partir de ahora es VITAL guardar un backup de todos los directorios “.ssh” de tus clientes de gestión en algún lado, para evitar perder las claves y el archivo de configuración de c/u en algún “desastre informático”.

Finalicemos con una copia de mi archivo sshd_config ya “terminado” para que corroboren que hicieron bien sus cambios:


Extras




A) Google DNS: Seguridad y Velocidad


Cambiar los DNS de tu VPS por los de Google es algo importante que no solo lo protege de ciertos tipos de ataques sino que también puede ayudar en otros apartados como velocidad de respuesta y consumo de banda ancha. Afortunadamente aquí no hay nada que hacer ya que los VPS/Droplets de DigitalOcean ya vienen configurados para funcionar con dichos DNS en ipv4 e ipv6.

B) Cloudflare: Protección, Ahorros y Disponibilidad


Cloudflare es una plataforma de “optimización y protección” de servidores que más bien funciona a nivel dominio, pero es bastante útil porque entre las cosas que ofrece están la protección contra ataques DDoS en tiempo real, la reducción en el consumo de recursos por parte del VPS y también un sistema de mirroring que permite que tu contenido siga disponible aún si tu servidor llega a caerse entre otras cosas. Es un buen servicio y lo mejor es que incluso tienen un plan gratuito (es el que yo uso en mis dominios/VPS) que ofrece todo esto que les comento y otras cosas más.

C) Ksplice: Actualizaciones en vivo (no downtime)


Ksplice es un gestor de actualizaciones de seguridad que aplica dichas actualizaciones (como las referentes al kernel y derivadas) en vivo sin necesidad de reiniciar. Es interesante porque para empezar evita el downtime en nuestros VPS y por otro lado se enfoca únicamente a actualizaciones críticas, evitando que de pronto actualicemos todo el sistema comiéndonos valioso espacio en disco.

D) Zswap: Mayor eficiencia en gestión de RAM/SWAP


Zswap es un sistema de compresión de paginado que está disponible desde el Kernel 3.11 en todas las distros GNU/Linux allá afuera, pero no viene activado por defecto. Sin importar cuánta RAM tenga tu VPS es una buena idea habilitarlo.

E) ZSH: Un shell más completo


Z-Shell es un shell más completo que bash con un montón de goodies y/o comodidades añadidas, un buen aliado si manejas mucho el VPS por consola.

F) Ranger: Gestión de archivos cómoda desde terminal


Ranger es un gestor de archivos por consola, otra herramienta interesante que además viene a probar otro punto que me encanta de DigitalOcean, sus tutoriales online a modo de soporte (¡Tienen uno para todo!).

Y pues bueno, yo con esto me despido por ahora. Creo que no se me pasó nada de lo más importante y vital al momento de montar un VPS. A partir de aquí ya cada uno puede configurar su VPS como mejor le parezca para la función que desee, estando confiados en que se mantendrá funcional, eficiente y seguro.

P.D. ¿Llegaste hasta acá y sólo leíste el artículo? ¡Qué esperas!



La entrada VPS: Cómo ponerlo en funcionamiento. Tips fundamentales aparece primero en Desde Linux.


Vyl1--shKAo


Continúar leyendo...