3proxy ist ein kostenloser und quelloffener Proxyserver, der für verschiedene Zwecke wie das Filtern von Datenverkehr, das Zwischenspeichern und Blockieren bestimmter Websites verwendet wird. Er unterstützt verschiedene Protokolle wie SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP und unterstützt Authentifizierungsmethoden wie SOCKS5 Benutzername/Passwort, NTLM, LDAP, Kerberos und SSO.
Der Server ist in hohem Maße anpassbar und bietet eine detaillierte Verwaltung der Bandbreitennutzung und der Verbindungsparameter. 3proxy kann auf den Plattformen Windows, Linux und macOS installiert werden. Es handelt sich um einen leichtgewichtigen und einfach zu bedienenden Proxy-Server, der für kleine bis mittelgroße Netzwerke geeignet ist. Es ist möglich, einen vps-Proxy zu mieten .
Bei der Installation des Servers ist Vorsicht geboten, da es unerwünscht ist, den Server ohne Genehmigung zu installieren. Dies kann zur unbefugten Nutzung des Servers durch Eindringlinge führen, um Spamming und hohen Datenverkehr zu organisieren.
Zu Beginn müssen mehrere Pakete und Abhängigkeiten installiert werden.
Für AlmaLinux wird der Befehl:
yum -y install gcc wget tar
und für Debian:
apt install -y build-essential wget tar
Dann laden Sie die Dateien von der offiziellen Seite des 3proxy-Projekts herunter, entpacken das Archiv und kompilieren die heruntergeladenen Dateien.
Danach legen Sie die notwendigen Verzeichnisse für die Konfigurationsdateien und Protokolle an, übertragen die ausführbare Datei 3proxy
und legen einen neuen Benutzer"proxyuser
" an und weisen ihm Rechte für die Verzeichnisse zu. Um eine neue Konfigurationsdatei zu erstellen, führen Sie den Befehl aus:
touch /etc/3proxy/3proxy.cfg
Vergeben Sie mit chmod 600 /etc/3proxy/3proxy.cfg
die Rechte nur an den Benutzer root.
Nachdem Sie eine neue Konfigurationsdatei erstellt haben, müssen Sie diese korrekt ausfüllen. Notieren Sie sich dazu die uid
und gid des
Benutzers"proxyuser
" und fügen Sie den Text aus der Beispielkonfigurationsdatei mit einem Texteditor per Copy & Paste ein. Speichern Sie die Änderungen in der Konfigurationsdatei und wir haben einen installierten 3proxy mit http(s) und socks5-proxy Unterstützung.
Nachfolgend finden Sie eine Beispielkonfigurationsdatei:
Konfigurieren des Servers für den Betrieb als proxyuser
(fügen Sie die uid
und gid
unseres Benutzers ein, die wir zuvor gelernt haben). setgid 991
setuid 991
Geben Sie die richtigen Nameserver an. Siehe /etc/resolv.conf
: nserver 8.8.8.8.8
nserver 8.8.4.4
Verwenden Sie die Standard-Timeouts und die Cache-Größe für DNS-Abfragen: timeouts 1 5 30 60 180 180 1800 1800 15 60
nscache 65536
Geben Sie den Startmodus als Daemon an: daemon
Geben Sie die IP-Adresse der externen Schnittstelle des Servers an: external 111.111.111.111.111.111
(oder ignorieren Sie die Zeile, wenn die IP gleich ist).
Geben Sie die IP-Adresse der internen Schnittstelle des Servers an: intern 192.168.0.1
(oder ignorieren Sie die Zeile, damit der Proxy auf alle IPs hört).
Konfigurieren Sie den http-Proxy auf dem Standard-Port 3128: proxy -p3128 -n -a
(geben Sie Ihren Port an und vergewissern Sie sich vorher, dass er funktioniert).
Konfigurieren Sie den Socks-Proxy auf dem Standard-Port 1080: socks -p1080
(geben Sie Ihren Port an und überprüfen Sie vorher, ob er funktioniert).
Geben Sie den Pfad zu den Protokollen, das Protokollformat und die Rotation an: log /var/log/3proxy/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
30 rotieren
Als nächstes erstellen Sie eine Initialisierungsdatei für systemd
und konfigurieren die richtigen Berechtigungen:
# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
Der folgende Text sollte in diese Datei eingefügt werden:
[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
Speichern und aktualisieren Sie die systemd-Konfiguration
:
# systemctl daemon-reload
Starten Sie 3proxy und fügen Sie es dem Autoloader hinzu:
# systemctl start 3proxy
# systemctl enable 3proxy
Die Konfiguration ist abgeschlossen. Sie haben jetzt http-proxy auf Port 3128 und socks-proxy
auf Port 1080.
Das erste Problem besteht darin, dass nach der Registrierung einer neuen Domäne diese aufgrund der Zwischenspeicherung von Domänennamen möglicherweise nicht verfügbar ist. Um dieses Problem zu lösen, sollten Sie warten, bis die DNS-Einträge aktualisiert werden, oder die IP-Adresse Ihres Servers und die neue Domäne zu Ihrer Hosts-Datei
hinzufügen. So können Sie auf die neue Domäne zugreifen, bis die DNS-Einträge aktualisiert sind.
Zweites Problem: Wenn Sie einen Proxy-Server mit Standard-Ports verwenden, kann der Server früher oder später entdeckt werden. Um dieses Problem zu lösen, empfiehlt es sich, die Ports zu ändern.
Sie können zum Beispiel Port 7834 für http-Proxy und 7835 für Socks einstellen. Diese Ports können jedoch auch erkannt werden, so dass Sie die Firewall so konfigurieren können, dass der Zugriff auf den Server nur von bestimmten Adressen aus möglich ist, während anderen der Zugriff verweigert wird. Diese Lösung ist recht zuverlässig, wenn auch nicht allzu flexibel, da Sie möglicherweise keinen Zugang zu einer statischen IP-Adresse haben.
Das dritte Problem besteht darin, dass bei der Verwendung eines Proxy-Servers die Protokolle aller Verbindungen mit der Zeit recht umfangreich werden und den größten Teil des freien Speicherplatzes auf Ihrer Festplatte beanspruchen können. Um dieses Problem zu vermeiden, sollten Sie für eine Rotation der Protokolle sorgen oder gar keine Protokolle aufbewahren.
Es gibt verschiedene Methoden der Protokollrotation, die es Ihnen ermöglichen, nur die letzten Protokolldateien aufzubewahren und ältere Protokolle automatisch zu löschen. Daher ist es am besten, den Prozess der Protokollrotation im Voraus einzurichten, um ein Überlaufen der Festplatte zu vermeiden. Auf diese Weise können Sie alle Daten speichern und vermeiden, dass bei der Verwendung eines Proxy-Servers Informationen verloren gehen.
users proxyuser:CL:password
daemon
log /var/log/3proxy/3proxy.log D
rotate 30
auth strong
proxy -n -a
setgid 65534
setuid 65534
Es ist auch notwendig, ein Verzeichnis für die Protokolle zu erstellen und die Berechtigungen festzulegen (wir starten den Server mit den minimalen Rechten von nobody im System unter Verwendung der Direktiven setgid/setud
):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Betrachten wir nun die Installation von 3proxy in Docker.
Zuerst müssen wir einige Pakete installieren (und bei kürzlich installierten Debian- und Ubuntu-Betriebssystemen müssen wir möglicherweise auch den apt-Paketindex
mit # apt update
aktualisieren).
Für AlmaLinux und CentOS:
# yum install docker docker-compose
Für Ubuntu und Debian:
# apt install docker docker.io docker-compose
Image herunterladen:
# docker pull 3proxy/3proxy
Standardmäßig verwendet 3proxy eine sichere Chroot-Umgebung in /usr/local/3proxy
mit uid 65535
und gid 65535
und erwartet, dass die 3proxy-Konfigurationsdatei in /usr/local/etc/3proxy
abgelegt wird. Die Pfade in der Konfigurationsdatei sollten relativ zu /usr/local/3proxy
angegeben werden, d.h. es sollte /logs
statt /usr/local/3proxy/logs
sein. In chroot ist die Berechtigung für nserver
erforderlich.
Erstellen Sie dazu ein Verzeichnis und eine 3proxy-Konfigurationsdatei
:
# mkdir -p /etc/dockerapp/3proxy
# touch /etc/dockerapp/3proxy/3poxy.conf
Anschließend bearbeiten Sie die erstellte Konfigurationsdatei 3proxy .conf
mit einem beliebigen Texteditor. Für den Betrieb von 3proxy in Docker ist die Mindestkonfiguration ausreichend:
nserver 8.8.8.8.8
Socken -p3129
Um Protokollierung und Benutzer hinzuzufügen, müssen Sie die 3proxy-Konfigurationsdatei
ergänzen:
log /logs/3proxy.log
auth strong
users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
Anstelle von"87beeef3f4ee4661ac1897eca216fc26
" müssen Sie den MD5-Hash des Passworts für den Proxyuser
angeben. Sie können den MD5-Hash mit Hilfe von Online-Generatoren herausfinden.
Starten wir 3proxy mit docker-compose
. Dazu muss eine Konfigurationsdatei im .yml-Format
erstellt werden:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Fügen Sie dort den folgenden Text mit einem Texteditor ein:
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
Speichern. In dieser Datei haben wir den externen Port 8080 angegeben. Jetzt können wir es ausführen:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Wir werden eine Antwort wie diese erhalten:
Erstellen des Netzwerks"3proxy_default
" mit dem Standardtreiber
3proxy erstellen ... fertig
Testen:
# docker ps
Wir erhalten eine Antwort mit der Container-ID, dem Image, dem Status, den verwendeten Ports und dem Namen:
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p..." 5