Tach!
Liebes Internet, im Quelltext lege ich dieses Passwort grundsätzlich nicht ab, meist in einem externen File, das nicht in einem für www-data erreichbaren Pfad liegt.
Letzteres ist schonmal gut. Aber ob du es als Textdatei oder als kleine zu inkudierende Code-Datei ablegst, ist egal, denn letzlich wird es von deinem Script eingelesen und steht in einer Variable im Speicher.
Mich beschäftigt nun also der Gedanke, eine Art Passwort-Server zu schreiben. Ein kleines Programm, dass ich als Admin manuell starte und am Leben halte. Es soll die Passworte im Arbeitsspeicher halten, nachdem ich sie ihm übergeben habe. So liegen die Passworte nicht mehr als Datei vor. Und wenn das Programm, vielleicht durch eine Automatisierung glaubt, es würde angegriffen, killt es sich selbst und die Passworte sind für einen Angreifer nicht mehr erreichbar.
Wenn jemand Zugriff auf dein System hat, kann er dein legales Script so ändern, dass es das Passwort abfragt und dann einfach ausgibt. Wie willst du so etwas erkennen? An welche automatische Erkennung unerlaubter Zugriffe hast du gedacht? Anhand der Masse in einer bestimmten Zeit kannst du es kaum festmachen. Dieser Schwellwert wird bei normalen Webseitenzugriffen erreicht werden. Und bereits ein einzelner "gut getarnter" Zugriff reicht, um dein Passwort zu bekommen.
Gibt es eine Möglichkeit, die mir erlaubt, von einem laufenden C- oder vorzugsweise Perl-Programm aus, Anfragen entgegen zu nehmen und zu schauen, was das für ein Programm ist, was da die Anfrage an den hier fiktiven Passwort-Server stellt?
Ersteres ja, letzteres kaum. Du müsstest feststellen, dass das zugreifende Programm es selbst ist und nicht manipuliert wurde. Vielleicht bekommst den Namen noch aus der Prozessliste gelesen. Aber wie willst du im Speicher feststellen, dass es nicht manipuliert wurde? Eine Checksumme über alles geht kaum, es sind ja auch Variablen mit unterschiedlichen Inhalten im Spiel. Nur über den Codebereich prüfen setzte voraus, dass du den kennst. Und wenn du darauf zugreifen kannst, kann das jemand anderes auch, um sich nach der Prüfung das Passwort zu holen.
Ich habe mir vorgestellt, dass das Programm die MD5-Summe einer Perl-Datei bilden könnte, um seine Identität zu prüfen.
Das kann man auch vorher und den so ermittelten Wert einfach direkt vom manipulierten Programm weitergeben lassen.
Was meint ihr dazu? Ich betreibe einen Debian-Server. Eigentlich denke ich ja daran, etwas selbst zu schreiben, aber da gibts ja auch lustige Keyrings für "normale" User. Könnte man sowas umfunktionieren?
Irgendwie muss man ja an den Keyring rankommen. Er liegt also ungesichert rum oder die Zugangsdaten stehen im Code deines Scripts, woraus sie ein Angreifer auch lesen kann. Alle Passwort-Verfahren basieren darauf, dass es einen geheimen Teil gibt. Wenn du den anderswo als in deinem Gedächtnis aufbewahrst, kann man prinzipiell mit mehr oder weniger Aufwand darauf zugreifen.
dedlfix.