Este tutorial le muestra cómo configurar su propio proxy web en Ubuntu 16.04. Un proxy web es un sitio web donde un usuario ingresa una URL específica para desbloquear el sitio web. Hay una multitud de scripts de proxy web que se pueden usar para configurar su propio proxy web. Glype y proxy PHP se utilizará en este tutorial. Glype es un script de proxy web muy popular y PHP-Proxy es una buena alternativa. Puedes elegir uno de ellos. En mi prueba, PHP-Proxy es más rápido y funciona mejor con sitios web populares como Facebook, Twitter y YouTube, porque se actualiza activamente. Veremos cómo configurarlos con Apache/Nginx y habilitar HTTPS con Let's Encrypt.
Normalmente uso el proxy Shadowsocks y OpenConnect VPN para eludir la censura de Internet, pero existe la posibilidad de que estas dos herramientas estén bloqueadas en mi país. El proxy web es un buen método de respaldo ya que no tiene ninguna característica del proxy SOCKS y VPN. A los ojos del firewall de Internet, es solo tráfico HTTPS normal. Hay decenas de miles de proxies web gratuitos en línea. La desventaja es que una vez que esos proxies web públicos se vuelven conocidos, pueden bloquearse fácilmente. Configurar tu propio proxy web privado tiene la ventaja de que solo tú conoces su existencia.
Requisitos
Para seguir este tutorial, necesitará:
- Un VPS (servidor privado virtual) que puede acceder libremente a sitios web bloqueados (fuera de su país o sistema de filtrado de Internet) y un nombre de dominio. Para VPS, recomiendo Vultr. Ofrecen VPS KVM de alto rendimiento con 512 millones de memoria por solo $ 2.5 por mes, lo cual es perfecto para su servidor proxy privado.
- Instalar un servidor web y PHP
También necesita un nombre de dominio, por lo que podrá agregar el cifrado HTTPS para proteger su tráfico web. Recomiendo comprar nombres de dominio de NameCheap porque el precio es bajo y brindan protección de privacidad whois gratis de por vida.
Paso 1:Instale el servidor web y PHP
SSH en su Ubuntu 16.04 VPS. Si desea utilizar Nginx como servidor web, instale Nginx y PHP7 ejecutando el siguiente comando.
sudo apt install nginx php7.0-fpm php7.0-curl php7.0-mbstring php7.0-xml php7.0-zip
Si desea utilizar Apache como servidor web, ejecute
sudo apt install apache2 php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-mbstring php7.0-xml php7.0-zip
Paso 2:Descarga Glype o PHP-Proxy
Glipe
Descarga Glype ejecutando el siguiente comando.
wget https://www.php-proxy.com/download/glype-1.4.15.zip
Extraerlo a /var/www/proxy/
directorio.
sudo apt install unzip sudo mkdir -p /var/www/proxy/ sudo unzip glype-1.4.15.zip -d /var/www/proxy/
Establecer www-data
(usuario del servidor web) como propietario.
sudo chown www-data:www-data /var/www/proxy/ -R
Proxy PHP
Podemos usar Composer para descargar PHP-Proxy. Instale Composer desde el repositorio de Ubuntu 16.04.
sudo apt install composer
Luego descargue PHP-Proxy a /var/www/proxy/
directorio.
sudo mkdir -p /var/www/proxy/ sudo composer create-project athlon1600/php-proxy-app:dev-master /var/www/proxy/
Establecer www-data
(usuario del servidor web) como propietario.
sudo chown www-data:www-data /var/www/proxy/ -R
Paso 3:configurar el servidor web
En este paso, debemos crear un bloque de servidor Nginx o un servidor virtual Apache para nuestro proxy web.
Crear bloque de servidor Nginx
Cree un bloque de servidor en /etc/nginx/conf.d/
directorio.
sudo nano /etc/nginx/conf.d/web-proxy.conf
Copie y pegue las siguientes líneas en el archivo. Reemplace proxy.example.com
con su verdadero nombre de dominio. No olvide establecer un registro A en su administrador de DNS.
server { listen 80; server_name proxy.example.com; root /var/www/proxy/; index index.php; location / { try_files $uri $uri/ /index.php; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } }
Guarde y cierre el archivo. Luego pruebe las configuraciones de Nginx.
sudo nginx -t
Si la prueba es exitosa, vuelva a cargar Nginx para que los cambios surtan efecto.
sudo systemctl reload nginx
Crear servidor virtual de Apache
Cree un servidor virtual Apache en /etc/apache2/sites-avaialable/
directorio.
sudo nano /etc/apache2/sites-available/web-proxy.conf
Copie y pegue las siguientes líneas en el archivo. Reemplace proxy.example.com
con su verdadero nombre de dominio. No olvide establecer un registro A en su administrador de DNS.
<VirtualHost *:80> ServerName proxy.example.com DocumentRoot /var/www/proxy ErrorLog ${APACHE_LOG_DIR}/proxy.error.log CustomLog ${APACHE_LOG_DIR}/proxy.access.log combined </VirtualHost>
Guarde y cierre el archivo. Luego habilite este servidor virtual.
sudo a2ensite web-proxy.conf
Vuelva a cargar Apache para que los cambios surtan efecto.
sudo systemctl reload apache2
La interfaz web
Ahora visita proxy.example.com
en su navegador web. Si usa Glype, será redirigido al panel de control de administración (proxy.example.com/admin.php
).
Si usa PHP-Proxy, puede ver un proxy web en funcionamiento esperando que ingrese una URL.
Ahora habilitemos HTTPS con Let's Encrypt.
Paso 4:habilite HTTPS con Let's Encrypt para su proxy web
Podemos instalar el cliente Let’s Encrypt (certbot) desde el PPA oficial ejecutando los siguientes comandos.
sudo apt install software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt update sudo apt install certbot
Nginx los usuarios también deben instalar el complemento Certbot Nginx.
sudo apt install python-certbot-nginx
Habilite HTTPS con el complemento Nginx.
sudo certbot --nginx --agree-tos --redirect --staple-ocsp -d proxy.example.com --email your-email-address
Apache los usuarios deben instalar el complemento Apache de Certbot.
sudo apt install python-certbot-apache
Habilite HTTPS con el complemento de Apache.
sudo certbot --apache --agree-tos --redirect --staple-ocsp -d proxy.example.com --email your-email-address
Si recibe el siguiente mensaje de error.
Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.
Consulte esta publicación en el foro Let's Encrypt para solucionarlo.
Una vez que el certificado se haya instalado correctamente, actualice su proxy en su navegador web para usar HTTPS.
(Opcional) Poner su proxy web detrás de CDN
Hay al menos tres formas en que un censor de Internet puede bloquear un sitio web:
- Bloquear la dirección IP del sitio web.
- Secuestrar la respuesta DNS para dar al usuario final una dirección IP incorrecta.
- Bloquee la conexión TLS observando la Indicación del nombre del servidor (SNI)
Si le preocupa que los censores de Internet bloqueen su proxy web, puede colocar su proxy web detrás de una CDN (red de entrega de contenido) como Cloudflare. De esta manera, la dirección IP de su servidor está oculta y si el censor de Internet decide bloquear la dirección IP de Cloudflare, habrá daños colaterales ya que hay muchos otros sitios web que también usan la misma dirección IP. Esto hará que el censor de Internet se lo piense dos veces antes de hacerlo.
Para evitar el envenenamiento de DNS, el usuario final debe usar DNS sobre TLS o DNS sobre HTTPS. Para evitar la filtración de la información de SNI, el sitio web debe utilizar SNI encriptado.
Conclusión
¡Eso es todo! Espero que este tutorial te haya ayudado a crear tu propio proxy web en Ubuntu 16.04. Como siempre, si esta publicación le resultó útil, suscríbase a nuestro boletín informativo gratuito para obtener más consejos y trucos.