[HowTo]Tinyproxy auf der DS

Status
Für weitere Antworten geschlossen.

der_Typ

Benutzer
Mitglied seit
01. Nov 2010
Beiträge
43
Punkte für Reaktionen
0
Punkte
0
Da ich mich in letzter Zeit etwas mit der Verwendung der DS als Proxy befasst habe möchte ich hier ein kleines Tutorial für Tinyproxy ablegen. Ich hatte zuerst Squid auf der DS laufen da es dafür gute Anleitungen gab, leider verhindert Squid, dass sich die Festplatte schlafen legt und deswegen bin ich jetzt bei Tinyproxy gelandet. Leider gibt es für Tinyproxy keine richtigen Tutorials und deswegen möchte ich das gerne zum Anlass nehmen selbst eines zu Schreiben. Da es sich hierbei um mein erstes Tutorial handelt möchte ich um etwas Nachsicht und konstruktive Kritik bitten.

Wie installiere ich Tinyproxy auf der DS (in meinem Fall eine DS111):

Voraussetzungen:
  • Installiertes IPKG
  • Terminal-Zugriff auf die DS

1. IPKG Paket installieren:
Dazu in das geöffnete Terminal mit dem root-User
Rich (BBCode):
ipkg install tinyproxy
eingeben. Leider ist die Version im IPKG realtiv alt: 1.6... ,aktuell wäre 1.8..., ist aber für die meisten Zwecke trotzdem ausreichend.

2. Startup Script erstellen
Da die IPKG-Installation kein eigenes start-stop-Script enthält muss selbst eines erstellt werden. Dazu im Editor eurer Wahl (Ich verwende gerne Nano) folgen Code unter /opt/etc/init.d/S80tinyproxy speichern.
#!/bin/sh

TINYD="/opt/sbin/tinyproxy"

case $1 in
start)
echo "Starting tinyproxy"
${TINYD} >/dev/null 2>&1
echo "done"
;;
stop)
PID=`cat /var/run/tinyproxy.pid`
`kill ${PID}`
echo "Stopping tinyproxy ${PID}"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usages: $0 [start|stop|restart]"
;;
esac

3. Tinyproxy Konfiguration anpassen
Als letzten Schritt muss noch die tinyproxy.conf angepasst werden.
Diese findet man unter /opt/etc/tinyproxy/tinyproxy.conf
Folgende Zeilen habe ich geändert:
#
# Name of the user the tinyproxy daemon should switch to after the port
# has been bound.
#
User admin ///Hier einen User eintragen der auf der DS vorhanden ist (zb. Admin)
Group users ///Hier die entsprechende Gruppe eintragen

#
# Port to listen on.
#
Port xxxx ///Den gewünschten Port eintragen

#
# This is the absolute highest number of threads which will be created. In
# other words, only MaxClients number of clients can be connected at the
# same time.
#
MaxClients 10 ///Hier die maximal erwünschten User eintragen

#
# The following is the authorization controls. If there are any access
# control keywords then the default action is to DENY. Otherwise, the
# default action is ALLOW.
#
# Also the order of the controls are important. The incoming connections
# are tested against the controls based on order.
#
#Allow 127.0.0.1 /// Hier kann eine Zugriffsberechtigung für betimmte IPs bzw IP-Ranges vergeben werden
#Allow 192.168.1.0/25 /// Ich habe alles auskommentiert, dass entspricht einem Allow all


#
# The "Via" header is required by the HTTP RFC, but using the real host name
# is a security concern. If the following directive is enabled, the string
# supplied will be used as the host name in the Via header; otherwise, the
# server's host name will be used.
#
ViaProxyName "tinyproxy" ///Hier den gewünschten Servernamen angeben (wird zb. für die Error-Messages verwendet)
4. Firewall der DS anpassen
Falls Ihr die Firewall auf der DS aktiviert habt müsst Ihr natürlich noch den entsprechenden Port freigeben. Das gilt auch für Router-Firewalls.

5. Testlauf
Nun könnt Ihr eure DS neustarten und dann sollte der Tinyproxy laufen. Überprüfen kann man das entweder im Terminal mit
oder man versucht einfach mal die lokale IP der DS und den entsprechenden Port als Proxy im Browser einzustellen.
Falls der Proxy nicht starten sollte kann man versuchen über die Konsole mit
in den Debug-Mode zu wechseln um eventuell auftretende Fehler zu erkennen.
 
Zuletzt bearbeitet:

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.017
Punkte für Reaktionen
272
Punkte
393
Hallo,
sehr schön und vielen Dank. Eine Anmerkung hätte ich wegen dem Startscript.
Wenn Du als erste Zeile
Rich (BBCode):
#!/bin/sh
einfügst, kann man das Script auch "freihändig" mit den Parametern testen (Shebang).

Gruß Götz
 

_TokTok_

Benutzer
Mitglied seit
18. Nov 2007
Beiträge
1.310
Punkte für Reaktionen
0
Punkte
0
Super, vielen Dank für das Tutorial! Habs mir noch nicht im Detail angesehen, könnte aber auch bei mir zum Einsatz kommen. Ich denke das ist für viele interessant, möchtest Du vll. das Tutorial in unser Wiki verschieben? Dort ist es sicherlich gut aufgehoben.

Ich fände einen Hinweis zu Deinem konkreten Einsatzzweck noch sehr schön
 

der_Typ

Benutzer
Mitglied seit
01. Nov 2010
Beiträge
43
Punkte für Reaktionen
0
Punkte
0
Danke für den Hinweis hab das Script editiert.

Leider hab ich noch nie einen Wikieintrag erstellt und hab auch wenig Ahnung davon.
Wenn es dir nicht zu viele Umstände macht, würde ich dich gerne darum bitten die Anleitung ins Wiki zu stellen.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Mal ne blöde Frage, was macht man jetzt mit dem tinyproxy auf der DS genau? Kann wer mal einen Anwendungsfall beschreiben und die dazugehörige Konfiguration?

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hy, kann dir das mal anbieten.

-> deutsch <-
-> englisch <-


gruß
denon
Dann aber sicher englisch. Wobei DE ist auch ganz lustig zu lesen
  • Anonymer Modus: Erlaubt Ihnen, zu spezifizieren, welche HTTP überschriften durch erlaubt werden sollten und welches blockiert werden sollte - dieses Ihnen erlaubt, beide einzuschränken, welche Daten zu Ihrem web browser vom HTTP Bediener (z.B., Plätzchen) kommen, und einschränken, welche Daten durch von Ihrem web browser zum HTTP Bediener erlaubt werden (z.B., Version Informationen).
  • Leicht geändert: Wenn Sie schauen, um eine kundenspezifische Netzvollmacht zu errichten, ist tinyproxy sehr einfach, zu Ihren kundenspezifischen Notwendigkeiten zu ändern - die Quelle ist direkt und befolgt die KUSS-Grundregel. Als solcher, kann es als Grundlage für alles verwendet werden, das Sie eine Netzvollmacht benötigen können zu tun (senden Sie Flecken!)
  • Remoteüberwachung: Mit der Remoteüberwachung Funktion können Sie Vollmachtstatistiken von fern zugänglich machen und Sie informieren genau, wie beschäftigt die Vollmacht ist.
  • Last Durchschnitt überwachung: tinyproxy kann zusammengebaut werden, um den Last Durchschnitt auf den meisten Plattformen aufzupassen und fängt an, Anträge abzulehnen, wenn die Last einen bestimmten Punkt erreicht - Sie können diese Eigenschaft vom sendmail erkennen.
  • Zugriffssteuerung: Sie können tinyproxy zusammenbauen, um Anträge von einem bestimmten Teilnetze oder von einer bestimmten Schnittstelle nur zu erlauben, Ihnen so erlaubend, gelegentliches das sicherzugehen, werden nicht autorisierte Leute nicht Ihre Vollmacht verwenden.
  • Sicher: Mit ein wenig Konfiguration (spezifisch, die Maschinenbordbuchakte bildend besessen von niemandem und lassen sie auf Port >1024) laufen, kann tinyproxy gebildet werden, um ohne irgendwelche speziellen Privilegien zu laufen und die Wahrscheinlichkeit des System Kompromisses so herabsetzen. Ausserdem war es mit einem Auge in Richtung zum Verhindern von Pufferüberlauf entworfen. Die Einfachheit des Codes stellt ihn bleibt einfach, solche Wanzen zu beschmutzen sicher.
  • Kleiner Abdruck: Wie oben erwähnt, erfordert tinyproxy sehr wenig in der Weise der System Betriebsmittel - der Gedächtnisabdruck neigt, um 2MB mit glibc zu sein, und die CPU Last erhöht sich linear mit der Zahl simultanen Anschlüssen (abhängig von der Geschwindigkeit des Anschlußes). So kann tinyproxy auf Reserven, ältere Maschine oder sogar eine Workstation, ohne irgendeine wahrnehmbare Auswirkung auf Leistung laufen gelassen werden.
Besser nicht übersetzen als so übersetzen :D Genial finde ich die Plätzchen und die KUSS-Regel LOL
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Mal ne blöde Frage, was macht man jetzt mit dem tinyproxy auf der DS genau? Kann wer mal einen Anwendungsfall beschreiben und die dazugehörige Konfiguration?

Itari

Also ich bin schon groß ;) und kann googeln.

Nee - meine Frage ist echt und mich würde interessieren, wofür der tinyproxy auf der DS eingesetzt wird. Also eine Skizze eines Anwendungsfalles ... was soll/wird damit genau gemacht ... welches Problem ist z.B. nicht per Apache(-Proxy) zu lösen, so dass der tinyproxy jetzt eingesetzt wird.

Ich denke, wenn jemand in unserem Wiki sich die Seite anschaut, dann könnte ein Beispiel auch eine wichtige Info sein.

Itari
 

_TokTok_

Benutzer
Mitglied seit
18. Nov 2007
Beiträge
1.310
Punkte für Reaktionen
0
Punkte
0
Wusste gar nicht, dass sowas mit dem Apache auch geht, die Info ist nicht uninteressant. Würde mich über einen Erfahrungsbericht freuen!
Ich komm aber noch nicht dahinter wo Du Informationsbedarf hast, itari. Der Anwendungsfall für einen Proxy dürfte klar sein. Zwingend auf der DS muss der natürlich genauso wenig laufen wie vermutlich 90% der Erweiterungen aus dem Wiki. Aber da eine DS halt oft 24/7 läuft, ist die Idee auch nicht abwegig.
Lass uns doch darüber freuen, dass sich jmd. die Mühe macht so ein HowTo zu schreiben. Dass ein Bedarf da ist, sieht man vll. daran, dass konkret nach diesem Proxy bereits im Forum gefragt wurde.
Wenn jetzt noch die Zusatzinfo mit dem Apache(-Proxy) ins Wiki wandert, ist die Sache doch wunderbar, oder?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
@_toktok_

Also wenn das jetzt herüber kommt, dass ich was gegen den Beitrag oder gegen den Proxy hab, dann ist das falsch. In dem verlinkten Beitrag steht leider auch nicht geanu drin, wofür der Proxy eigentlich gebraucht wird. Vielleicht kann man die Idee und eventuelle Konfiguration anschauen. Wenn z.B. der Einsatzzweck darin besteht, 2 DSen über einen Router nach draußen ins Web zu bringen, und man dann die 2. DS via Proxy über die 1. DS einbindet, dann wäre doch ein kleines Szenario, wie das konfiguriert worden ist, recht nett. Und ich könnte mir noch eine Reihe weiterer Anwendungsfälle (load-balancing, besserer Durchsatz) vorstellen, deswegen ist der Einsatzzweck für mich überhaupt nicht klar.

Itari
 
Zuletzt bearbeitet:

_TokTok_

Benutzer
Mitglied seit
18. Nov 2007
Beiträge
1.310
Punkte für Reaktionen
0
Punkte
0
Solche Szenarios muss man entwickeln und da sind eine Reihe spannender Dinge denkbar. Vll. war die Intention hier aber viel trivialer und es ging nur um einen "primitiven" Proxy der so funktioniert wie Proxies eben funktionieren sollen.
Ich hatte mal die Idee, Bandbreite mit sowas zu limitieren, hab mich aber noch nich genauer damit auseinandergesetzt ob das tinyproxy hinkriegt. Squid soll das ja können...
 

amarthius

Super-Moderator
Teammitglied
Mitglied seit
03. Jun 2009
Beiträge
6.812
Punkte für Reaktionen
33
Punkte
174
Für User die sich damit auskennen mag sofort klar sein wofür man einen Proxy benötigt.

Für mich ist ein Proxy eigentlich nur ein Dienst, über den man Surfen kann und dies mit möglichen Regeln einschränken kann.

Kann ich auf der Arbeit den Proxy in meinen Proxy eintragen und dann darüber surfen?

Dinge wie "Bandbreiten Limitierung" oder auch das "Verbinden von 2 DS" per Proxy sind mir neu :)

Ich denke das wollte itari damit auch ausdrücken.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@TokTok
das Thema mod_proxy hatten wir sicher schon mehrfach hier im Forum. Für kleine Sachen perfekt geeignet. allerdings würde ich damit keinen zugriff auf den DSM versuchen, da würde ich schon einen echten proxy nutzen (v.a. wegen der Authentifizierung). Meist gehen nur GET Requests ohne Probleme, sobald du auch POST Requests nutzen willst, wird mod_proxy_http nötig.
Zusätzlich musst du den Zugriff darauf gut absichern, sonst hast du ganz schnell dein ganzes LAN ins Internet gestellt (Reverse Proxy) :)
Ich nutze mod_proxy nur wenn ich eine Seite im Client haben will, die nicht direkt erreichbar ist (z.B. weil sie auf dem Mailserver läuft und nicht auf dem Webserver)
Dann kann man "ganz einfach" auf dem Webserver eine htaccess in den DocumentRoot legen und dann mittels mod_rewrite den Proxy Request auslösen
Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^private.mydomain.tld$
RewriteRule ^(.*)$ http://privaterHost/$1 [P]
obiges würde jeden Request auf private.mydomain.tld auf privaterHost umschreiben und dabei den Requests 1:1 an privaterHost weiterreichen.
Setzt natürlich voraus, dass mod_proxy in der Hauptkonfig des Apache auch geladen wird und der Name privaterHost in deinem lokalen DNS auch aufgelöst werden kann. Also entweder ein eigener DNS Server oder ein Eintrag in /etc/hosts des Webservers

Gruss

tobi
 

der_Typ

Benutzer
Mitglied seit
01. Nov 2010
Beiträge
43
Punkte für Reaktionen
0
Punkte
0
Nochmal kurz zu meinem persönlichen Einsatzzweck für den Proxy:
Ich verwende den als ganz trivialen Proxy um von der Schule aus auf die FileStation bzw. meine WebDAV Freigabe zu zugreifen, da in der Schule alle Ports außer 80,443,22,21 gesperrt sind horcht der Proxy auf Port 21 und das wars auch schon ziemlich. Warum jetzt genau Tinyproxy und nicht Squid, ganz einfach weil Squid den Ruhezustand der DS verhindert, liegt evtl an der Konfig allerdings hatte ich wenig Lust mich durch 10 Seiten Konfig-File zu hangeln. Ich denke auch, dass Squid eher für nicht ganz so Triviale Dienste gedacht ist (Load-Balancing, usw.).

Ich hoffe das hat dem einen oder anderen weiter geholfen.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Und wieso ned Port 443 auf den 9001 der DS umbiegen? Also am Router? Dann hast du verschlüsselten Zugriff auf deine Daten (Filestation) und gehst nicht das Riskio ein bei einer Fehlkonfig des Proxys (und das kann schnell gehen) dein ganzen LAN zu öffnen.
 

der_Typ

Benutzer
Mitglied seit
01. Nov 2010
Beiträge
43
Punkte für Reaktionen
0
Punkte
0
Und wieso ned Port 443 auf den 9001 der DS umbiegen? Also am Router?
Ganz einfach weil mein toller Router das nicht kann ^^.
Und wegen der Fehlkonfiguration hatte ich mir bei Squid mehr Sorgen gemacht als hier beim Tiny, da es doch nur einige wichtige Direktiven gibt beim Tiny. Hier gibts eine komplette Liste mit allen Konfig-Commands. Ich denke, dass mit ein bisschen Hausverstand und rudimentären Englisch-Kenntnissen eine Fehlkonfiguration eher unwahrscheinlich ist, außer du wüsstest hier einige Möglichkeiten wie man solche Löcher (Lan freigeben, usw.) schaffen könnte (wäre sehr dankbar für solche Hinweise).
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ein von aussen erreichbarer Proxy ist immer ein Risiko. Grundsätzlich kann der Proxy auf jede Ressource im LAN zugreifen, ausser du verbietest bestimmte Zugriffe (blacklist) oder erlaubst nur bestimmte (whitelist). Man könnte also z.B. mal probieren eine Verbindung zu deinem Proxy aufzubauen und als Ziel die LAN IP deines Routers anzugeben. Wenn der Proxy IP Zugriffe nicht verbietet (zumindest für LAN-IPs), dann kann man versuchen sich an deinem Router anzumelden (wohlgemerkt an der LAN Schnittstelle). Dann könnte man probieren ob mal andere Ports erreichen kann.
Bei Proxies gibt es zwei verschiedene "Arten": Forward und Reverse proxies. Erstere sind eher unproblematisch, denn sie leiten Zugriffe von innen nach aussen. Letztere hingegen leiten Verbindungen von aussen nach innen weiter und sind daher eher ein Risiko. Du musst also mindestens ein starkes PW auf den Proxy Zugang setzen. Ausserdem wäre es von Vorteil nur bestimmte Verbindungen zuzulassen und alles andere rigoros zu blocken
 

der_Typ

Benutzer
Mitglied seit
01. Nov 2010
Beiträge
43
Punkte für Reaktionen
0
Punkte
0
Soweit ich das verstanden hab arbeitet der Tiny grundsätzlich nur als Forward-Proxy außer man sagt es ihm explizit. Und in der Konfig ganz unten werden die Ports definiert welche die CONNECT Methode verwenden darf. Also hoffe ich doch zumindest halbwegs sicher unterwegs zu sein.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Danke für die letzten Beiträge, denn nun ist doch ein wenig Licht auf die Aufgaben-/Problemstellung geworfen worden.

Itari
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat