OPNsense Forum

International Forums => German - Deutsch => Topic started by: mike75 on July 15, 2015, 09:15:49 am

Title: Local User Management
Post by: mike75 on July 15, 2015, 09:15:49 am
Hallo Allerseits,
ich würde gerne auf die Lokale Benutzerdatenbank per PHP zugreifen, denn ich möchte für bestimmte Admins die User anlegen dürfen eine eigens dafür gestaltete Seite erstellen. Leider finde ich diese Datenbank nicht. Kann mir bitte jemand mitteilen wo - in welchem Verzeichnis - ich diese finde.
Title: Re: Local User Management
Post by: franco on July 15, 2015, 09:24:24 am
Die Nutzer werden in der config.xml gespeichert zu erreichen im alten Code über die globale Variable $config, im MVC Code weiß ich es gerade nicht ohne nachschauen.
Title: Re: Local User Management
Post by: mike75 on July 15, 2015, 09:30:46 am
Vielen lieben Dank, das hilft mir schon weiter!!!  :)
Title: Re: Local User Management
Post by: franco on July 15, 2015, 09:34:21 am
Immer gerne. :)
Title: Re: Local User Management
Post by: mike75 on July 22, 2015, 04:30:24 pm
Für User die ich hier fürs Captive Portal anlege, möchte ich den Usernamen und Passwort ausdrucken können.

Frage: Mit welchem Befehl könnte ich das Passwort wieder im Klartext anzeigen lassen? Reicht vollkommen wenn es in einem der Passwortfelder steht. Was noch ginge wäre wenn man die Passwörter gleich im Klartext abspeichert (etwas bedenklich aber naja was solls) Welche Datei wäre dann dafür zuständig?

Datei: usr/local/WWW/system_usermanager.php

Wo werden überhaupt die Passwörter verschlüsselt. Finde weder auf der Phalcon noch auf der opnSense Webseite keinen Hinweis dafür.

Grüße aus Wien bei annähernd 40 Grad :_)



Title: Re: Local User Management
Post by: franco on July 23, 2015, 09:01:19 am
Password Hashes kann man mit Absicht nicht wieder umwandeln in Klartext. Das wir noch verkompliziert, weil die Nutzer auch im System angelegt werden, obwohl diese nur für das Captive Portal gültig sind. Wenn man jetzt also die Passwörter im Klartext speichern möchte, dann würde auch für alle anderen Accounts das Passwort im Klartext auftauchen.

Was wir hier schon geplant haben ist die Captive Portal Nutzer (sowie OpenVPN und andere Subsysteme) getrennt von den Systemnutzern zu speichern. Das baut aber auf eine Umarbeitung der ACL (nach MVC) auf. Festgehalten in diesem Ticket:

https://github.com/opnsense/core/issues/132

Dennoch kannst du lokal auch gern die Passwörter speichern in der Config.xml und dann wieder auslesen. Empfohlen ist das definitiv nicht, aber kann in deinem Fall eine Lösung sein. Einfach einen zweiten Eintrag hier anfügen (den Hash nicht entfernen sonst ist das System kaputt):

https://github.com/opnsense/core/blob/stable/15.7/src/etc/inc/auth.inc#L481


Grüße zurück aus Leipzig :)
Title: Re: Local User Management
Post by: mike75 on July 23, 2015, 11:28:40 am
Das heißt jetzt einfach der übergebenen Variable ohne crypt() dem $user[] zuweisen. Entschuldige meine Unwissenheit, habe echt schon viel vergessen!!! Freu mich aber immer wieder etwas zutun.

function local_user_set_password(& $user, $password)
{
   /* $user['password'] = crypt($password, '$6$'); */
       
        $user['password'] = $password;

   // Converts ascii to unicode.
   $astr = (string) $password;
   $ustr = '';
   for ($i = 0; $i < strlen($astr); $i++) {
      $a = ord($astr{$i}) << 8;
      $ustr.= sprintf("%X", $a);
   }

   // Generate the NT-HASH from the unicode string
       $user['nt-hash'] = bin2hex(hash("md4", $ustr));
}

Danke
Title: Re: Local User Management
Post by: franco on July 23, 2015, 12:33:23 pm
Bitte alles, nur nicht 'password' *überschreiben*, e.g.:

$user['insecure'] = $password;
Title: Re: Local User Management
Post by: mike75 on July 23, 2015, 02:46:58 pm
Pahh. ich bin ein Hirni.  :o

Jetzt kann ich endlich starten mit meinem Captive Portal inkl. dem Ausdrucken der User Proposals und automatischer Benutzernamenvergabe und automatischem Passwort. Vielleicht wär ja das ein zukünfiges Highlight. Da ich mit Fortigates arbeite und die das können, muss ich das natürlich jetzt bei der opnSense umsetzen, denn dort st es nämlich zwingend das man sich nach 24 Stunden erneut einloggen muss. Das nervt aber so manchen User. opnSense hat mich gerettet...yess we can

Vielen herzlichen Dank.
Title: Re: Local User Management
Post by: franco on July 23, 2015, 03:20:17 pm
Generell sinnvoll, ja, wir würden nur gern vorher den Code umarbeiten, um das Feature dann "sauber" einzusetzen.

Bin gespannt auf die Erfolgsgeschichte. :)
Title: Re: Local User Management
Post by: mike75 on July 27, 2015, 12:25:05 pm
Kann man eigentlich einer Usergruppe nur das Recht geben für eine bestimmte Usergruppe User anzulegen?
Title: Re: Local User Management
Post by: franco on July 27, 2015, 12:31:59 pm
ACL für die ACL? :) Ich glaube das wird möglich sein für die Neuimplementation, aber kann hier keine Garantie geben. Die Idee dahinter ist dann eigene Seiten für verschiedene Nutzergruppen zu haben. Wer dann diese eigenen Seiten ansehen und ändern darf (Unterschied Schreibrecht/Leserecht), kann nur bestimmte Benutzer anlegen.

Im Moment ist der "User Manager" zentral, daher gibt es keine sinnvolle Implementierung. Es würde gehen mit mehr Code, aber baut dann auf Wechselwirkungen zwischen Einträgen aus den Rechten und weitere Code-Zweigen.
Title: Re: Local User Management
Post by: mike75 on July 27, 2015, 12:45:51 pm
Ok. Na dann wird's ein bischen tricky aber es sollte funktionieren.  :) Danke
Title: Re: Local User Management
Post by: mike75 on July 29, 2015, 02:25:52 pm
Jetzt seh ich den Wald vor lauter Bäumen nicht mehr. Warum kann ich nicht durch die Userdatenbank iterieren? Als Ausgabe kommt immer 1; Bitte um Hilfestellung!

Die Funktion habe ich in der System_usermanger.php eingefügt um automatische Namen zu vergeben.

Code: [Select]

$a_user = &$config['system']['user'];

function auto_username()
{
$i = 1;
$aun = '';
foreach ($a_user as $temp)
{ /*
if ($temp['name'] == 'user' . $i)
{
$i++;
continue;
}
else
{
$aun = 'user' . $i;
break;
}*/
$i++;
}
/*return $aun;*/
return $i;
}

Title: Re: Local User Management
Post by: franco on July 29, 2015, 05:18:22 pm
benutz mal lieber das hier :)

Code: [Select]
function auto_username()
{
    global $config;

    $a_user = &$config['system']['user'];

    ....