Ce tutoriel vous montre comment configurer votre propre proxy Web sur Ubuntu 16.04. Un proxy Web est un site Web où un utilisateur entre une URL spécifique pour débloquer le site Web. Il existe une multitude de scripts de proxy Web qui peuvent être utilisés pour configurer votre propre proxy Web. Glype et Proxy PHP seront utilisés dans ce tutoriel. Glype est un script de proxy Web très populaire et PHP-Proxy est une bonne alternative. Vous pouvez en choisir un. Dans mon test, PHP-Proxy est plus rapide et fonctionne mieux avec les sites Web populaires comme Facebook, Twitter et YouTube, car il est activement mis à jour. Nous verrons comment les configurer avec Apache/Nginx et activer HTTPS avec Let's Encrypt.
Normalement, j'utilise le proxy Shadowsocks et le VPN OpenConnect pour contourner la censure d'Internet, mais il est possible que ces deux outils soient bloqués dans mon pays. Le proxy Web est une bonne méthode de sauvegarde car il ne présente aucune des caractéristiques du proxy SOCKS et du VPN. Aux yeux du pare-feu Internet, il ne s'agit que d'un trafic HTTPS normal. Il existe des dizaines de milliers de proxys Web gratuits en ligne. L'inconvénient est qu'une fois que ces proxys Web publics sont devenus bien connus, ils peuvent être facilement bloqués. La configuration de votre propre proxy Web privé présente l'avantage que vous seul connaissez son existence.
Prérequis
Pour suivre ce tutoriel, vous aurez besoin de :
- Un VPS (Virtual Private Server) qui peut accéder librement aux sites Web bloqués (hors de votre pays ou système de filtrage Internet) et un nom de domaine. Pour les VPS, je recommande Vultr. Ils offrent un VPS KVM haute performance de 512 Mo de mémoire pour seulement 2,5 $ par mois, ce qui est parfait pour votre serveur proxy privé.
- Installer un serveur Web et PHP
Vous avez également besoin d'un nom de domaine, vous pourrez donc ajouter un cryptage HTTPS pour protéger votre trafic Web. Je recommande d'acheter des noms de domaine auprès de NameCheap car le prix est bas et ils offrent une protection de la confidentialité whois gratuite à vie.
Étape 1 :Installer le serveur Web et PHP
SSH dans votre VPS Ubuntu 16.04. Si vous souhaitez utiliser Nginx comme serveur Web, installez Nginx et PHP7 en exécutant la commande suivante.
sudo apt installer nginx php7.0-fpm php7.0-curl php7.0-mbstring php7.0-xml php7.0-zip
Si vous souhaitez utiliser Apache comme serveur Web, exécutez
sudo apt install apache2 php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-mbstring php7.0-xml php7.0-zip
Étape 2 :Téléchargez Glype ou PHP-Proxy
Glype
Téléchargez Glype en exécutant la commande suivante.
wget https://www.php-proxy.com/download/glype-1.4.15.zip
Extrayez-le dans /var/www/proxy/
répertoire.
sudo apt install unzipsudo mkdir -p /var/www/proxy/sudo unzip glype-1.4.15.zip -d /var/www/proxy/
Définir www-data
(utilisateur du serveur Web) en tant que propriétaire.
sudo chown www-data:www-data /var/www/proxy/ -R
Proxy PHP
Nous pouvons utiliser Composer pour télécharger PHP-Proxy. Installez Composer à partir du référentiel Ubuntu 16.04.
sudo apt install composer
Téléchargez ensuite PHP-Proxy sur /var/www/proxy/
répertoire.
sudo mkdir -p /var/www/proxy/sudo composer create-project athlon1600/php-proxy-app:dev-master /var/www/proxy/
Définir www-data
(utilisateur du serveur Web) en tant que propriétaire.
sudo chown www-data:www-data /var/www/proxy/ -R
Étape 3 :Configurer le serveur Web
Dans cette étape, nous devons créer un bloc de serveur Nginx ou un hôte virtuel Apache pour notre proxy Web.
Créer un bloc de serveur Nginx
Créez un bloc serveur sous /etc/nginx/conf.d/
répertoire.
sudo nano /etc/nginx/conf.d/web-proxy.conf
Copiez et collez les lignes suivantes dans le fichier. Remplacez proxy.example.com
avec votre vrai nom de domaine. N'oubliez pas de définir un enregistrement A dans votre gestionnaire DNS.
serveur { écoute 80 ; nom_serveur proxy.exemple.com ; racine /var/www/proxy/; index index.php; emplacement / { try_files $uri $uri/ /index.php; } emplacement ~ \.php$ { fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ; inclure fastcgi_params ; inclure snippets/fastcgi-php.conf ; }}
Enregistrez et fermez le fichier. Testez ensuite les configurations Nginx.
sudo nginx -t
Si le test réussit, rechargez Nginx pour que les modifications prennent effet.
sudo systemctl recharger nginx
Créer un hôte virtuel Apache
Créez un hôte virtuel Apache dans /etc/apache2/sites-avaialable/
répertoire.
sudo nano /etc/apache2/sites-available/web-proxy.conf
Copiez et collez les lignes suivantes dans le fichier. Remplacez proxy.example.com
avec votre vrai nom de domaine. N'oubliez pas de définir un enregistrement A dans votre gestionnaire DNS.
ServerName proxy.example.com DocumentRoot /var/www/proxy ErrorLog ${APACHE_LOG_DIR}/proxy.error.log CustomLog ${APACHE_LOG_DIR}/proxy.access.log combiné Enregistrez et fermez le fichier. Activez ensuite cet hôte virtuel.
sudo a2ensite web-proxy.confRechargez Apache pour que les modifications prennent effet.
sudo systemctl recharger apache2L'interface Web
Visitez maintenant
proxy.example.com
dans votre navigateur Web. Si vous utilisez Glype, vous serez redirigé vers le panneau de configuration de l'administrateur (proxy.example.com/admin.php
).
Si vous utilisez PHP-Proxy, vous pouvez voir un proxy Web fonctionnel attendre que vous saisissiez une URL.
Maintenant, activons HTTPS avec Let's Encrypt.
Étape 4 :Activez HTTPS avec Let's Encrypt pour votre proxy Web
Nous pouvons installer le client Let's Encrypt (certbot) à partir du PPA officiel en exécutant les commandes suivantes.
sudo apt install software-properties-commonsudo add-apt-repository ppa:certbot/certbotsudo apt updatesudo apt install certbotNginx les utilisateurs doivent également installer le plugin Certbot Nginx.
sudo apt installer python-certbot-nginxActivez HTTPS avec le plugin Nginx.
sudo certbot --nginx --agree-tos --redirect --staple-ocsp -d proxy.example.com --email votre-adresse-emailApache les utilisateurs doivent installer le plug-in Certbot Apache.
sudo apt installer python-certbot-apacheActivez HTTPS avec le plugin Apache.
sudo certbot --apache --agree-tos --redirect --staple-ocsp -d proxy.example.com --email votre-adresse-emailSi vous obtenez le message d'erreur suivant.
Le client avec l'authentificateur actuellement sélectionné ne prend en charge aucune combinaison de défis qui satisfera l'autorité de certification.Veuillez consulter ce message sur le forum Let's Encrypt pour résoudre ce problème.
Une fois le certificat installé avec succès, actualisez votre proxy dans votre navigateur Web pour utiliser HTTPS.
(Facultatif) Mettre votre proxy Web derrière CDN
Il existe au moins trois façons pour un censeur d'Internet de bloquer un site Web :
- Bloquer l'adresse IP du site Web.
- Détournez la réponse DNS pour donner à l'utilisateur final une mauvaise adresse IP.
- Bloquez la connexion TLS en consultant l'indication du nom du serveur (SNI)
Si vous craignez que votre proxy Web ne soit bloqué par des censeurs Internet, vous pouvez placer votre proxy Web derrière un CDN (Content Delivery Network) comme Cloudflare. De cette façon, l'adresse IP de votre serveur est masquée et si le censeur Internet décide de bloquer l'adresse IP Cloudflare, il y aura des dommages collatéraux car de nombreux autres sites Web utilisent également la même adresse IP. Cela incitera le censeur d'Internet à réfléchir à deux fois avant de le faire.
Pour éviter l'empoisonnement DNS, l'utilisateur final doit utiliser DNS sur TLS ou DNS sur HTTPS. Pour éviter la fuite des informations SNI, le site Web doit utiliser un SNI crypté.
Conclusion
C'est ça! J'espère que ce tutoriel vous a aidé à créer votre propre proxy Web sur Ubuntu 16.04. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour obtenir plus de conseils et d'astuces.