sábado, 10 de enero de 2015

Cómo configurar tu propio VPS desde cero

Este post describe los pasos sencillos para tener funcionando un servidor privado virtual completo (ssh, web, ftp, base de datos, email...) que posteriormente podremos gestionar usando ispconfig. Lo primero que hay que hacer es elegir un proveedor para el servidor vps. Hay muchos para elegir, entre los cuales, destaco los siguientes:
En mi caso, he escogido digitalocean.com. Si quieres ver más alternativas, aquí tienes un buen listado: http://www.comparevps.com

Para saber si has hecho una buena elección, una vez tengas tu servidor, siguiendo este tutorial podrás ejecutar un benchmark para comprobar el rendimiento del mismo: http://blog.diacode.com/testeando-el-rendimiento-de-tu-aplicacion-con-apache-bench. Si buscas en internet podrás encontrar benchmarks de distintos proveedores realizados por los usuarios.

A parte del servidor, necesitarás al menos un dominio. También hay muchos proveedores. Yo he elegido http://www.dondominio.com porque ofrece whois privado de forma gratuita.

A la hora de crear el vps, es recomendable asignar un FQDN como hostname (por ej: si tu dominio es midominio.com, puedes usar como hostname server1.midominio.com). Una vez contratado el servidor vps, nos habrán proporcionado la contraseña del usuario root para acceder por ssh. Así que empezamos:
  1. Lo primero que haremos será aplicar distintas medidas de seguridad, como cambiar el password de root, restringir su acceso por ssh, crear un usuario en el sistema y cambiar el puerto de ssh para evitar ataques: https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-12-04
  2. Ahora instalaremos ISPConfig (junto con el servidor web, base de datos, ftp, correo, etc...) siguiendo el tutorial indicado (según nuestra distribución): http://www.ispconfig.org/page/en/documentation.html
  3. Si tu servidor tiene poca memoria RAM (1GB o menos) podría interesarte desactivar ClamAV (aunque esto no es aconsejable, es preferible que aumentes la RAM): http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-disable-spamfilter-and-antivirus-functions-in-ispconfig-3. Cada vez que actualices ISPConfig tendrás que volver a hacerlo, ya que la actualización re-configura los servicios.
  4. Como medida de seguridad, vamos a proteger el directorio de phpmyadmin contra posibles ataques: http://www.howtoforge.com/protect-phpmyadmin-on-an-ispconfig-3-server-debian
  5. Otra medida de seguridad es desactivar el listado de directorios en apache. En Debian, basta con ejecutar como root: a2dismod autoindex y reiniciar apache.
  6. Ahora entramos a ispconfig, y accedemos al apartado System -> Interface -> Main Config. Modificamos la dirección de phpmyadmin con la nueva (si la hemos cambiado). En este apartado podemos ver los prefijos que se añadirán a cuentas FTP, bases de datos, etc...
  7. Accedemos a "clientes" y creamos uno nuevo (al menos uno para nosotros mismos). Ha de haber al menos uno para que al añadir, por ejemplo, cuentas FTP, no nos añada "default" como prefijo, sino que añada el nombre de usuario del cliente. Si no vamos a tener diferentes clientes podemos vaciar los campos "prefix" de la sección System -> Interface -> Main Config para que no nos añada prefijos según el cliente. Pero usando prefijos, y un cliente, estará todo más organizado y preparado para si tenemos clientes en un futuro.
  8. Seguidamente vamos a configurar las DNS para que nuestro dominio "apunte" a nuestro servidor vps (Si necesitas aprender conceptos básicos sobre DNS, este es un buen tutorial: https://www.digitalocean.com/community/tutorials/an-introduction-to-dns-terminology-components-and-concepts, y aquí otro https://support.google.com/a/answer/48090?hl=es). Aquí, entre otras cosas, podemos encontrar otro buen tutorial sobre DNS: http://www.cymru1.net/linux-vps/vps-hints-and-tips.php. Y aquí puedes comprobar tu configuración: http://www.intodns.com. Aquí tienes más formas de comprobar tus DNS: https://www.digitalocean.com/community/tutorials/dns-tips-and-tricks.

    Tenemos dos opciones:

    1. Si queremos usar nuestro proveedor de VPS como nameserver:
    Si has elegido DigitalOcean, en este caso tenemos que entrar a dondominio.com y añadir como nameservers de nuestro dominio ns1.digitalocean.com, ns2.digitalocean.com y ns3.digitalocean.com. Así que ahora DigitalOcean será el encargado de resolver las DNS. Así que ahora tenemos que acceder a nuestro panel de digitalocean.com y añadir el dominio y los registros correspondientes en la configuración DNS. Más info en: https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean.
    Si has elegido Hetzner, has de usar "DNS Robot": http://wiki.hetzner.de/index.php/DNS_Robot/en

    2. Si queremos usar nuestro propio servidor:
    Tenemos que entrar a dondominio.com y añadir nuestro servidor vps como nameserver. Sería algo como ns1.midominio.com y ns2.midominio.com. Si el mismo dominio del nameserver es el que estamos registrando (midominio.com) entonces tenemos que crear "glue records" para asociar ns1.midominio.com y ns2.midominio.com a nuestro servidor.
    Una vez introducidos los nameservers, el servidor DNS de nuestro VPS (BIND) será el encargado de resolver las DNS, y podemos gestionar la configuración desde ISPConfig. Más info en: http://www.howtoforge.com/how-to-run-your-own-name-server-with-ispconfig-3-and-fast-hosts.
  9. Puedes usar estos scripts para hacer copias de seguridad de directorios y bases de datos MySQL: http://sviudes.blogspot.com.es/2014/07/scripts-para-crear-y-subir-backups-de.html. Y luego puedes usar Cron para programar la ejecución automática de dichos scripts (https://help.ubuntu.com/community/CronHowto). Cron nos enviará un correo con el resultado del script. Si queremos que el correo nos llegue a nuestro e-mail en lugar de a /var/mail: http://blog.bobbyallen.me/2013/02/03/how-to-redirect-local-root-mail-to-an-external-email-address-on-linux/
  10. Si necesitas un servidor VPN, PPTPD es muy sencillo de configurar y consume pocos recursos: https://www.digitalocean.com/community/tutorials/how-to-setup-your-own-vpn-with-pptp. Una vez conectado a tu servidor por VPN, puedes, por ejemplo, conectar a tu servidor SQL usando MySQL Workbench. Antes debes haber asignado permisos de acceso para tu ip ejecutando estas SQL:
    CREATE USER 'root'@'10.0.0.0/255.255.255.0' IDENTIFIED BY 'TU_PASSWORD';
    GRANT ALL ON *.* TO 'root'@'10.0.0.0/255.255.255.0';
    
Cuando creas un nuevo sitio web con ISPConfig, verás que crea varias carpetas para dicho sitio. Aquí puedes encontrar una breve descripción de para qué deberías usarlas: http://www.lapsum.com/hosting/dudas/donde-debo-subir-mis-archivos

Si después de tener todo el sistema instalado decides cambiar el hostname, aquí tienes cómo hacer: https://wiki.debian.org/HowTo/ChangeHostname

2 comentarios:

  1. Hola
    estoy tratando de hacer funcionar tu App para firmar un XML en xades
    pero esta parte no funciona

    private Document LoadXML(string path)
    02.{
    03. DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    04. dbf.setNamespaceAware(true);
    05. return dbf.newDocumentBuilder().parse(new BufferedInputStream(new FileInputStream(path)));
    06.}
    esto usando .NET 2010 c#

    si mepuedes ayuda para generar el certificado , muchas gracias

    ResponderEliminar
  2. Gracias por explicar, aquí me gustaría recomendar una herramienta para la propagación de DNS https://dnschecker.org/ , que proporciona más de 300 servidores DNS para buscar. Es posible que desee probarlo.

    ResponderEliminar