Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/CISOfy/lynis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Boelen <michael.boelen@cisofy.com>2020-03-23 14:49:20 +0300
committerGitHub <noreply@github.com>2020-03-23 14:49:20 +0300
commit122619d01f0f8ff31123a2afa8759295b12555ef (patch)
tree178977401f004bdc40cc260d955418c597a5c536 /include/tests_authentication
parent410206619aecc57bfd73904252f5f03356533e18 (diff)
parent4a51ad031b371dd60ed79f125fa68b787d31a840 (diff)
Merge pull request #874 from topimiettinen/check-password-hashing-methods
Check password hashing methods
Diffstat (limited to 'include/tests_authentication')
-rw-r--r--include/tests_authentication61
1 files changed, 61 insertions, 0 deletions
diff --git a/include/tests_authentication b/include/tests_authentication
index d3f9d3aa..0cc831ad 100644
--- a/include/tests_authentication
+++ b/include/tests_authentication
@@ -326,6 +326,67 @@
#
#################################################################################
#
+ # Test : AUTH-9229
+ # Description : Check password hashing methods vs. recommendations in crypt(5)
+ # Notes : Applicable to all Unix-like OS
+ Register --test-no AUTH-9229 --weight L --network NO --category security --description "Check password hashing methods"
+ if [ ${SKIPTEST} -eq 0 ]; then
+ LogText "Test: Checking password hashing methods"
+ if [ -e ${ROOTDIR}etc/shadow ]; then SHADOW=${ROOTDIR}etc/shadow; else SHADOW=""; fi
+ FIND=$(${CAT_BINARY} ${ROOTDIR}etc/passwd ${SHADOW} | ${AWKBINARY} -F : '{print length($2) ":" $2 }' | while read METHOD; do
+ case ${METHOD} in
+ 1:\* | 1:x | 0: | *:!*)
+ # disabled | shadowed | no password | locked account
+ ;;
+ *:\$5\$*| *:\$6\$*)
+ # sha256crypt | sha512crypt: check number of rounds, should be >5000
+ ROUNDS=$(echo "${METHOD}" | sed -n 's/.*rounds=\([0-9]*\)\$.*/\1/gp')
+ if [ -z "${ROUNDS}" ]; then
+ echo 'sha256crypt/sha512crypt(default<=5000rounds)'
+ elif [ "${ROUNDS}" -le 5000 ]; then
+ echo 'sha256crypt/sha512crypt(<=5000rounds)'
+ fi
+ ;;
+ *:\$y\$* | *:\$gy\$* | *:\$2b\$* | *:\$7\$*)
+ # yescrypt | gost-yescrypt | bcrypt | scrypt
+ ;;
+ *:_*)
+ echo bsdicrypt
+ ;;
+ *:\$1\$*)
+ echo md5crypt
+ ;;
+ *:\$3\$*)
+ echo NT
+ ;;
+ *:\$md5*)
+ echo SunMD5
+ ;;
+ *:\$sha1*)
+ echo sha1crypt
+ ;;
+ 13:* | 178:*)
+ echo bigcrypt/descrypt
+ ;;
+ *)
+ echo "Unknown password hashing method ${METHOD}. Please report to lynis-dev@cisofy.com"
+ ;;
+ esac
+ done | ${SORTBINARY} --unique | ${TRBINARY} '\n' ' ')
+ if [ -z "${FIND}" ]; then
+ Display --indent 2 --text "- Password hashing methods" --result "${STATUS_OK}" --color GREEN
+ LogText "Result: no poor password hashing methods found"
+ AddHP 2 2
+ else
+ Display --indent 2 --text "- Password hashing methods" --result "${STATUS_SUGGESTION}" --color YELLOW
+ LogText "Result: poor password hashing methods found: ${FIND}"
+ ReportSuggestion "${TEST_NO}" "Change ${ROOTDIR}etc/login.defs password ENCRYPT_METHOD and SHA_CRYPT_MIN_ROUNDS to more secure values, check also PAM configuration, expire passwords to encrypt with new values"
+ AddHP 0 2
+ fi
+ fi
+#
+#################################################################################
+#
# Test : AUTH-9234
# Description : Query user accounts
# Notes : AIX: 100+