[Gelöst] FreeRadius User über Edit file bearbeiten



  • Hey :),

    ich habe ein pfSense mit FreeRadius am laufen.
    Alle Einstellungen sind getestet und funktionieren wie gewünscht.

    Nun ist es so, dass ich rund 120 User angelegt habe, und deren Attribute sich öfters mal ändern.
    Z.B. sollen alle User diese Woche von 08-23 Uhr ins Internet können.
    In 2 Wochen kann es jedoch wieder sein, dass diese nur von 11-23 Uhr ins Internet dürfen.

    Nun habe ich leider nicht die Zeit jedesmal 3 Stunden jeden einzelnen User anzupassen.

    Also habe ich schon mal testweise den ersten User wie gewünscht geändert,
    die Datei "/usr/pbi/freeradius-i386/etc/raddb/users" über den Menüpunkt Diagnostics-Command Prompt heruntergeladen
    und mit Notepad++ und einem Makro alle anderen über "copy/paste" ebenfalls angeglichen.

    Daraufhin habe ich die geänderte Datei auf gleichem Weg wieder hochgeladen und vom /tmp-Ordner nach /usr/pbi/freeradius-i386/etc/raddb/ gemoved
    und somit überschrieben.

    Wenn ich die Datei nun geöffnet habe sind alle Änderungen wie gewünscht übernommen.
    Im GUI unter Freeradius ist davon leider nichts zu sehen und bei einem Neustart sind alle Änderungen verschwunden :-\

    Habe ich irgendetwas übersehen?

    Mit freundlichen Grüßen
    NoiR



  • @NoiR:

    Also habe ich schon mal testweise den ersten User wie gewünscht geändert,
    die Datei "/usr/pbi/freeradius-i386/etc/raddb/users" über den Menüpunkt Diagnostics-Command Prompt heruntergeladen
    und mit Notepad++ und einem Makro alle anderen über "copy/paste" ebenfalls angeglichen.

    Daraufhin habe ich die geänderte Datei auf gleichem Weg wieder hochgeladen und vom /tmp-Ordner nach /usr/pbi/freeradius-i386/etc/raddb/ gemoved
    und somit überschrieben.

    Wenn ich die Datei nun geöffnet habe sind alle Änderungen wie gewünscht übernommen.
    Im GUI unter Freeradius ist davon leider nichts zu sehen und bei einem Neustart sind alle Änderungen verschwunden :-\

    Habe ich irgendetwas übersehen?

    Soweit ich das mitbekommen habe,mied von der GUI immer das XML File (die eigentliche config.xml von pfSense) eingelesen und dann auch wieder zurück geschrieben.
    Da mich das auch immer wieder getroffen hat, bin ich recht schnell auf ein MySQL Backend umgestiegen.

    Löst sicher dein Problem nicht! Versuche mal die config.xml zu editieren und dann einen reload zu machen. Das könntest du ggf. Per Webcalls automatisieren.
    Vorab würde ich es aber mal im kleinen testen.



  • Soweit ich das mitbekommen habe,mied von der GUI immer das XML File (die eigentliche config.xml von pfSense) eingelesen und dann auch wieder zurück geschrieben.
    Da mich das auch immer wieder getroffen hat, bin ich recht schnell auf ein MySQL Backend umgestiegen.

    Löst sicher dein Problem nicht! Versuche mal die config.xml zu editieren und dann einen reload zu machen. Das könntest du ggf. Per Webcalls automatisieren.
    Vorab würde ich es aber mal im kleinen testen.

    Hmmh ich würde ungern auf MySQL wechseln…
    Könntest du mir denn noch sagen wo diese config.xml ist und was ich da ändern müsste? Oder sind da auch nur die Userdaten drin, die ich wie in der user-Datei anpassen muss?

    Gruß
    NoiR



  • @NoiR:

    Hmmh ich würde ungern auf MySQL wechseln…
    Könntest du mir denn noch sagen wo diese config.xml ist und was ich da ändern müsste? Oder sind da auch nur die Userdaten drin, die ich wie in der user-Datei anpassen muss?

    Schau mal hier: /cf/conf/config.xml
    Ist ein plain XML File!

    Da findest du folgenden Teil:

                    <freeradius>
                            <config>
                                    <sortable></sortable></config></freeradius>
    

    Ein User sieht so aus:

                            <config><sortable><varusersusername>test</varusersusername>
                                    <varuserspassword>Test1234</varuserspassword>
                                    <varuserspasswordencryption>Cleartext-Password</varuserspasswordencryption>
                                    <varusersmotpenable><varusersmotpinitsecret><varusersmotppin><varusersmotpoffset><varuserssimultaneousconnect><varuserswisprredirectionurl><description><varusersframedipaddress><varusersframedipnetmask><varusersframedroute><varusersvlanid>20</varusersvlanid>
                                    <varusersexpiration><varuserssessiontimeout><varuserslogintime>Wk0855-2305,Sa,Su2230-0230</varuserslogintime>
                                    <varusersamountoftime>120</varusersamountoftime>
                                    <varuserspointoftime>Daily</varuserspointoftime>
                                    <varusersmaxtotaloctets><varusersmaxtotaloctetstimerange>daily</varusersmaxtotaloctetstimerange>
                                    <varusersmaxbandwidthdown>2048</varusersmaxbandwidthdown>
                                    <varusersmaxbandwidthup>512</varusersmaxbandwidthup>
                                    <varusersacctinteriminterval>600</varusersacctinteriminterval>
                                    <varuserstopadditionaloptions><varuserscheckitemsadditionaloptions><varusersreplyitemsadditionaloptions></varusersreplyitemsadditionaloptions></varuserscheckitemsadditionaloptions></varuserstopadditionaloptions></varusersmaxtotaloctets></varuserssessiontimeout></varusersexpiration></varusersframedroute></varusersframedipnetmask></varusersframedipaddress></description></varuserswisprredirectionurl></varuserssimultaneousconnect></varusersmotpoffset></varusersmotppin></varusersmotpinitsecret></varusersmotpenable></sortable></config> 
    

    Der Teil der dich besonders interessiert:

    <varuserslogintime>Wk0855-2305,Sa,Su2230-0230</varuserslogintime>
    

    Aber das direkte editieren von der Config ist immer mit Vorsicht zu machen!
    Alles was du hier reinschreibst ist dann auch auf deiner pfSense aktiv!
    Achte also genau darauf was du machst und das du immer das letzte File hast.

    Damit ist folgendes gemeint:
    Wenn du dir um 12 das File ziehst und um um 13 Uhr einen Change im GUI machst (Eine Firewall Rule, oder was auch immer) und das geänderte File um 14 Uhr hochlädst ist dein Change weg!

    Alternativ kannst du mit DIFF arbeite, wenn dein Editor das hergibt (Sorry, ich bin Mac/Unix Mensch, kenne mich mit Editoren nicht so aus)

    P.S.: Ich habe noch nie versucht wie das mit Vouchern aussieht! Teste das besser bevor du da zu viel machst…



  • Vielen vielen Dank,

    Nach dem hochladen der Datei: Einmal im Edit-File aufrufen und speichern.

    Genau das habe ich gesucht und es funktioniert einwandfrei :).

    Wer nach einem Programm zum bearbeiten von großen Config-Dateien sucht:
    Notepad++ kann via Makros ganze Dokumente ändern, bestimmte Texte vor bestimmten texten einsetzen
    und sogar bestimmte Texte durch andere ersetzen.

    Tutorials: https://hpv.leo.uberspace.de/wordpress/notepad-makros-demystifiziert/

    Gruß
    NoiR

    -CLOSED-


  • Moderator

    Hi Noir,

    was du da machst ist mit Feuer zu spielen. Die direkte pfSense Config jedes Mal wegen Änderungen bei den Usern per Hand zu editieren und wieder einzuspielen ist definitiv ein Rezept dafür, irgendwann mal ganz böse auf die Nase zu fallen. Gerade dann wenn du mal nicht derjenige bist, der die Änderungen macht oder außer dir jemand einen Change bei der Firewall tätigt während du am User-editieren bist.

    Hier hat JH definitiv recht damit, dass dafür ein anderes Backend besser geeignet ist. Gerade dafür wäre bspw. MySQL wesentlich einfacher, wenn du Massen-Edits an Usern vornimmt (bspw. set logintime=Wk0855-2305 where user_id > 0 and user_id < 100 and logintime=Wk1055-2305). Genau dann bohrt man nicht auf der pfSense Konfiguration herum, sondern ändert nur dort etwas, wo man es machen muss.

    Natürlich schön, dass es erstmal für dich funktioniert, ich würde dir trotzdem in diesem speziellen Setup dazu raten, das eher früher als später anders zu lösen. Häufig manuell die config.xml zu ändern ist kein guter Weg.

    Grüße
    Jens



  • @NoiR:

    Genau das habe ich gesucht und es funktioniert einwandfrei :).

    Sehr schön!

    Aber wie ich geschrieben habe (Und Jens hat nicht ohne Grund darauf hingewiesen): Das direkte Editieren der Config ist ein echter Quick Hack.
    Ich persönlich kann dir wirklich nur davon abraten das als dauerhafte Lösung so zu machen. Früher oder später wirst du damit Probleme bekommen, fürchte ich.

    Aber es freut mich wenn ich dir helfen konnte :)



  • Hmmh :-\

    Gerade dann wenn du mal nicht derjenige bist, der die Änderungen macht oder außer dir jemand einen Change bei der Firewall tätigt während du am User-editieren bist.

    Ich bin defninitv der Einzige, der darauf zugreift, was auch beinhaltet, dass keiner gleichzeitig Änderungen an der Firewall vornehmen kann.

    Was spricht denn genau dagegen das die config zu ändern?
    Eigentlich nur falsche Einträge oder?
    Solange die Datei richtig hochgeladen wird, kann doch nichts passieren … ?  :o



  • @NoiR:

    Was spricht denn genau dagegen das die config zu ändern?
    Eigentlich nur falsche Einträge oder?
    Solange die Datei richtig hochgeladen wird, kann doch nichts passieren … ?  :o

    Grundsätzlich spricht dagegen, dass du etwas tust das nicht unterstützt (Supported) ist.
    Solange alles funktioniert ist auch alles gut. Hast du Probleme (Egal welche) musst du diese dann aber auch selbst lösen.

    Ist quasi wie beim Auto: Wenn du etwas veränderst das die Zulassung betrifft, kann deine Versicherung eine Zahlung im Schadensfall verweigern.

    Ist eben "Help-Yourself" ab dem Moment in dem du das machst.


  • Moderator

    Grundsätzlich spricht dagegen, dass du etwas tust das nicht unterstützt (Supported) ist.

    Nicht nur das, was JH sagt, sondern du gehst somit auch Gefahr nach einem Update wieder "deine" Version der Konfiguration hochzuladen, die vllt nicht mehr unterstützt wird. Das Config.XML Schema bspw. darf/kann sich jederzeit ändern, sollten bspw. Funktionien o.ä. hinzukommen. Das heißt, du hast hier keinen automatischen Prozess, sondern etwas wo du ständig Hand anlegen musst.

    Wenn du solche direkten Änderungen im Radius brauchst, den die pfSense mit der simplen GUI nicht abbilden kann, dann solltest du drüber nachdenken (bei 120 Usern ist das ja nicht mehr so ein "kleines Setup"), ob sich eben nicht die Anbindung eines externen Radius Servers lohnt. Den kannst du dann eben auch gern zerbasteln wie du willst, ohne deine Firewall/Gateway damit ins Nirvana zu schippern.

    Gruß