On Thu, 12 Sep 2002 11:43:07 +0200, Carsten Friede wrote:
Ich versuche hier einen Web-Proxy hochzuziehen, den ich auch mal komplett per Hand bzw. über CGI oder sonstwas leeren kann.
Leeren? Wozu willst du den Cache leeren? Sei froh, wenn da was drin steht :-) Du kannst squid auch als reinen Proxy ohne Cache betreiben oder nur im Hauptspeicher cachen lassen.
scheint Squid mir recht überladen an Funktionen für diese Sache. Nunja, ich werde mal mein Glück versuchen.
btw: Was sind ACLs? Was kann man damit machen bzw. wofür braucht Squid diese Dinge?
acl = access control list = Zugriffskontrolliste
Ich versuche sie mal zu erkären da die Dinger recht häufig auftreten und viel einfacher sind, als man denkt. ACLs sind ein Konzept zur Zugriffskontolle. Damit kann man Regeln aufstellen, WER (=subject oder principal) auf WAS (=object) welche Operationen ausführen darf.
Grob beschrieben funktioniert das so: 1. Die Zugreifenden, also Subjekte, werden nach bestimmten Eingenschaften gruppiert und benamst. 2. Die zu schützenden Objekte werden auch alle benamst 3. Die eigentliche ACL ist eine Liste von Tripeln aus (subject, object, operation)
Beispiel: Subjeect: Prozess, der dem Nutzer Max gehört Object: Datei /dir/passwort ACL: (Max, /dir/passwort, lesen) (Moritz, /dir/blubb, lesen+schreiben) (Max, /dir/blubb, lesen) ...
Was damit erreicht wird ist ziemlich klar denke ich mal. Windows mit NTFS regelt z.B. mit solchen ACLs den Zugriff auf die Files. Bei squid sehen die Dinger nun ein bischen anders aus, folgen aber dem gleichen Prinzip:
Erst werden ein paar Subjekte definiert: # alle Zugriffe von irgendwo bekommen den Namen 'all' acl all src 0.0.0.0/0.0.0.0
# 192.168.10.100 ist die IP vom Chef acl chef src 192.168.10.100/255.255.255.255
#Zugriffe aus dem lokalen Netz nennen wir "allowed_hosts". Das ist nur #ein Benamsung, hier wird noch nichts erlaubt! Statt allowed_hosts hätte #da also klirrbumm stehen können. acl allowed_hosts src 192.168.10.0/255.255.255.0
# Zugriffe, die übers loopback reinkommen acl localhost src 127.0.0.1/255.255.255.255
# Zugiffe auf die Domain pr0n.com alc XXX dstdomain pr0n.com
Die Objekte sind einzelne Funktionen im squid und haben fest vorgegebene Namen z.B. http_access = "per HTTP auf den proxy zugreifen" icp_access = "per ICP auf den proxy zugreifen" never_direct = "zwingend parent-cache nutzen"
Für diese Objecte wird nun festgelgt, wer darauf zugreifen darf: http_access allow chef // der Chef darf alles http_access deny XXX // die anderen nur fast :-) http_access allow localhost // vom proxy selbst ist erlaubt http_access allow allowed_hosts // von da darf man auch http_access deny all // der Rest darf nicht icp_access deny all // wir wollen kein ICP anbieten never_direct allow all // immer brav die Eltern fragen
Die Regeln werden eine nach der anderen durchgegangen, bis eine Regel paßt. Wenn also einer von 192.168.20.20 per http auf auf x.org zugreifen will, treffen die ersten 4 Regeln nicht sondern erst die 5. Somit wird der Zugriff verweigert. Verschiedene Operationen gibt es in den ACLs von squid nicht. Nur ja=allow oder nein=deny.
Das Prinzip der ACLs ist also eigentlich ganz einfach und logiscg, oder?
Neben ACLs gibts noch eine andere Methode zur Zugriffskontrolle, die Capabilities. Wenn man sich beide Methoden mal im Vergleich anschaut (google fragen) kann man beide sicherlich am schnellsteh begreifen.
Genug für heute, Reinhard