Site icon Mi blog personal

Crea tu propio Reverse Proxy para ocultar la IP del servidor final

De cara al publico una IP de Rusia (un VPS ruso por ejemplo en veesp.com) y a solo nuestro conocimiento, un servidor en los Estados Unidos.

¿En que los beneficia esto? Para quienes tienen sitios web de series, películas, anime, porno o por el simple hecho de evitar que su competencia conozca donde se aloja realmente (a saber que fines) y tener que por el motivo que sea migrar cada cierto tiempo su data, sirve mucho para portales que reciben ataques y luego tienes que verte obligado a migrar la data de forma recurrente pues con esto solamente montas un proxy y cambias la IP más nunca tocas la data (y si eres pirata con un sitio web del tipo warez… las reclamaciones no llegan al destino final, solo a la empresa offshore el cual los ignora) ¿Impresionante no?

De manera obvia no faltara el que diga que siempre hay formas de conseguir la IP pero este método de por si ya se lo dificulta a una población muy grande (igual, no me ha tocado ver esos casos, solo personas hablando de que se puede) sin mas palabreo, vamos al caso.

1) Voy y compro mi servidor (se debe hacer en un servidor que este en blanco)

2) Le ponemos un hostname (nombre de la maquina) y llenamos datos (Ojos, Seleccionamos CentOS 7 x64 como distribución de linux)

3) Después de poner la orden y pagar, nos entregaran el VPS como en 5-10 minutos

4) Ahora bien, con los datos que recibimos por correo electrónico, entramos al VPS por SSH y lanzamos una instalación de VestaCP

Normalmente el puerto SSH en Veesp por defecto es el 22 pero en otras empresas esto podría variar salvo que lo cambies a tu manera.

yum upgrade -y; yum install -y wget curl curl-devel nano perl perl-core epel-release; curl -O http://vestacp.com/pub/vst-install.sh; yes | bash vst-install.sh --nginx yes --apache yes --phpfpm no --named yes --remi yes --vsftpd no --proftpd no --iptables no --fail2ban no --quota no --exim no --dovecot no --spamassassin no --clamav no --softaculous no --mysql no --postgresql no --hostname server.hostname.tld --email tucorreo@gmail.com --port 8083 --password Cambiame01@#$

Tomará al menos 10 minutos (o menos) en instalarse en VestaCP y no pasara de 20 minutos en proveedores con conexión a internet deprecated.

Ojos con el hostname, correo y contraseña puesto en la línea de comando, ademas tener en cuenta que la contraseña root del VPS es diferente a la del admin.

(Es posible que se tarde un rato)

Le vamos a poner “y” seguido enter y finalmente esperamos a que termine todo ese proceso automatizado…

5) Una vez instalado tendremos un 50% del trabajo realizado, lo próximo que vamos a realizar sera mover las plantillas que trae VestaCP por defecto y cargar únicamente el código con el cual vamos a trabajar. Vesta únicamente nos servirá como un control panel para agregar y borrar los dominios, activar SSL con Let’s Encrypt o instalar uno propio sin tener que estar modificando código por consola ni escalar a mayores.

Si tienes conocimientos como para realizar esto sin un control panel pues adelante con ello, pero esto fue realizado para quienes no quieren luchar con ello  (O facilitarle a las personas la existencia xD) en mi caso yo tengo la experiencia y quiero facilitarles las cosas a todos ustedes.

6) Vamos a pegar el siguiente código (y modificar lo que dice IPDESTINOFINALAQUI por la IP del servidor que tenemos en Estados Unidos, por ejemplo)

– Creamos la plantilla default.stpl, la podemos crear de la siguiente forma:
nano /usr/local/vesta/data/templates/web/nginx/default.stpl;

y luego insertamos lo siguiente… (nota con poner la IP del servidor o hosting en IPDESTINOFINALAQUI como destino/hacia)

server {
    listen      *:%proxy_ssl_port% ssl;
    server_name %domain_idn% %alias_idn%;
    ssl_certificate      %ssl_pem%;
    ssl_certificate_key  %ssl_key%;
    error_log  /var/log/httpd/domains/%domain%.error.log error;

    location / {
        proxy_pass      https://IPDESTINOFINALAQUI:443;
        location ~* ^.+\.(%proxy_extentions%)$ {
            root           %sdocroot%;
            access_log     /var/log/httpd/domains/%domain%.log combined;
            access_log     /var/log/httpd/domains/%domain%.bytes bytes;
            expires        max;
            try_files      $uri @fallback;
        }
    }

    location @fallback {
        proxy_pass      https://IPDESTINOFINALAQUI:443;
    }

    include %home%/%user%/conf/web/snginx.%domain%.conf*;
}

– Hacemos lo mismo con default.tpl, la podemos crear de la siguiente forma:
nano /usr/local/vesta/data/templates/web/nginx/default.tpl;

server {
    listen      *:%proxy_port%;
    server_name %domain_idn% %alias_idn%;
    error_log  /var/log/httpd/domains/%domain%.error.log error;

    location / {
        proxy_pass      http://IPDESTINOFINALAQUI:80;
        location ~* ^.+\.(%proxy_extentions%)$ {
            root           %docroot%;
            access_log     /var/log/httpd/domains/%domain%.log combined;
            access_log     /var/log/httpd/domains/%domain%.bytes bytes;
            expires        max;
            try_files      $uri @fallback;
        }
    }

    location @fallback {
        proxy_pass      http://IPDESTINOFINALAQUI:80;
    }

    include %home%/%user%/conf/web/nginx.%domain%.conf*;
}

– Recuerda guardar los cambios, en nano los cambios se guardan CTRL + O (luego enter) y para salir CTRL + X…

7) Hecho esto, hemos concluido con el trabajo pesado… Todo lo que tenemos que hacer ahora es poner la IP de nuestro Proxy Reverso en lista blanca (si la IP que estamos poniendo es de un hosting compartido, debemos pedir al hosting que lo haga para evitar baneos de IP por desconocimiento de su plataforma de seguridad)

Me ha tocado enviar tickets a Banahosting para hacer exclusiones por ejemplo en Bitninja que suele expulsar mucho las IP’s de nuestros Proxy’s.

(ojos, esto en caso de estar alojado en un hosting compartido pues se manda un ticket)

8) Una vez la IP este en lista blanca en nuestro firewall o bien que la empresa de hosting nos comente que hizo la exclusión, pasamos a borrar el dominio de pruebas que genero VestaCP al momento de la instalación y finalmente creamos el que vamos a pasar por Proxy.

– Entramos al VestaCP el cual viene siendo IPDELPROXY:8083 con https, omitimos el Certificado SSL inseguro y le damos a Log In.

– Nos dirigimos hacia “Web” para ver el listado de dominios existentes…

– Borramos esto y agregamos el nuestro pulsando el botón verde (+) para agregar el nuestro.

– Ponemos nuestro dominio, lo agregamos 

– Y listo, este es el mensaje que nos confirmara del buen trabajo que hemos realizado 

9) Finalmente… Vamos a Cloudflare o nuestro Administrador DNS, luego cambiamos la IP del servidor en Estados Unidos por la del Proxy.

– Se modifica el @ (el registro A del domain.tld y el www en caso de que sea un Record A y no un CNAME)

10) Concluimos activando el Certificado SSL y comprobando los resultados…

RESULTADO:

Cualquier duda, corrección, inquietud, pregunta, aporte o sugerencia se agradece…

Exit mobile version