Um Ihren eigenen Proxyserver einzurichten, installieren und konfigurieren Sie typischerweise eine dedizierte Proxy-Software wie Squid für HTTP/HTTPS-Caching, 3proxy für leichtgewichtige HTTP/SOCKS-Anwendungen oder Dante für robuste SOCKS5-Verbindungen, indem Sie Listening-Ports, Zugriffssteuerungen und Authentifizierungsmechanismen auf einem Linux-Server definieren.
Das Einrichten eines selbst gehosteten Proxyservers bietet Kontrolle über den Netzwerkverkehr, Datenschutz, Zugriff auf geografisch eingeschränkte Inhalte oder verbesserte Sicherheit für interne Netzwerke. Die Wahl der Software hängt von spezifischen Anforderungen ab, wie z. B. Protokollunterstützung (HTTP, HTTPS, SOCKS), Caching-Bedarf und gewünschte Komplexität.
Allgemeine Voraussetzungen
Bevor Sie einen Proxy konfigurieren, stellen Sie sicher, dass Ihr Server diese grundlegenden Anforderungen erfüllt:
* Betriebssystem: Eine Linux-Distribution (z.B. Ubuntu, Debian, CentOS) wird häufig verwendet.
* Netzwerkzugriff: Der Server muss über eine entsprechende Netzwerkkonnektivität und eine öffentliche IP-Adresse verfügen, falls externer Zugriff erforderlich ist.
* Firewall-Konfiguration: Öffnen Sie die notwendigen Ports (z.B. 3128 für HTTP, 1080 für SOCKS) in der Firewall Ihres Servers (z.B. ufw, firewalld).
Squid Proxyserver
Squid ist ein leistungsstarker, voll ausgestatteter Caching-Proxy für Web-Clients, der HTTP, HTTPS, FTP und andere Protokolle unterstützt. Er zeichnet sich durch das Caching häufig aufgerufener Inhalte aus, wodurch die Bandbreitennutzung reduziert und die Antwortzeiten verbessert werden.
Installation (Debian/Ubuntu)
sudo apt update
sudo apt install squid
Auf CentOS/RHEL: sudo yum install squid oder sudo dnf install squid.
Grundkonfiguration
Die primäre Konfigurationsdatei befindet sich typischerweise unter /etc/squid/squid.conf.
1. Listening-Port definieren:
Suchen oder fügen Sie die http_port-Direktive hinzu.
http_port 3128
2. Zugriffssteuerungslisten (ACLs):
Squid verwendet ACLs, um Netzwerksegmente, Benutzer oder andere Kriterien zu definieren, und http_access-Regeln, um Aktionen anzuwenden.
```
# Eine lokale Netzwerk-ACL definieren (ersetzen Sie dies durch das lokale Subnetz Ihres Servers oder die IP des Clients)
acl localnet src 192.168.1.0/24 # Beispiel: Clients aus diesem Subnetz erlauben
acl localhost src 127.0.0.1/32
# Zugriff für definierte ACLs erlauben
http_access allow localhost
http_access allow localnet
# Allen anderen Zugriff verweigern
http_access deny all
```
Um den Zugriff von jeder IP-Adresse zu erlauben (weniger sicher, mit Vorsicht und Authentifizierung verwenden):
```
acl all src 0.0.0.0/0
http_access allow all
```
- Squid neu starten:
bash sudo systemctl restart squid sudo systemctl enable squid sudo systemctl status squid
Benutzerauthentifizierung (Basic Auth)
Implementieren Sie eine grundlegende Benutzername/Passwort-Authentifizierung für verbesserte Sicherheit.
1. Apache-Dienstprogramme installieren (für htpasswd):
bash
sudo apt install apache2-utils
2. Passwortdatei erstellen:
bash
sudo htpasswd -c /etc/squid/passwd yourusername
# Passwort eingeben und bestätigen. Um weitere Benutzer hinzuzufügen, -c weglassen:
# sudo htpasswd /etc/squid/passwd anotheruser
3. Squid für die Authentifizierung konfigurieren:
Fügen Sie diese Zeilen zu squid.conf hinzu (z.B. oben oder im AUTH-Abschnitt):
```
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5 startup=5 idle=1
auth_param basic realm "Squid Proxy Authentication"
auth_param basic credentialsttl 2 hours
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
```
Stellen Sie sicher, dass `http_access allow authenticated` *vor* allen `http_access deny all`-Regeln erscheint, die authentifizierte Benutzer blockieren würden.
- Squid neu starten.
HTTPS-Abfangen (Transparenter Proxy)
Squid kann HTTPS-Verkehr abfangen und entschlüsseln, was die Generierung und das Vertrauen eines benutzerdefinierten SSL-Zertifikats auf Client-Maschinen erfordert. Dies ist eine komplexe Konfiguration, die hauptsächlich in Unternehmensumgebungen zur Inhaltsfilterung und Überwachung eingesetzt wird und aufgrund von Sicherheits- und Datenschutzimplikationen im Allgemeinen nicht für den persönlichen Gebrauch empfohlen wird.
3proxy Proxyserver
3proxy ist ein leichter, vielseitiger Proxyserver, der HTTP, HTTPS (CONNECT), SOCKS4/5, FTP und andere Protokolle unterstützt. Er ist bekannt für seinen geringen Ressourcenverbrauch und seine flexible Konfiguration.
Installation (aus dem Quellcode kompilieren)
3proxy wird oft aus dem Quellcode kompiliert, um die neueste Version und maximale Kontrolle zu erhalten.
1. Build-Tools installieren:
bash
sudo apt update
sudo apt install build-essential git
2. Herunterladen und Kompilieren:
bash
git clone https://github.com/z3APA3A/3proxy.git
cd 3proxy
make -f Makefile.Linux
sudo make -f Makefile.Linux install
Die Binärdateien werden typischerweise nach /usr/local/bin/3proxy installiert.
Grundkonfiguration
Erstellen Sie eine Konfigurationsdatei, z.B. /etc/3proxy/3proxy.cfg.
1. DNS-Resolver:
nserver 8.8.8.8 # Google DNS
nserver 1.1.1.1 # Cloudflare DNS
2. Authentifizierung (falls gewünscht):
auth strong
users yourusername:CL:yourpassword # CL für Klartext, Hash für die Produktion verwenden
3. Proxys definieren:
* HTTP-Proxy:
proxy -p3128
* SOCKS5-Proxy:
socks -p1080
* Kombinierter HTTP- und SOCKS-Proxy:
proxy -p3128
socks -p1080
4. Zugriffssteuerung:
Nach users und vor den proxy/socks-Zeilen:
allow yourusername # Nur den angegebenen Benutzer erlauben
# Oder um alle authentifizierten Benutzer zu erlauben:
# allow *
# Oder um von einer bestimmten IP zu erlauben:
# allow 192.168.1.0/24
Eine grundlegende, weniger sichere Konfiguration, die jedem von überall her Zugriff erlaubt:
allow * *
proxy -p3128
socks -p1080
5. 3proxy starten:
bash
/usr/local/bin/3proxy /etc/3proxy/3proxy.cfg
Für den Hintergrundbetrieb verwenden Sie start 3proxy /etc/3proxy/3proxy.cfg innerhalb der Konfigurationsdatei oder systemd für eine ordnungsgemäße Dienstverwaltung.
Systemd-Dienst (Optional)
Erstellen Sie /etc/systemd/system/3proxy.service:
[Unit]
Description=3proxy Proxy Server
After=network.target
[Service]
ExecStart=/usr/local/bin/3proxy /etc/3proxy/3proxy.cfg
Restart=always
User=nobody # Als nicht-privilegierter Benutzer ausführen
[Install]
WantedBy=multi-user.target
Danach:
sudo systemctl daemon-reload
sudo systemctl enable 3proxy
sudo systemctl start 3proxy
sudo systemctl status 3proxy
Dante SOCKS-Server
Dante ist ein robuster SOCKS-Proxyserver, der hauptsächlich SOCKS4 und SOCKS5 unterstützt. Er ist bekannt für seine Stabilität und Leistung, was ihn für SOCKS-Tunneling mit hohem Datenverkehr geeignet macht.
Installation (Debian/Ubuntu)
sudo apt update
sudo apt install dante-server
Auf CentOS/RHEL: sudo yum install dante-server oder sudo dnf install dante-server.
Grundkonfiguration
Die Hauptkonfigurationsdatei ist /etc/danted.conf.
1. Netzwerkschnittstellen und Ports definieren:
logoutput: stderr
internal: eth0 port = 1080 # Ersetzen Sie eth0 durch den Namen der internen Schnittstelle Ihres Servers
external: eth0 # Ersetzen Sie eth0 durch den Namen der externen Schnittstelle Ihres Servers
Wenn Sie nur eine Schnittstelle haben, verwenden Sie diese sowohl für internal als auch für external.
2. Benutzerrechte:
user.privileged: root
user.notprivileged: nobody
3. Authentifizierungsmethoden:
Für die Benutzername/Passwort-Authentifizierung verwendet Dante Systembenutzer.
socksmethod: username none
username erfordert Client-Authentifizierung, none erlaubt unauthentifizierten Zugriff.
4. Zugriffsregeln:
Definieren Sie client-Regeln (wer sich mit dem Proxy verbinden kann) und socks-Regeln (welchen Datenverkehr der Proxy weiterleiten wird).
```
# Client-Regel: Jedem erlauben, sich mit dem Proxy zu verbinden
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
socksmethod: username none # Oben definierte Authentifizierungsmethoden anwenden
}
# SOCKS-Regel: Proxy erlauben, Datenverkehr überallhin weiterzuleiten
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
socksmethod: username none
}
```
Um den Client-Zugriff auf einen bestimmten IP-Bereich zu beschränken:
```
client pass {
from: 192.168.1.0/24 to: 0.0.0.0/0
socksmethod: username none
}
```
- Systembenutzer für die Authentifizierung erstellen:
Wennsocksmethod: usernameverwendet wird, erstellen Sie einen Systembenutzer (ohne Home-Verzeichnis oder Shell-Zugriff aus Sicherheitsgründen).
bash sudo adduser --no-create-home --shell /usr/sbin/nologin proxyuser # Ein starkes Passwort für proxyuser festlegen - Dante neu starten:
bash sudo systemctl restart danted sudo systemctl enable danted sudo systemctl status danted
Vergleichstabelle: Squid vs. 3proxy vs. Dante
| Funktion | Squid | 3proxy | Dante SOCKS-Server |
|---|---|---|---|
| Typ | HTTP/HTTPS, Caching, Forward/Reverse | HTTP, HTTPS (CONNECT), SOCKS4/5, FTP | SOCKS4/5 |
| Komplexität | Mittel bis Hoch (aufgrund umfangreicher Funktionen) | Niedrig bis Mittel (kompakte Konfiguration) | Mittel (robuste SOCKS-Implementierung) |
| Hauptzweck | Web-Caching, Inhaltsfilterung, Zugriffssteuerung | Leichtgewichtiger Proxy, SOCKS-Gateway, vielseitig | Hochleistungs-SOCKS-Proxy, Tunneling |
| Leistung | Hoch (insbesondere mit Caching) | Sehr leichtgewichtig, effizient | Hoch, optimiert für SOCKS-Verkehr |
| Authentifizierung | Basic, Digest, NTLM, externe Helfer | Basic, NTLM, IP-basiert, externe Helfer | Benutzername/Passwort (Systembenutzer), IP-basiert |
| Betriebssystem-Unterstützung | Linux, FreeBSD, Windows (via Cygwin) | Linux, Windows, BSD, macOS | Linux, FreeBSD, Solaris, macOS |
| Konfiguration | Umfangreich, granular, textbasiert | Kompakt, skriptähnlich, textbasiert | Textbasiert, klare Abschnitte |
Allgemeine Sicherheits- und Leistungsüberlegungen
- Firewall: Konfigurieren Sie die Firewall Ihres Servers (z.B.
ufw,firewalld) immer so, dass nur eingehende Verbindungen zu den Proxy-Port(s) von vertrauenswürdigen IPs oder IP-Bereichen zugelassen werden. - Authentifizierung: Verwenden Sie starke, einzigartige Passwörter für die Proxy-Authentifizierung. Für öffentlich zugängliche Proxys immer die Authentifizierung aktivieren.
- Geringstes Privileg: Führen Sie Proxy-Dienste unter einem dedizierten, nicht-privilegierten Benutzer (z.B.
nobodyoder einem benutzerdefinierten Benutzer) aus, um potenzielle Schäden im Falle einer Kompromittierung zu begrenzen. - Überwachung: Überprüfen Sie regelmäßig die Proxy-Protokolle auf ungewöhnliche Aktivitäten und überwachen Sie die Serverressourcen (CPU, RAM, Netzwerk-I/O), um Leistungsengpässe oder potenzielle Angriffe zu identifizieren.
- Updates: Halten Sie Ihre Proxy-Software und Ihr Betriebssystem auf dem neuesten Stand, um Sicherheitslücken zu schließen.
- Hardware: Stellen Sie sicher, dass der Server über ausreichende CPU, RAM und Netzwerkbandbreite für die erwartete Last verfügt. Für Squid mit intensivem Caching ist SSD-Speicher vorteilhaft.