Benutzer-Werkzeuge

Webseiten-Werkzeuge


csgo_beta:sec_logonscript

Dies ist eine alte Version des Dokuments!


Sicheres Loginscript

Bei vielen Serveradmins kommt es vor, dass mehrere Personen Zugriff auf die Dateien haben. In diesem Artikel werde ich kurz beschreiben, wie man mittels gpg das Passwort vor neugierigen Blicken schützen kann. Es wird das Tool gpg benötigt, dass bei Debian standardmäßig installiert ist. Sollte das Tool fehlen, muss es mit dem distributionsspezifischen Paketmanager installiert werden.

Loginscript verschlüsseln

Mit einem Editor muss nach folgendem Schema das Loginscript im Verzeichnis des SteamTools erstellt werden. Login, Password, Installationsverzeichnis weichen natürlich ab und sind dementsprechend anzupassen. In diesem Beispiel wählen wir den Dateinamen login.

login Benutzer Passwort
force_install_dir ./csgo_ds
app_update 740
quit

Nachdem die Datei erstellt worden ist, kann mittels gpg die Datei login synchron verschlüsselt werden. Für die Verschlüsselung nehmen wir die Standardeinstellungen. Für eine genauere Beschreibung der Verschlüsselungsmethoden und Optionsschalter kann im Artikel Symmetrische Verschlüsselung nachgelesen werden. Um die Datei login zu verschlüsseln rufen wir folgenden Befehl auf:

gpg -c --force-mdc login

Die Passphrase zwei mal eingeben und bestätigen. Es wird die Datei login.gpg angelegt. Um das Entschlüsseln zu prüfen, kann einmal folgender Befehl aufgerufen werden:

gpg -d login.gpg

Nach der Eingabe der Passphrase, sollte der Text in der Konsole ausgegeben werden. Zusätzlich sollte noch folgende Fehlermeldung zu sehen sein, wenn man den Optionsschalter –force-mdc nicht verwendet hat:

gpg: WARNUNG: Botschaft wurde nicht integritätsgeschützt (integrity protected)

Diese braucht nicht weiter beachtet zu werden. Aus dem Grund leiten wir die Fehlerausgabe später nach /dev/null um.

Loginscript entschlüsseln

Sofern die Entschlüsselung funktioniert, sollte die Datei login gelöscht werden. Mit einer Pipe kann man der steam.sh den entschlüsselten Inhalt der login.gpg übermitteln:

gpg -d login.gpg 2> /dev/null | STEAMEXE=steamcmd ./steam.sh

Folglich wird steamcmd durch steam.sh gestartet. Durch die Verknüpfung mit der Pipe, wartet gpg immer noch auf die Passphrase, obwohl steamcmd schon längst gestartet ist. Es sollte vor der Eingabe der Passphrase so aussehen:

Installing breakpad exception handler for appid(steam)/version(1337903821)
[  0%] Checking for available updates...
[  0%] Download complete.
[----] Verifying installation...
unlinked 0 orphaned pipes
Steam Console Client (c) Valve Corporation
-- type 'quit' to exit --
Loading Steam3...OK.
Loading Steam2...OK.

Ab da passiert nichts mehr. Die Aufforderung die Passphrase einzugeben, sieht man auch nicht. Dennoch wartet gpg im auf die Eingabe. Nachdem die Passphrase eingegeben worden ist, sollte folgender Text in der Konsole zu sehen sein:

Logging in user 'Benutzer' to Steam Public...Success.

Steam>
Steam>Success! App '740' already up to date.

Steam>
Steam>Shutting down. . .
unlinked 2 orphaned pipes
CAsyncIOManager: 0 threads terminating.  0 reads, 0 writes, 0 deferrals.
CAsyncIOManager: 1455 single object sleeps, 496 multi object sleeps
CAsyncIOManager: 0 single object alertable sleeps, 2 multi object alertable sleeps

In dem Fall war der dedicated Server schon aktuell. Als letztes kann man noch mit folgendem Befehl ein kurzes Script erstellen, dass mit dem Befehl read arbeitet und das Passwort als Variable an gpg übergibt. Es hat noch den Vorteil, dass auf die Eingabe gewartet wird.

update.sh
read -p "Passpshrase eingeben: " -s pass
gpg --passphrase $pass -d login.gpg 2>/dev/null | STEAMEXE=steamcmd ./steam.sh
pass=""

Nur noch ausführbar machen:

chmod u+x ./update.sh

Das Script wird dann einfach mit ./update ausgeführt.

csgo_beta/sec_logonscript.1338744846.txt.bz2 · Zuletzt geändert: 2012/06/03 19:34 von DeaD_EyE