Tinyproxy ist ein leichtgewichtiger, quelloffener HTTP/HTTPS-Proxyserver, der für minimalen Ressourcenverbrauch auf Linux-Systemen entwickelt wurde. Er bietet grundlegende Proxy-Funktionalität, die für eingebettete Geräte, den persönlichen Gebrauch oder kleine Netzwerkumgebungen geeignet ist, wo Ressourceneffizienz entscheidend ist.
Überblick und Anwendungsfälle
Tinyproxy priorisiert einen geringen Platzbedarf und eine einfache Konfiguration gegenüber umfangreichen Funktionen wie erweitertes Caching, umfassende Authentifizierungsmethoden oder SOCKS-Proxy-Fähigkeiten, die in größeren Proxy-Lösungen zu finden sind. Er fungiert primär als HTTP/HTTPS (CONNECT-Methode) Proxy.
Typische Anwendungsfälle für Tinyproxy sind:
- Persönlicher Proxy: Abschirmen von Client-IP-Adressen oder Umgehen grundlegender Geo-Beschränkungen für einzelne Benutzer.
- Eingebettete Systeme: Bereitstellung von Proxy-Diensten auf Geräten mit begrenzten CPU-, RAM- und Speicherressourcen.
- Entwicklungsumgebungen: Lokales Testen von Proxy-fähigen Anwendungen oder Überprüfung des Netzwerkverkehrs.
- Kleines Netzwerk-Gateway: Ein einfacher, nicht-caching-Proxy für eine begrenzte Anzahl von Clients.
- Proxy-Ketten: Fungiert als Vermittler in einer Multi-Proxy-Einrichtung.
Installation
Tinyproxy ist in den Standard-Paket-Repositories der meisten Linux-Distributionen verfügbar.
Debian/Ubuntu
sudo apt update
sudo apt install tinyproxy
RHEL/CentOS/Fedora
sudo dnf install tinyproxy
# Oder für ältere CentOS/RHEL:
# sudo yum install tinyproxy
Nach der Installation startet Tinyproxy typischerweise automatisch und lauscht auf Port 8888.
Konfiguration
Die Konfiguration von Tinyproxy wird über eine einzige Datei verwaltet, die sich typischerweise unter /etc/tinyproxy/tinyproxy.conf befindet. Alle Direktiven sind in der Standarddatei kommentiert und bieten so eine Selbstdokumentation.
Wesentliche Direktiven
-
Port: Gibt den Port an, auf dem Tinyproxy lauscht.
Port 8888
Eine Änderung erfordert einen Neustart des Tinyproxy-Dienstes. -
Listen: Bindet Tinyproxy an eine bestimmte IP-Adresse. Standardmäßig lauscht es auf allen verfügbaren Schnittstellen (0.0.0.0). Die Angabe einer Adresse schränkt den Zugriff ein.
Listen 192.168.1.10 -
Allow: Definiert IP-Adressen oder Subnetze, die sich mit dem Proxy verbinden dürfen. MehrereAllow-Direktiven können verwendet werden. Wenn keineAllow-Direktiven angegeben sind, erlaubt Tinyproxy Verbindungen von allen Hosts. Explizites Verweigern aller und anschließendes Zulassen spezifischer Bereiche ist eine gängige Sicherheitspraxis.
# Alle standardmäßig verweigern (wenn keine Allow-Direktiven vorhanden sind, ist dies implizit falsch) # Allow 127.0.0.1 # Allow 192.168.1.0/24 -
Timeout: Legt das Leerlauf-Timeout für Verbindungen in Sekunden fest.
Timeout 600 -
User/Group: Gibt den Benutzer und die Gruppe an, auf die Tinyproxy nach dem Start die Privilegien herabsetzen soll. Das Ausführen als Nicht-Root-Benutzer ist eine bewährte Sicherheitspraxis.
User tinyproxy Group tinyproxy -
LogLevel: Steuert die Ausführlichkeit der Protokollierung. Optionen umfassenCritical,Error,Warning,Notice,Info,Debug.
LogLevel Info -
LogFile: Gibt den Pfad zur Protokolldatei an.
LogFile "/var/log/tinyproxy/tinyproxy.log" -
MaxClients: Legt die maximale Anzahl gleichzeitiger Client-Verbindungen fest, die Tinyproxy verarbeiten wird. Das Überschreiten dieses Limits führt zur Ablehnung der Verbindung.
MaxClients 100 -
DisableViaHeader: Wenn aktiviert, fügt Tinyproxy keinenVia-Header zu ausgehenden Anfragen hinzu. Dies kann die Privatsphäre verbessern, indem die Offenlegung der Proxy-Präsenz verhindert wird.
DisableViaHeader Yes -
ConnectPort: Gibt an, welche Ports Tinyproxy fürCONNECT-Anfragen (für HTTPS-Tunneling verwendet) zulässt. MehrereConnectPort-Direktiven können verwendet werden.
ConnectPort 443 ConnectPort 563
Erweiterte Konfigurationsdirektiven
-
Upstream: Verbindet Tinyproxy mit einem anderen Proxyserver. Diese Direktive gibt einen Upstream-Proxy für bestimmte Domänen oder den gesamten Datenverkehr an.
```
# Verwenden Sie upstream_proxy.example.com:8080 für alle Anfragen
Upstream http upstream_proxy.example.com:8080Verwenden Sie einen anderen Upstream für bestimmte Domänen
Upstream http 10.0.0.1:3128 "example.com"
Upstream http 10.0.0.1:3128 ".example.org"
`` Das Schlüsselworthttpzeigt einen HTTP-Proxy an.Upstream`-Direktiven werden in der Reihenfolge verarbeitet; die erste Übereinstimmung gilt. -
NoCache: Verhindert, dass Tinyproxy bestimmte HTTP-Header sendet, die clientseitiges Caching verursachen könnten. Dies bedeutet nicht, dass Tinyproxy selbst einen Caching-Mechanismus hat.
NoCache -
Filter/FilterURLs/FilterBypass: Bietet grundlegende Inhaltsfilterung basierend auf regulären Ausdrücken.Filter "/etc/tinyproxy/filter.txt": Gibt eine Datei an, die reguläre Ausdrücke für zu blockierende URLs enthält.FilterURLs Yes: Aktiviert die URL-Filterung.FilterBypass "192.168.1.0/24": Ermöglicht es bestimmten Clients, die Filterung zu umgehen.
Die Datei
filter.txtwürde einen regulären Ausdruck pro Zeile enthalten. Zum Beispiel, um Facebook zu blockieren:
.*facebook\.com.*
Dies ist ein rudimentärer Filtermechanismus und kein Ersatz für dedizierte Inhaltsfilterlösungen.
Dienstverwaltung
Nach dem Ändern von tinyproxy.conf muss der Tinyproxy-Dienst neu gestartet werden, damit die Änderungen wirksam werden.
Systemd (Moderne Linux-Distributionen)
sudo systemctl restart tinyproxy
sudo systemctl enable tinyproxy # Sicherstellen, dass es beim Booten startet
sudo systemctl status tinyproxy
SysVinit (Ältere Linux-Distributionen)
sudo /etc/init.d/tinyproxy restart
sudo /etc/init.d/tinyproxy status
Testen des Proxys
Nach Konfiguration und Dienstneustart kann der Proxy getestet werden.
Verwendung von curl
curl -x http://localhost:8888 http://ipinfo.io/ip
Ersetzen Sie localhost:8888 durch die IP und den Port des Tinyproxy-Servers, wenn Sie von einem anderen Computer aus testen. Die Ausgabe sollte die öffentliche IP-Adresse des Tinyproxy-Servers widerspiegeln, nicht die des Clients.
Browser-Konfiguration
Konfigurieren Sie Ihren Webbrowser (z.B. Firefox, Chrome) so, dass er einen HTTP-Proxy unter der IP-Adresse und dem Port des Tinyproxy-Servers verwendet. Greifen Sie auf eine Website zu, um die Konnektivität zu bestätigen.
Sicherheitsüberlegungen
- Zugriffskontrolle: Beschränken Sie den Zugriff auf den Proxy immer mit der
Allow-Direktive. Standardmäßig kann Tinyproxy Verbindungen von allen Hosts zulassen, wenn keineAllow-Direktiven vorhanden sind. - Firewall: Konfigurieren Sie die Firewall Ihres Systems (z.B.
ufw,firewalld) so, dass nur eingehende Verbindungen zum Tinyproxy-Port von vertrauenswürdigen IP-Bereichen zugelassen werden.
bash # Beispiel mit ufw sudo ufw allow from 192.168.1.0/24 to any port 8888 sudo ufw enable - Nicht-Root-Benutzer: Stellen Sie sicher, dass Tinyproxy als Nicht-Root-Benutzer (
User- undGroup-Direktiven) ausgeführt wird, um potenzielle Sicherheitsrisiken zu minimieren. - Protokollierung: Überwachen Sie die Tinyproxy-Protokolle auf ungewöhnliche Aktivitäten.
DisableViaHeader: Erwägen Sie die Aktivierung für erhöhte Privatsphäre, obwohl dies keine Anonymität bietet.
Vergleich mit Squid
Tinyproxy und Squid sind beides HTTP-Proxyserver für Linux, aber sie zielen auf unterschiedliche Anwendungsfälle ab und bieten unterschiedliche Funktionssätze.
| Funktion | Tinyproxy | Squid |
|---|---|---|
| Primäres Ziel | Minimaler Ressourcenverbrauch, Einfachheit | Hohe Leistung, umfangreiche Funktionen, Caching |
| Ressourcenverbrauch | Sehr geringer CPU-/RAM-Platzbedarf | Moderater bis hoher CPU/RAM, insbesondere bei großen Caches und hohem Datenverkehr |
| Caching | Kein integriertes Caching | Umfangreiches, konfigurierbares Caching für HTTP-Objekte |
| Authentifizierung | Keine nativ | Basic, Digest, NTLM, Kerberos, externe Helfer |
| Zugriffskontrolle | IP-basiert (Allow-Direktive) |
Hochgradig granulare ACLs basierend auf IP, Domäne, URL, Benutzer, Zeit, Methoden usw. |
| Protokolle | HTTP, HTTPS (CONNECT) | HTTP, HTTPS (CONNECT), FTP, Gopher, SOCKS (Client-Seite für Upstream) |
| Transparenz | Keine transparente Proxy-Unterstützung | Volle transparente Proxy-Unterstützung |
| Komplexität | Einfache Konfiguration, wenige Direktiven | Komplexe Konfiguration, viele Direktiven, leistungsstarke Skripting-Funktionen |
| Typische Verwendung | Eingebettete Systeme, persönlicher Proxy, kleines LAN | Unternehmensnetzwerke, ISPs, große Organisationen, Inhaltsfilterung, Sicherheit |
Fehlerbehebung
- Protokolle überprüfen: Die
LogFile-Direktive gibt an, wohin Tinyproxy seine Protokolle schreibt. Erhöhen SieLogLevelaufDebugfür eine detailliertere Ausgabe während der Fehlerbehebung.
bash sudo tail -f /var/log/tinyproxy/tinyproxy.log - Dienststatus: Überprüfen Sie, ob Tinyproxy läuft, indem Sie
systemctl status tinyproxyoder/etc/init.d/tinyproxy statusverwenden. - Firewall: Bestätigen Sie, dass Ihre Firewall keine Verbindungen zum Tinyproxy-Port blockiert. Deaktivieren Sie die Firewall bei Bedarf vorübergehend zum Testen.
- Konfigurationssyntax: Überprüfen Sie
tinyproxy.confauf Syntaxfehler. Tinyproxy wird oft nicht starten oder Fehler in seinen Protokollen melden, wenn die Konfiguration fehlerhaft ist. - Netzwerkverbindung: Stellen Sie sicher, dass der Tinyproxy-Server über Netzwerkverbindung zu seinen beabsichtigten Zielen verfügt.