Passworte sicher speichern (KeePass)

Moin Zusamm…

Kennt ihr das? Ihr habt ein Script entwickelt, seid mächtig stolz drauf, wollt es mit anderen Teilen und upps da sind eure Passworte in Klartext enthalten. Sowiso ne doofe Idee Passworte in Klartext auf eurem Rechner zu speichern. :rolleyes: Aber es gibt Abhilfe.

KeePass ist dafür gedacht eure Passworte, TANs und andere Geheimnisse sicher zu speichern und vor fremdem Zugriff zu schützen. Klassischerweise gilt das natürlich in erster Linie für Webseiten. Es gibt aber auch Plugins für Putty oder RDP zum Beispiel. Ich habe mir das KPScript Interface mal vorgeknöpft um euch eine Lösung für IPS anzubieten.

Was brauchen wir?

[ol]
[li]Eine funktionierende Installation von KeePass. Erstellt ein paar Einträge und testet sie[/li][li]Einen IPS-Server auf Windows (gibt glaub ich auch ein CLI für Linux)[/li][li]Das Plugin KPScript von der Webseite[/li][li]Das kleine Script hier für IPS[/li][li]15 Minuten Zeit zum puzzlen ;)[/li][/ol]

Kopiert folgendes Script in den Unterordner scripts in euer IPS Verzeichnis. Ich habe es mal „__KeePass.php“ genannt.


<?
function UnveilSecret($Dataset, $Secret)
{


// -- Personal settings start here ---
  $IPSPassDB='G:\IP-Symcon\Passliste.DB';
  $KPScript='C:\Program Files\KeePass\KPScript.exe';
  // $Keyfile='';  // optional, leave empty if not needed.
  $Keyfile='C:\Users\Toni\Documents\My.key';
  $Masterpass='E:\Dings\Bums	est.stuff'; // type masterpass or external file holding it here
  // when using a file you may want to hide your password somewhere in it
  $MasterpassFileOffset=148; // default -1
  $MasterPasslength=17;    // default 255
// -- end ---




  if (!file_exists($IPSPassDB))
     exit("Password database not found...");
  if (!file_exists($KPScript))
     exit("KPScript.exe not found...");
  if (trim($Keyfile) != '' && !file_exists($Keyfile))
     exit("Keyfile not found...");
  if (file_exists($Masterpass))
     $Masterpass=file_get_contents($Masterpass, false, NULL, $MasterpassFileOffset,$MasterPasslength);
  $KFToken='';
  if (trim($Keyfile) != '')
    $KFToken=' -keyfile:"'.$Keyfile.'"';
  $Command='"'.$KPScript.'" -c:GetEntryString "'.$IPSPassDB.'"'.$KFToken.' -pw:"'.$Masterpass.'" -Field:'.$Secret.' -ref-Title:"'.$Dataset.'"';
  $ProcHnd = POpen($Command, 'r');
  return trim(FRead($ProcHnd, 2096));
  PClose($ProcHnd);
}


function FetchPassword($Dataset) {
  return UnveilSecret($Dataset, 'Password');}
function FetchUsername($Dataset) {
  return UnveilSecret($Dataset, 'UserName');}


?>

Nicht vergessen die Pfade anzupassen!

Hier noch ein kleines Script zum Testen:


<? 
  include("__KeePass.php"); 
  echo '-'.FetchUsername('FTPServer')."-
-".FetchPassword('FTPServer').'-';
?>

Der Parameter $Dataset stellt hierbei den Titel eures Eintrags in KeePass dar. Nun braucht ihr nie wieder Benutzernamen und Passworte in Klartext in einem Script zu speichern. Sie liegen sicher verschlüsselt irgendwo am Server. Viel Spaß :slight_smile:

Gruß,

Toni

Hallo Toni,

hört sich super interessant an. Vielen Dank dafür!

Hab leider gerade keine Zeit zum testen.

Werd ich aber zeitnah tun und dann berichten.

Danke noch mals für Deine Idee unds teilen.

Servus Toni
Im Grunde eine coole Idee und endlich mal wieder was ohne Module.

Aber treibts du da nicht den Teufel mit dem Belzebub aus ? Das verleitet doch nun dazu das Masterpasswort vom Keypass im Klartext im Script zu haben… das is ja noch schlimmer als irgendein API Zugang oder so.
In meinem Keypass liegt meine ganze Existenz, wenn da jemand böser ans Masterrpasswort kommt - gute Nacht.

Und das Masterpasswort aus einem File auslesen ist ja nett, aber dann kann man doch gleich das gesuchte PW in das File schreiben. :rolleyes:

trotzdem cool
bb

Du sollst doch ein IPS Keepass nehmen und nicht dein Master-Keepass ;).

Außerdem kann das Masterpasswort in einer längeren Datei versteckt werden und es ist nicht im Klartext im IPS.
Darum ging es doch in erster Linie.

MfG
Ralf

Ja, aber wenn ich schon ein Passwort in einer Datei verstecke, dann verstecke ich doch gleich mein gesuchtes PW und erspare mir den Umweg. :confused:
OK, wenn ich viele Accounts habe dann ist es evtl. einfacher. Nur tritt dann wieder der erste Einwand in Kraft…:banghead:

Zum Einen steht es dir ja weiterhin frei versehendlich deine Passworte im Klartext ins Forum zu posten. Niemand zwingt dich dazu sie geheim zu halten ;). Und zum Anderen muss jetzt jemand aktiv versuchen deine Zugangsdaten zu finden und kann nicht mehr versehendlich drüber stolpern.

Wieviele Passworte du in der Datenbank hast und wo du sie ablegst/sharest kannst du ja selbst entscheiden. Ich verwende KeePass mittlerweile synchronisiert an vielen Geräten auf Arbeit, zuhause und unterwegs. Für IPS würde ich, denk ich, nen eigenen Container nur lokal auf den Server legen.

Eine Masterkey Datei könnte so aussehen hab ich mir überlegt:

Jetzt fang mal an zu zählen und erkläre mir dann wie du es geschafft hast versehendlich mein Passwort mitbekommen zu haben. :smiley:

Wenn du es hast musst du nur noch den Container kopieren und meine deine Keydatei klauen… Aus versehen… :wink:
[b]

[Edit]
[/b]Ich kann also davon ausgehen dass der Verlust durch ein gewisses Maß an krimineller Energie zustande kam. Wollte ich mit krimineller Energie an dein Passwort kommen würde ich an deinem Rechner - ich muss ja sowiso dran weil ich den lokalen Container kopieren muss - einen Keylogger installieren oder sowas. Vielleicht bastel ich auch ein Login-Screen von Keepass nach und tausche den Pfad in deiner Verknüpfung. Bis du gemerkt hast, dass ich vorsorglich deinen Virenscanner abgeschaltet hab ist das Kind längst in den Brunnen gefallen.
[/Edit]

Toni