-
-
Notifications
You must be signed in to change notification settings - Fork 194
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
lighttpd htpasswd authentification #332
Comments
Danke erst einmal für den Hinweis, muss ich mir bei Gelegenheit einmal näher anschauen denn aus dem Kopf heraus fällt mir jetzt kein Grund ein warum das nicht funktionieren sollte wie du es hier beschreibst. Trotzdem jedoch der Hinweis (auch wenn du es sicher weisst) das direkte Änderungen im rootfs (d.h. In dem Falle unter /etc/lighttpd) keine gute Idee sind da sie ein Update nicht überleben. Deshalb hatte ich jedoch vor einigen Versionen die Möglichkeit geschaffen unter /usr/local/etc/lighttpd entsprechende *.conf dateien ablegen zu können die dann automatisch beim hochfahren eingebunden werden und dann auch teil eines backups sind und eben dann auch ein RaspberryMatic update überleben. Abgesehen davon wäre es natürlich im sinne des OpenSource Gedankens von RaspberryMatic schaffen könntest dein Basic-Auth Ansatz für die Absicherung des Webservers mehr zu verallgemeinen damit dieser vielleicht in einer zukünftigen Version direkt integriert werden könnte (solche prinzipiellen Plänehabe ich nämlich schon länger). Natürlich würde das z.b. notwendig machen über ein eventl lighttpd auth modul nachzudenken damit man die logindaten der WebUI dafür nutzen könnte sich zu authentifizieren. Wäre schön wenn du darüber mal nachdenken könntest. |
Hi Jens, danke für das schnelle Feedback und ebenso die Info mit der ablage über /usr/local/etc/lighttpd. Ich werde mir das mal die Tage anschauen und meine Scripte entsprechend anpassen und dir dann zur Verfügung stellen. Danach können wir das Thema gerne gemeinsam angehen, denn ich denke einen offenen Zugriff über eine API bzw. Admin-Oberflächen halte ich für sinnfrei ;) Ggf. kannst du dann auch noch "htpasswd" bzw. "apache2-utils" mit in dein Build mit rein compilen um die User/Passwort Erstellung on the fly laufen zu lassen - aktuell fehlt "htpasswd". Ebenso wäre eine automatische Generierung der auth.conf möglich, jedoch müssten dann pro AddOn der bzw. die API-Pfade in deren Config übergeben werden um so eine genereische Lösung für die Zukunft zu schaffen. Bin gespannt und gerne mit an Bord :) |
@fl0wde Wie gesagt, mein Plan ist nicht nun weitere extra Nutzeraccounts nur für die Absicherung des Webservers einzuführen. Meines Erachtens sollte man ggf. für lighttpd ein auth plugin entwickeln das die Username/Passwortdaten über die ReGaHss abträgt damit man nur über die normale WebUI die Nutzer/Passwortdaten pflegen muss und nicht manuell via htpasswd oder yet-another-addon. Sowas sollte IMHO voll integriert sein. |
@jens-maus Ich habe zudem nun auch versucht die conf files bzgl. Pfad anzupassen. Leider wird der Pfad "/usr/local/etc/lighttpd" nicht included, d.h. "meine auth.conf" nicht nicht automatisch eingelesen. Ebenso nicht, wenn ich die komplette "lighttpd.conf" in den besagten Pfad kopiere, dieser wird komplett ignoriert. Wie hast du dies denn umgesetzt, denn ich der "/etc/lighttpd/lighttpd.conf" und "/etc/lighttpd/lighttpd_ssl.conf" wird kein include vom Verzeichnis "/usr/local/etc/lighttpd" gesetzt? Bzgl. auth von HomeMatic selbst, hier gibt es folgende auth module: https://redmine.lighttpd.net/projects/1/wiki/docs_modauth. Interessant könnte hier sasl (mod_authn_sasl) (since lighttpd 1.4.48) sein. Geb doch bescheid wie du hier weiter machen möchtest ;) |
@fl0wde Tschuldigung, der richtige Pfad um eigene lighttpd config Files in das user filesystem abzulegen ist Übrigens sollte hier noch bedacht werden, das eQ3 selbst gerade an einer Absicherung arbeitet und man erst einmal IMHO abwarten sollte was daraus entsteht damit nicht etwaige Inkompatibilitäten entstehen. Mein Favorit wäre, wie ich schon vorher gesagt hatte, das man es irgendwie schafft (mittels eines eigenen auth plugins) die lighttpd authentification gegen die ReGaHss eigene Nutzerdatenbank durchzuführen und nicht via einer eigenen Userdatenbank oder ähnliches. Ob das via SASL möglich ist, müsste ich mir erst einmal anschauen. Danke aber auf jedenfall für deine Vorarbeiten. |
@jens-maus Und leider muss ich mich korrigieren, der Bug ist leider doch noch vorhanden und ich habe ihn leider übersehen. D.h. letztes funktionierendes Release mit auth ist: "RaspberryMatic 2.31.25.20180225" Kannst du dir ggf. mal ein Diff des httpdlight anschauden und derer module, was sich da geändert hat, wäre dir sehr dankbar dafür. Kann dir auch gerne einen kleinen PoC zusammen schreiben, dass du es nachvollziehen kannst ;) Danach können wir ggf. ja dann wirklich mal die Auth Sache im Ganzen anschauen und rausfinden wie wir an die ReGaHss Nutzerdatenbank kommen. |
@fl0wde Bei RaspberryMatic hat die Datei Und wenn es da doch noch Probleme gibt mir bitte mehr Detailinfos zukommen lassen da ich momentan nicht genau weiss was dein Problem ist die auth Module aufzunehmen. |
Gerne, dann hier mein kleiner PoC. Habe alle Pfade angepasst, d.h. keine Schreibrechte mehr mit extra mount nötig. /etc/config/lighttpd/auth.conf
/etc/config/lighttpd/.lighttpdpassword (pro Zeile ein User:Passwort)
-> Passwort ist immer: test
Fazit: Die 3 User sind nur exemplarisch, d.h. manche User gehen und manche nicht. Ggf. regex match oder so... und dann falsches Passwort herangezogen. Bin gespannt was dein Debug bringt. Danke :) |
Hab die Files mal in ein Repository geschoben, dann ist es ggf. einfacher für dich: |
@jens-maus Problem besteht leider auch noch mit aktueller Version "RaspberryMatic 2.35.16.20180708". Konntest du dir meinen kleinen PoC bereits ansehen? |
@fl0wde Nein, ich kam da leider noch nicht dazu. Und wie ich gesagt hatte arbeitet eh eQ3 an der direkten Integration einer solchen authentifizierungsmethode sodass ich das erst einmal damit synchronisieren muss. Da wird sich in Zukunft das Eine oder Andere dann ändern. Sobald ich aber dazu komme werde ich dein PoC mal probieren - hat aber leider wie gesagt niedrige Priorität. |
Gibt es irgendeinen Workaround? |
Ich vermute mal, dass das verwandt ist mit dem Lighttpd Fix: |
…s (see #332) and to get rid of a required bugfix patch.
@pfetzing Deine Vermutung war richtig, es liegt an der lighttpd 1.4.48 version die anscheinend einen Bug in der base64 dekodierungsfunktion hat. Habe nun für den nächsten Release auf die 1.4.50 version geupdatet und hoffe das damit das Problem beseitigt sein wird. |
Ich kann auch bestätigen, dass dieser Issue mit dem neusten RaspberryMatic 2.35.16.20180826 nicht mehr auftaucht. Ich habe soeben mit der Version http auth erfolgreich konfiguriert. |
Bitte unbedingt beachten, dass die Methode (vgl. #332) nur Port 80 (und damit die Web GUI) schützt und nicht die API (Port 2000). Diese ist trotzdem ungeschützt. |
Mit dem Release der 3.41.x firmware reihe ist dieses Ticket wohl obsolete, denn diese Firmware kommt mit einer Default Authentifizierungsmöglichkeit daher. |
Die Authentifizierung der 3.41.x greift aber nicht für Port 80 & 443 wenn ich das richtig gesehen habe oder? |
Doch, dafür greift dann die Web-Authentifizierung wenn man den AutoLogin entsprechend abgeschalten hat. Kann auch nicht erkennen warum man das anders haben wöllte. Und wenn ja, dann kann man hier einen eigenen Reverse-Proxy auch vorschalten. |
Aber nicht für die Addons wie CUxD, XMLAPI usw? Wenn man weiß wie man einen Reverse-Proxy aufsetzt kann man das, du weißt das vielleicht, ich bekomme das auch noch hin, aber viele andere nicht ;) |
Mit den Methoden die es in der 3.41.x gibt können CUxD, XMLAPI usw. nun entsprechende Methoden einbauen damit deren Webseiten auch via authentifizierung abgesichert werden. Das müssen aber momentan die Addon Entwickler selbstständig tun denn RaspberryMatic/CCU kann ja nicht wissen ob das erwünscht ist oder nicht. |
Hi Jens,
vorab vielen Dank für deine tolle Arbeit und Unterstützung im ganzen Projekt. So, nun aber zum "fehlerhaften" Part. Ich nutze aktuell (noch bzw. wieder) das Release "RaspberryMatic 2.31.25.20180225", bei welchem alles so funktioniert wie es soll.
Seit dem Update auf "RaspberryMatic 2.31.25.20180324" oder auch "RaspberryMatic 2.31.25.20180428" stimmt irgend was nicht mehr mit lighttpd und zwar konkret mit dem Authentifizierungsmodul über htpasswd.
Über den Aufruf einer geschützen Seite (z.B. XML API) gehen leider wirklich willkürlich Benutzer und Passwörter oder eben auch nicht beim Login. Ich habe diverse Kombinationen ausgetestet, leider kein logisches Muster. Ebenso wird in den Logs nichts gespeichert, nur das eben die Kobination zwischen Benutzer und Passwort nicht stimmen. Es wurden zudem die User + PW neu generiert, sowie die vorhandenen getestet... keine Chance ein Muster zu erkennen.
Beispiel:
User: test
Passwort: test
--> geht
Beispiel 2:
User: test2
Passwort: test
--> geht nicht
/etc/lighttpd/conf.d/auth.conf:
/etc/lighttpd/.lighttpdpassword:
/etc/lighttpd/lighttpd.conf: -> nur letzte Zeile hinzugefügt
/etc/lighttpd/lighttpd_ssl.conf: -> nur letzte Zeile hinzugefügt
Ggf. kannst du mal schauen was sich zwischen deinen Releases am lighttpd und auth modul selbst geändert hat. Kann gerne sonst noch Feedback geben, falls du Infos für einen PoC brauchst.
The text was updated successfully, but these errors were encountered: