[.htaccess]IP-Liste aus externer Datei einbinden?
Stefan Welscher
- sonstiges
Hallo,
ich möchte bei unserem Webserver die Userverwaltung zentralisieren.
Da der Zugriff bei uns über die IP-Adresse des Clients gewährt wird haben wir eine relativ lange Liste von IPs in immer mehr Ordnern. Die Pflege dieser Listen ist somit inzwischen sehr aufwändig geworden.
Jetzt suche ich eine Möglichkeit eine zentral am Webserver abgelegte Datei in die Einzelnen .htaccess-Files einzubinden (wie include bei php). Weiß jemand wie ich das hinbekomme?
Danke! Stefan
Moin!
ich möchte bei unserem Webserver die Userverwaltung zentralisieren.
Da der Zugriff bei uns über die IP-Adresse des Clients gewährt wird haben wir eine relativ lange Liste von IPs in immer mehr Ordnern. Die Pflege dieser Listen ist somit inzwischen sehr aufwändig geworden.Jetzt suche ich eine Möglichkeit eine zentral am Webserver abgelegte Datei in die Einzelnen .htaccess-Files einzubinden (wie include bei php). Weiß jemand wie ich das hinbekomme?
Deine Beschreibung ist leider noch nicht so konkret, wie ich es mir wünschen würde - außerdem geben die gegebenen Informationen Anlaß zur Spekulation, ob das, was du da produziert hast, wirklich sicher ist, oder mit Leichtigkeit umgangen werden könnte.
.htaccess kennt keinen Include-Befehl. Diesbezügliche Versuche sind also sinnlos. Gewöhnlich verwendet man eine zentrale Passwortdatei und ggf. auch noch eine zentrale Gruppendatei, auf welche in den einzelnen Verzeichnissen dann verwiesen wird - auf diese Weise kann man den Zugriff auf ein Verzeichnis nur für in der Passwortdatei registrierte Benutzer erlauben, oder nur für eine bestimmte Gruppe von Benutzern, oder nur für ganz bestimmte Benutzer. Es wird aber zwingend ein Passwort verlangt.
Da du aber die IP-Adresse als Kriterium verwenden willst, frage ich dich: Im Internet oder im Intranet?
Im Internet mag es ja vielleicht noch vernünftig sein, sofern wirklich alle Benutzer eine feste IP-Adresse haben, jeder, der durch diese IP zugreifen kann, das auch darf, und alle zu blöd sind, sich einen Benutzernamen und Passwort zu merken.
Im Intranet hingegen wäre diese Methode absolut kein Problem, da man an seinem eigenen Rechner die IP-Adresse grundsätzlich beliebig verstellen kann auf die Adressen, welchen der Zugriff erlaubt ist, und es würde wahrscheinlich niemandem auffallen - zumindest dann nicht, wenn der Originalrechner zu dem Zeitpunkt ausgeschaltet ist.
Trotzdem dürfte es eine Lösung geben. Du kannst zentral im Hauptverzeichnis die IP-Liste in der .htaccess verwalten und setzt bei erlaubtem Zugriff eine Environment-Variable:
http://httpd.apache.org/docs-2.0/mod/mod_setenvif.html#setenvif
SetEnvIf Remote_Addr "192\.168\.123\.45" let_me_in
SetEnvIf Remote_Addr "10\.0\.0\.23" let_me_in
# ... und so weiter für jede IP
Achte darauf, dass der Suchausdruck in Anführungszeichen ein regulärer Ausdruck ist, gewisse Zeichen wie Punkte haben normalerweise Sonderbedeutung und müssen zwingend escaped werden, wenn sie als tatsächliches Zeichen gelten sollen.
In jedem einzelnen Verzeichnis kannst du dann mit
Oder Allow,Deny
Allow from env=let_me_in
Wenn du je IP mehrere Zeilen mit unterschiedlichen Environment-Variablen setzt, kannst du auch Zugriffsbereiche realisieren, indem der eine Bereich z.B. die Existenz von "nur_angestellte" und der zweite Bereich die Existenz von "nur_chefs" prüft.
Danke erstmal für diese ausführliche Antwort!
Da du aber die IP-Adresse als Kriterium verwenden willst, frage ich dich: Im Internet oder im Intranet?
Ich befinde mich im Intranet und die User haben keine Berechtigung ihre IP zu ändern.
Trotzdem dürfte es eine Lösung geben. Du kannst zentral im Hauptverzeichnis die IP-Liste in der .htaccess verwalten und setzt bei erlaubtem Zugriff eine Environment-Variable
OK, das klingt erstmal ganz gut. 3 Fragen wären da aber noch offen:
1. Braucht die Datei ein spezielles Format (z.B. noch Authtype etc. im "Header"), oder kann ich gleich mit dem Variablensetzten anfangen?
2. In welchem Verzeichnis soll ich die Datei ablegen? Ich vermute mal ServerRoot?
Wenn du je IP mehrere Zeilen mit unterschiedlichen Environment-Variablen setzt, kannst du auch Zugriffsbereiche realisieren, indem der eine Bereich z.B. die Existenz von "nur_angestellte" und der zweite Bereich die Existenz von "nur_chefs" prüft.
Ja das werd ich probieren :) Thx!
Moin!
Da du aber die IP-Adresse als Kriterium verwenden willst, frage ich dich: Im Internet oder im Intranet?
Ich befinde mich im Intranet und die User haben keine Berechtigung ihre IP zu ändern.
Wer hindert sie daran?
Im Zweifel ist ein eigener Laptop schnell angeschlossen, auch wenn die bestehenden Computer eventuell keine Möglichkeit bieten, die Konfiguration zu verändern.
OK, das klingt erstmal ganz gut. 3 Fragen wären da aber noch offen:
- Braucht die Datei ein spezielles Format (z.B. noch Authtype etc. im "Header"), oder kann ich gleich mit dem Variablensetzten anfangen?
Es handelt sich um eine ganz normale .htaccess-Datei, die genauso beginnt, wie jede andere .htaccess-Datei.
AuthType ist sinnlos, weil es sich um keine Authentifizierung handelt - das ist ein vollkommen anderes Themengebiet, und von dir ja nicht gewünscht, da der Zugriff ja über IP gehen soll.
- In welchem Verzeichnis soll ich die Datei ablegen? Ich vermute mal ServerRoot?
Die Definition der IPs kommt ins Root-Verzeichnis. Die Kontrolle des Zugriffs in die Unterverzeichnisse. Sofern das Hauptverzeichnis auch nicht von jedermann gesehen werden darf, ergänzt du die Order- und Allow-Direktiven dort auch.
Wo ist Frage Nummer drei?
Ich befinde mich im Intranet und die User haben keine Berechtigung ihre IP zu ändern.
Wer hindert sie daran?
Windows NT :ugly:
Im Zweifel ist ein eigener Laptop schnell angeschlossen, auch wenn die bestehenden Computer eventuell keine Möglichkeit bieten, die Konfiguration zu verändern.
Geht nicht, weil dich de Port am Switch sperrt, sobald sich na andere MAC connected
Danke für die ganzen Tipps, hab`s jetzt alles fertig eingerichtet und scheint prima zu klappen!
Wo ist Frage Nummer drei?
Wart mal kurz.. aja.. die is gut.... :
Kann ich die IPs auch irgendwie aus ner db (enthält aber nur einen teil der ips, die freigegeben werden) beziehen :ugly:
Das wär die Krönung des Ganzen :)
Nochmal vielen Dank,
Stefan
Hallo!
Im Zweifel ist ein eigener Laptop schnell angeschlossen, auch wenn die bestehenden Computer eventuell keine Möglichkeit bieten, die Konfiguration zu verändern.
Geht nicht, weil dich de Port am Switch sperrt, sobald sich na andere MAC connected
Dann nimmt man eben eine Karte wo man die MAC anpassen kann.
Grüße
Andreas