3proxy est un serveur proxy gratuit et open source qui est utilisé à diverses fins telles que le filtrage du trafic, la mise en cache et le blocage de sites web spécifiques. Il prend en charge divers protocoles tels que SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP, ainsi que des méthodes d'authentification telles que SOCKS5 nom d'utilisateur/mot de passe, NTLM, LDAP, Kerberos et SSO.
Le serveur est hautement personnalisable et permet une gestion détaillée de l'utilisation de la bande passante et des paramètres de connexion. 3proxy peut être installé sur les plateformes Windows, Linux et macOS. Il s'agit d'un serveur proxy léger et facile à utiliser, adapté aux réseaux de petite et moyenne taille. Il est possible de louer un proxy vps.
Il convient d'être prudent, car il n'est pas souhaitable d'installer le serveur sans autorisation. Cela peut conduire à une utilisation non autorisée du serveur par des intrus pour organiser du spamming et un trafic important.
Pour commencer, plusieurs paquets et dépendances doivent être installés.
Pour AlmaLinux, la commande :
yum -y install gcc wget tar
et pour Debian :
apt install -y build-essential wget tar
Téléchargez ensuite les fichiers depuis le site officiel du projet 3proxy, décompressez l'archive et compilez les fichiers téléchargés.
Ensuite, créez les répertoires nécessaires pour les fichiers de configuration et les logs, transférez l'exécutable 3proxy
, créez un nouvel utilisateur"proxyuser
" et attribuez-lui des droits sur les répertoires. Pour créer un nouveau fichier de configuration, exécutez la commande :
touch /etc/3proxy/3proxy.cfg
Attribuer les permissions à l'utilisateur root uniquement avec chmod 600 /etc/3proxy/3proxy.cfg
.
Après avoir créé un nouveau fichier de configuration, il est nécessaire de le remplir correctement. Pour ce faire, notez l'uid
et le gid de l'
utilisateur"proxyuser
", puis utilisez un éditeur de texte pour copier et coller le texte du fichier de configuration de l'exemple. Sauvegardez les changements dans le fichier de configuration et nous avons un 3proxy installé avec le support http(s) et socks5-proxy.
Vous trouverez ci-dessous un exemple de fichier de configuration :
Configurer le serveur pour qu'il fonctionne en tant que proxyuser
(insérer l'uid
et le gid de
notre utilisateur que nous avons appris plus tôt). setgid 991
setuid 991
Spécifiez les bons serveurs de noms. Voir /etc/resolv.conf :
nserver 8.8.8.8.8
nserver 8.8.4.4
Utilisez les délais d'attente et la taille du cache par défaut pour les requêtes DNS: timeouts 1 5 30 60 180 180 1800 1800 15 60
nscache 65536
Spécifiez le mode de démarrage en tant que démon: daemon
Indiquez l'adresse IP de l'interface externe du serveur: external 111.111.111.111.111.111
(ou ignorez la ligne si l'IP est la même).
Spécifiez l'adresse IP de l'interface interne du serveur: internal 192.168.0.1
(ou l'ignorer pour que le proxy écoute toutes les IP).
Configurez le proxy http sur le port standard 3128: proxy -p3128 -n -a
(spécifiez votre port, en vous assurant qu'il fonctionne au préalable).
Configurer le proxy socks sur le port standard 1080: socks -p1080
(spécifiez votre port, en vérifiant qu'il fonctionne au préalable).
Spécifier le chemin des logs, leur format et leur rotation: log /var/log/3proxy/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotation 30
Ensuite, créez un fichier d'initialisation pour systemd
et configurez les bonnes permissions :
# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
Le texte suivant doit être inséré dans ce fichier :
[Unit]
Description=3proxy Proxy Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/bin/kill `/usr/bin/pgrep proxyuser`
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target
Sauvegardez et mettez à jour la configuration de systemd
:
# systemctl daemon-reload
Démarrez 3proxy et ajoutez-le à l'autochargeur :
# systemctl start 3proxy
# systemctl enable 3proxy
La configuration est terminée. Vous avez maintenant un http-proxy sur le port 3128 et un socks-proxy
sur le port 1080.
Le premier problème est qu'il est possible qu'après avoir enregistré un nouveau domaine, celui-ci ne soit pas disponible à cause de la mise en cache du nom de domaine. Pour résoudre ce problème, vous devez attendre que les enregistrements DNS soient mis à jour ou ajouter l'adresse IP de votre serveur et du nouveau domaine à votre fichier hosts
. Cela vous permettra d'accéder au nouveau domaine jusqu'à ce que les enregistrements DNS soient mis à jour.
Deuxième problème - si vous utilisez un serveur proxy avec des ports par défaut, le serveur peut tôt ou tard être détecté. Pour résoudre ce problème, il est recommandé de modifier les ports.
Par exemple, vous pouvez définir le port 7834 sur le proxy http et 7835 sur Socks. Cependant, ces ports peuvent également être détectés, c'est pourquoi vous pouvez configurer le pare-feu de manière à n'autoriser l'accès au serveur qu'à partir de certaines adresses, tandis que les autres se verront refuser l'accès. Cette solution est assez fiable, bien qu'elle ne soit pas très souple, car vous n'aurez peut-être pas accès à une adresse IP statique.
Le troisième problème est que si vous utilisez un serveur proxy et que vous conservez des journaux de toutes les connexions, ceux-ci peuvent devenir très volumineux au fil du temps et occuper la majeure partie de l'espace libre sur votre disque. Pour éviter ce problème, vous devez veiller à la rotation des journaux ou ne pas les conserver du tout.
Il existe différentes méthodes de rotation des journaux qui vous permettent de ne conserver que les derniers fichiers journaux et de supprimer automatiquement les journaux plus anciens. Il est donc préférable de mettre en place le processus de rotation des journaux à l'avance afin d'éviter de saturer le disque. Cela permettra de sauvegarder toutes les données et d'éviter de perdre des informations lors de l'utilisation d'un serveur proxy.
users proxyuser:CL:password
daemon
log /var/log/3proxy/3proxy.log D
rotate 30
auth strong
proxy -n -a
setgid 65534
setuid 65534
Il est également nécessaire de créer un répertoire pour les logs et de définir les permissions (nous démarrons le serveur avec les droits minimaux de personne dans le système en utilisant les directives setgid/setud
) :
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Considérons l'installation de 3proxy dans Docker.
Tout d'abord, nous devons installer quelques paquets (et pour les systèmes d'exploitation Debian et Ubuntu récemment installés, nous pouvons également avoir besoin de mettre à jour l'index des paquets apt
avec # apt update
).
Pour AlmaLinux et CentOS :
# yum install docker docker-compose
Pour Ubuntu et Debian :
# apt install docker docker.io docker-compose
Télécharger l'image :
# docker pull 3proxy/3proxy
Par défaut, 3proxy utilise un environnement chroot sécurisé dans /usr/local/3proxy
avec uid 65535
et gid 65535
, et s'attend à ce que le fichier de configuration de 3proxy soit placé dans /usr/local/etc/3proxy
. Les chemins d'accès au fichier de configuration doivent être spécifiés par rapport à /usr/local/3proxy
, c'est-à-dire qu'ils doivent être /logs
au lieu de /usr/local/3proxy/logs
. Dans le chroot, l'autorisation pour le nserver
est requise.
Pour ce faire, créez un répertoire et un fichier de configuration 3proxy
:
# mkdir -p /etc/dockerapp/3proxy
# touch /etc/dockerapp/3proxy/3poxy.conf
Ensuite, utilisez l'éditeur de texte de votre choix pour éditer le fichier de configuration 3proxy .conf
créé. Pour exécuter 3proxy dans Docker, la configuration minimale est suffisante :
nserver 8.8.8.8.8
socks -p3129
Afin d'ajouter la journalisation et l'utilisateur, vous devez ajouter au fichier de configuration 3proxy
:
log /logs/3proxy.log
auth strong
users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
Au lieu de"87beeef3f4ee4661ac1897eca216fc26
", vous devez spécifier le hachage MD5 du mot de passe de l'utilisateur du proxy
. Vous pouvez trouver le hachage MD5 à l'aide de générateurs en ligne.
Démarrons 3proxy en utilisant docker-compose
. Cela nécessite la création d'un fichier de configuration au format .yml
:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Insérez le texte suivant à l'aide d'un éditeur de texte :
version: "2.1"
services:
3proxysvc:
image: 3proxy/3proxy:latest
container_name: 3proxy
volumes:
- /etc/dockerapp/3proxy/conf:/usr/local/3proxy/conf
ports:
- 8080:3129
restart: unless-stopped
Enregistrer. Dans ce fichier, nous avons spécifié le port externe 8080. Nous pouvons maintenant l'exécuter :
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Nous obtiendrons une réponse comme celle-ci :
Création du réseau"3proxy_default
" avec le pilote par défaut
Création de 3proxy ... terminé
Test :
# docker ps
Nous obtenons une réponse avec l'ID du conteneur, l'image, l'état, les ports utilisés et le nom :
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p..." 5