Passwort Komplexität

Passwort Komplexität und Richtlinien

#Original Files wegsichern
cp -frv /etc/passwd /etc/passwd-`date +%Y%m%d-%H%M`
cp -frv /etc/shadow /etc/shadow-`date +%Y%m%d-%H%M`
cp -frv /etc/login.defs /etc/login.defs-`date +%Y%m%d-%H%M`
cp -frv /etc/pam.d/common-password /etc/pam.d/common-password-`date +%Y%m%d-%H%M`
cp -frv /etc/pam.d/common-password-pc /etc/pam.d/common-password-pc-`date +%Y%m%d-%H%M`

"less /usr/share/doc/packages/pam/modules/README.pam_cracklib"

"touch /etc/security/opasswd"

"vi /etc/pam.d/login" ->
	password requisite      pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1

"vi /etc/pam.d/common-password"	->
	password  required      pam_cracklib.so dcredit=-1 ucredit=-1 lcredit=-1 minlen=10 retry=5
	password  required      pam_pwhistory.so use_authtok remember=3 retry=5  ## Use pam_pwhistory in SLES 11
	password  required      pam_pwcheck.so nullok remember=3   ##Use pam_pwcheck in SLES 10 since pam_pwhistory is NOT available in SLES 10
	password  required      pam_unix2.so nullok use_authtok md5


"vi /etc/pam.d/passwd"	->
	password requisite      pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1
	
"chage -M 666 passworttest" = Passwort alter festlegen. 666 Tage
"chage -E 2015-12-19 passworttest" = Account läuft am 19.12.2015 aus
#"--cracklib-minlen=8" = PW länge mind. 8
#"--cracklib-retry=5" = 3 versuche um ein gescheites Passwort zu setzen.
#"--cracklib-lcredit=-1" = PW mind. ein Kleinbuchstaben
#"--cracklib-ucredit=-1" = PW mind. ein Großbuchstaben
#"--cracklib-dcredit=-1" = PW mind. eine Zahl
#"--cracklib-ocredit=-1" = PW mind. ein Spezial Charakter
#"--pwcheck-remember=5" = die letzten 5 Passwörter müssen sich subtanziell unterscheiden.
	#"--pwhistory-remember=5"
	#"--unix-remember=5"
"pam-config -a --cracklib-minlen=8 --cracklib-retry=3 --cracklib-lcredit=-1 --cracklib-ucredit=-1 --cracklib-dcredit=-1 --cracklib-ocredit=-1 --cracklib" = Ad-hoc Change
	"pam-config -a --cracklib-minlen=8 --cracklib-retry=3 --cracklib-lcredit=-1 --cracklib-ucredit=-1 --cracklib-dcredit=-1 --cracklib-ocredit=-1 --cracklib --pwcheck-remember=5 --pwhistory-remember=5 --unix-remember=5"
"passwd -x 180 -w 7 -n 1 fbp_int" = Passwort change mit Ablauf nach 180 Tagen
	"chage -m 1 -M 180 -W 7"  = Passwort change mit Ablauf nach 180 Tagen
	"passwd -x 180 -w 7 -n 1 -e fbp_int" = User muss Pass beim nächsten Login ändern, sofern das letzte Änderungsdatum länger als 180 Tage zurückliegt.
	"passwd -e fbp_int" = User muss Pass beim nächsten Login ändern
				
"getent passwd | cut -d ':' -f 1 | xargs -n1 chage -m 0 -M 180 -W 7" = Nachträglich alle User mit einem Ablaufdatum versehen.
"echo 'PA$$W0rT' | passwd --stdin nagios" = Passwort direkt übergeben
"echo "al1adm:NeuesPW123" | chpasswd" = Ab SLES 12 bzw. Leap 42.1

######################################################################################################
Kommandos
"chage -l passworttest"
	Last password change                                    : Jul 31, 2015
	Password expires                                        : May 27, 2017
	Password inactive                                       : never
	Account expires                                         : Dec 19, 2015
	Minimum number of days between password change          : 0
	Maximum number of days between password change          : 666
	Number of days of warning before password expires       : 7

"cat /etc/shadow | awk -F":" '{print "->"$1,$5 }'  " = Passwort Ablaufdatum herausfinden
	"cut -f 1 -d: /etc/passwd | xargs -n 1 -I {} bash -c ' echo -n {}" "; chage -l {} | fgrep "Password expires"' | column -t "
######################################################################################################
Info
"lynx https://www.suse.com/documentation/sles11/singlehtml/book_hardening/book_hardening.html#sec.sec_prot.general.pw_strength"
pam_cracklib.so		minlen=8		Minimum length of password is 8 
pam_cracklib.so		lcredit=-1		Minimum number of lower case letters is 1 
pam_cracklib.so		ucredit=-1		Minimum number of upper case letters is 1
pam_cracklib.so		dcredit=-1		Minimum number of digits is 1 
pam_cracklib.so		ocredit=-1		Minimum number of other characters is 1 

When you login via ssh /etc.pam.d/sshd policy file is used. This file includes /etc/pam.d/system-auth, and you have to consider the contents of both files.
If you login via /bin/login, then the file /etc/pam.d/login is used therefore any changes to it will only affect /bin/login.

Als "root" kann auch ein Simples Passwort gesetzt werden

######################################################################################################
#Passwort regeln setzen
getent passwd | cut -d ':' -f 1 | xargs -n1 chage -m 1 -M 180 -W 7
#getent passwd | cut -d ':' -f 1 | xargs -n1 passwd -e

#Passwort Ablauf Richtlinien############################################################################################################
#"PASS_MAX_DAYS" = Gültigkeitszeit des aktuellen Passworts
#"PASS_MIN_DAYS" = Nur einmal am Tag darf das Passwort gewechselt werden
#"PASS_WARN_AGE" = Das System warnt 30 Tage vor Ablauf des Passworts den User.

"vi /etc/login.defs" ->
	PASS_MAX_DAYS   180
	PASS_MIN_DAYS   1
	PASS_WARN_AGE   30

#One Line Command zum ändern	
"sed 's/PASS_MAX_DAYS[[:space:]]99999/PASS_MAX_DAYS   180/' /etc/login.defs > /etc/login.defs.new; mv /etc/login.defs.new /etc/login.defs"
"sed 's/PASS_MIN_DAYS[[:space:]]0/PASS_MIN_DAYS   1/' /etc/login.defs > /etc/login.defs.new; mv /etc/login.defs.new /etc/login.defs"
"sed 's/PASS_WARN_AGE[[:space:]]7/PASS_WARN_AGE   30/' /etc/login.defs > /etc/login.defs.new; mv /etc/login.defs.new /etc/login.defs"	

############################################
#Zusatz Kommandos
"chage -l test_exp" = Passwort Aufbaurichtlinien für einen User anzeigen lassen
#"chage -m 1 -M 180 -W 30" = Passwort Aufbaurichtlinien setzen
	-m 1 = Nur einmal am Tag PW wechseln
	-M 180 = PW nur 180 Tage gültig
	-W 30 = 30 Tage vor Ablauf warnen.
"getent passwd | cut -d ':' -f 1 | xargs -n1 chage -m 1 -M 180 -W 30" = Bei "ALLEN" Usern in der /etc/passwd die Policy ändern
"chage -E 2015-12-19 passworttest" = Account läuft am 19.12.2015 aus
"echo 'PA$$W0rT' | passwd --stdin nagios" = Passwort direkt übergeben
	"echo "al1adm:NEUESPW" | chpasswd" = Ab SLES 12
"passwd -e fbp_int" = User muss Pass beim nächsten Login ändern
"cat /etc/shadow | awk -F":" '{print "->"$1,$5 }'  " = Passwort Ablaufdatum herausfinden
	"cut -f 1 -d: /etc/passwd | xargs -n 1 -I {} bash -c ' echo -n {}" "; chage -l {} | fgrep "Password expires"' | column -t " = Bei SLES12
	
"dd if=/dev/random bs=32 count=1 2> /dev/null | sha1sum | cut -b 10-18" = Passwort generieren
	"openssl rand 4 | xxd -ps"
	"date +%s | sha256sum | base64 | head -c 8 ; echo" 

Post Revisions: