ubuntuusers.de

passworteingabe mit read -> sicher?

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

schmittchen-schleicher

Anmeldungsdatum:
11. Dezember 2007

Beiträge: 49

Wohnort: Bonn

Hallo,

ist mein Passwort in folgendem Skript sicher aufgehoben, oder kommt man über irgendeine history-Funktion an die alten Werte von ${pwd}?

user="meinUser"
read -s -p "Passwort für ${user} :" pwd
<sicherheitsrelevanter Aufruf mit ${user} und ${pwd}>
pwd="blabla"

schmittchen-schleicher

(Themenstarter)

Anmeldungsdatum:
11. Dezember 2007

Beiträge: 49

Wohnort: Bonn

Wahrscheinlich ist nicht die history der Variablen das Problem, sondern vielmehr ein log-File in dem die Aufrufe des Skrips (incl. Klartext-Passwörter) stehen...

Gibt es so ein log-file?! Und wenn ja, wird es beim Runterfahren gelöscht?

[EDIT]
OK, die Aufrufe stehen also mit Klartext-Passwörtern in (einigen) Log-Dateien...

Was wäre die Alternative?
Ich führe mehrere Anweisungen aus, die das gleiche Passwort brauchen. Übergebe ich dem Aufruf kein Passwort, so muss ich es für jeden Aufruf eingeben...
[/EDIT]

d1rk

Anmeldungsdatum:
5. April 2006

Beiträge: 2420

Viel interessanter ist die Frage, ob und wie man die Passworteingabe innerhalb eines Schellscripts besser lösen kann

schmittchen-schleicher

(Themenstarter)

Anmeldungsdatum:
11. Dezember 2007

Beiträge: 49

Wohnort: Bonn

Liegt die Lösung vielleicht sogar weniger in der Eingabe und dem Handling des Passwortes im Skript, sonder eher darin, dass die Aufrufe mit den Klartext-Passwörtern gar nicht erst in log-Files geschrieben werden?

Ich bin zu sehr Neuling.

Gibt es sowas wie

stop logging
Befehle
start logging

audax

Avatar von audax

Anmeldungsdatum:
15. September 2006

Beiträge: 1253

Mal davon ausgehend, dass du mit der Bash arbeitest:

OLD_HISTFILE="$HISTFILE"
HISTFILE=''

read -p "Enter password: " -s PASSWORD

HISTFILE="$OLD_HISTFILE"

d1rk

Anmeldungsdatum:
5. April 2006

Beiträge: 2420

Komisch...

$ cat .bash_history
[...]
ping *.*.*.*
dig *.*.*.*
$ read -p "Enter password: " -s PASSWORD
Enter password:
$ echo $PASSWORD
blubb
$ cat .bash_history
[...]
ping *.*.*.*
dig *.*.*.*


Loggt das ding überhaupt mit?

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4695

Wohnort: Berlin

Wahrscheinlich eher nicht, weil ja auch readline gar nicht verwendet wird, solange man nicht die Option -e bei read angibt.

jerik

Avatar von jerik

Anmeldungsdatum:
19. August 2006

Beiträge: 425

 #!/bin/sh
 read -p "Username: " uname
 stty -echo
 read -p "Password: " passw; echo
 stty echo

Quelle: http://www.peterbe.com/plog/passwords-with-bash

cheers – jerik

audax

Avatar von audax

Anmeldungsdatum:
15. September 2006

Beiträge: 1253

du hättest zwei Google-Treffer weiter unten schaun müssen...
read -s tut dasselbe, wie 'stty -echo', nur eben temporär.

schmittchen-schleicher

(Themenstarter)

Anmeldungsdatum:
11. Dezember 2007

Beiträge: 49

Wohnort: Bonn

user="meinUser"
read -s -p "Passwort für ${user} :" pwd
<sicherheitsrelevanter Aufruf mit ${user} und ${pwd}>
pwd="blabla"


Das Problem ist ja nicht, dass das Passwort bei der Eingabe zu sehen ist. Das regelt ja die Option -s (silent) von read.

Und durch das Überschreiben der Variable pwd am Ende des Skripts kann auch niemand deren ursprünglichen Inhalt über die Shell abrufen.

Das eigentliche Prolem ist doch <sicherheitsrelevanter Aufruf mit ${user} und ${pwd}> z.B. ein mount-Befehl.
Der steht dann doch im Klartext incl. Passwort in der/den Logdatei(en)

[EDIT]audax hat geschrieben:

Mal davon ausgehend, dass du mit der Bash arbeitest:

OLD_HISTFILE="$HISTFILE"
HISTFILE=''
read -p "Enter password: " -s PASSWORD
HISTFILE="$OLD_HISTFILE"

In $HISTFILE wird ja nur die History der Shell-Befehle gespeichert - oder irre ich?
Die ausgeführten mount Befehle werden doch noch in anderen log-Files gespeichert...
[/EDIT]

audax

Avatar von audax

Anmeldungsdatum:
15. September 2006

Beiträge: 1253

Ja in welchen denn? Oo

schmittchen-schleicher

(Themenstarter)

Anmeldungsdatum:
11. Dezember 2007

Beiträge: 49

Wohnort: Bonn

audax hat geschrieben:

Ja in welchen denn? Oo

/var/log/auth.log

audax

Avatar von audax

Anmeldungsdatum:
15. September 2006

Beiträge: 1253

$ PASSWORD="foofoo"
$ echo $PASSWORD | sudo -S echo foofoo

$ tail -n3 /var/log/auth.log
Jan 23 11:21:46 grimbold sudo:      dax : TTY=pts/3 ; PWD=/home/dax/; USER=root ; COMMAND=/bin/echo foofoo
Jan 23 11:21:47 grimbold sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan 23 11:21:47 grimbold sudo: pam_unix(sudo:session): session closed for user root 

Das Passwort zumindest nicht 😉

schmittchen-schleicher

(Themenstarter)

Anmeldungsdatum:
11. Dezember 2007

Beiträge: 49

Wohnort: Bonn

jschmitt@yangtse:~$ pwd="geheim"
jschmitt@yangtse:~$ echo $pwd
geheim
jschmitt@yangtse:~$ sudo mount -t cifs -o rw,user=foo,password=${pwd},uid=foo,gid=users,file_mode=0775,dir_mode=0775 //100.100.100.100 /mnt/foo.bar
bad user name "foo"
jschmitt@yangtse:~$ tail -n1 /var/log/auth.log
Jan 23 11:56:34 yangtse sudo: jschmitt : TTY=pts/0 ; PWD=/home/jschmitt ; USER=root ; COMMAND=/bin/mount -t cifs -o rw,user=foo,password=geheim,uid=foo,gid=users,file_mode=0775,dir_mode=0775 //100.100.100.100 /mnt/foo.bar


Hier wohl, weil es Teil des mount-Befehls wird

Der_Gestreifte

Avatar von Der_Gestreifte

Anmeldungsdatum:
21. Juni 2007

Beiträge: 1261

Wohnort: Nürnberg

Und das Log ist bei Dir für alle Welt lesbar?

Davon ab,
wieso richtest Du nicht einfach einen sudoer (oder einen entsorechenden User_Alias) ein, der das Skript "NOPASSWD" aufrufen darf?

Antworten |