Tu proprio OpenVPN para 10 centimos por día usando EC2 de AWS

Aquí puedes ver los precios de Amazon’s EC2 en Irlanda. Nota que existe ahora, de recién un t2.nano lo qué es exactamente para cosas como VPNs y aplicaciones pequeñas.

El t2.nano cuesta $0.007/hora (USD, dinero del Estados Unidos) qué es exactamente €0.0064/hora (ahora 2016-01-24).

Imaginas qué necesitas un VPN y que vas a usarlo 16h por día (eso es si estas en el ordenador todo el día, cada día 😉 entonces el precio es €0.10/día!

Esto es completamente posible y más fácil que antes con el nuevo infrastructure lo que todo el mundo se refiere como “Cloud”.

Puedes desplegar la infraestructura (OpenVPN, el grupo de seguridad, y EC2 tipo t2.nano), crear un AMI (un imagen del VPN) y cada día crear uno de nuevo.

Cuando no necesitas puedes eliminarlo y cuando quieras otra vez se puede en segundos. La uniqua cosa que tienes que cambia es el IP en tu configuración local.

Aunque lo quieres funcionando 24 horas por día, 7 días por semana vas a tener tu proprio VPN, sin otros usarios, ¡para menos que €5/mes! Y eso es en AWS lo que tiene la reputación de estar carísimo!

Vale, allí es, puedes configurar OpenVPN (o lo qué quieres), crear un AMI, y despegarlo cuando quieras! Tiene más cosas buenas, una criticismo muy común de networks privados es qué no sabe qué hacen los dueños, ademas si el gobierno o un adversario quiere ver tu tráfico pueden asociar tu IP de la casa con el IP del VPN — eso nadie quiere y con AWS cada EC2 instancia tiene su proprio IP.

A lo mejor voy a poner un guía diciendo como hacerlo todo esto, pero no es tan difícil y cuando tengas perfectamente solo tienes que crear un AMI y despegarlo cada mañana!

Eliminar User-agents de tus logs con Nginx

Tuve un problema, con AWS el ELB continuamente “ping” a tus EC2 instancias para ver si estan funcionando. Todo bien aqui, pero no quiero esta mierda en mis logs (¿registros?)!
Por ejemplo, el access_log para Nginx contiene 28367 lineas, de esos 28073 son del ELB-HealthChecker/1.0 y no los quiero.

Así que para eliminarlos de tus logs completamente vas a necesitar una nueva versión de Nginx, hay algo distinto que nos requiere (el conditional en el access_log bloque de codigo).

El sintaxis es el siguiente (documentación): access_log path [format [buffer=size [flush=time]] [if=condition]];, ahora estas pensando que esto es muy fácil, solo hay que poner
access_log /var/log/nginx/my.access.log combined if=$http_user_agent !~ 'ELB-HealthChecker' y ya está, no?

No exactamente, pero cerca! El forma del if= requiere un booleano, es decir que si es un uno el registro estaría creado o si es un cero, no! Pero como haces eso?

Usando una característica se llama “map“, eso te deje crear un nuevo variable con el valor cero o uno, dependiente en lo que quieres. Para mi es el puto ELB-HealthChecker.
Solo puedes crear un map en el http sección de Nignx, así que probablemente en tu /etc/nginx/nginx.conf vas a tener que poner algo como:

  map $http_user_agent $is_not_elb {
    default 1;
    "ELB-HealthChecker*" 0;
  }

Y luego en el sitio de tu pagina solo tienes que cambiar el access_log para que dice la nueva “if”. El mío dice:
access_log /var/log/nginx/naytech.es.access.log combined if=$is_not_elb;

Y es muy fácil si quieres añadir más user agents, es solo una linea en el map.