mirror of
https://github.com/optim-enterprises-bv/secureblue.git
synced 2025-11-21 04:25:06 +00:00
feat: 🔒 harden and enable pam faillock, password encryption & quality suggestions
This commit is contained in:
@@ -30,6 +30,7 @@ Hardening applied:
|
|||||||
- Require a password for sudo every time it's called
|
- Require a password for sudo every time it's called
|
||||||
- Disable passwordless sudo for rpm-ostree
|
- Disable passwordless sudo for rpm-ostree
|
||||||
- Setting more restrictive file permissions (Based on recommendations from [lynis](https://cisofy.com/lynis/))
|
- Setting more restrictive file permissions (Based on recommendations from [lynis](https://cisofy.com/lynis/))
|
||||||
|
- Brute force protection by locking user accounts for 24 hours after 50 failed login attempts, hardened password encryption and password quality suggestions
|
||||||
- Installing dnf-automatic and chkrootkit
|
- Installing dnf-automatic and chkrootkit
|
||||||
- Disabling unprivileged user namespaces
|
- Disabling unprivileged user namespaces
|
||||||
- Replacing bubblewrap with bubblewrap-suid so flatpak can be used without unprivileged user namespaces
|
- Replacing bubblewrap with bubblewrap-suid so flatpak can be used without unprivileged user namespaces
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
type: script
|
type: script
|
||||||
scripts:
|
scripts:
|
||||||
|
- authselect.sh
|
||||||
# this sets up the proper policy & signing files for signed images to work
|
# this sets up the proper policy & signing files for signed images to work
|
||||||
- signing.sh
|
- signing.sh
|
||||||
610
config/files/usr/etc/login.defs
Normal file
610
config/files/usr/etc/login.defs
Normal file
@@ -0,0 +1,610 @@
|
|||||||
|
#
|
||||||
|
# Please note that the parameters in this configuration file control the
|
||||||
|
# behavior of the tools from the shadow-utils component. None of these
|
||||||
|
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
|
||||||
|
# passwd command) should therefore be configured elsewhere. Refer to
|
||||||
|
# /etc/pam.d/system-auth for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Delay in seconds before being allowed another attempt after a login failure
|
||||||
|
# Note: When PAM is used, some modules may enforce a minimum delay (e.g.
|
||||||
|
# pam_unix(8) enforces a 2s delay)
|
||||||
|
#
|
||||||
|
#FAIL_DELAY 3
|
||||||
|
|
||||||
|
# Currently FAILLOG_ENAB is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enable display of unknown usernames when login(1) failures are recorded.
|
||||||
|
#
|
||||||
|
#LOG_UNKFAIL_ENAB no
|
||||||
|
|
||||||
|
# Currently LOG_OK_LOGINS is not supported
|
||||||
|
|
||||||
|
# Currently LASTLOG_ENAB is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Limit the highest user ID number for which the lastlog entries should
|
||||||
|
# be updated.
|
||||||
|
#
|
||||||
|
# No LASTLOG_UID_MAX means that there is no user ID limit for writing
|
||||||
|
# lastlog entries.
|
||||||
|
#
|
||||||
|
#LASTLOG_UID_MAX
|
||||||
|
|
||||||
|
# Currently MAIL_CHECK_ENAB is not supported
|
||||||
|
|
||||||
|
# Currently OBSCURE_CHECKS_ENAB is not supported
|
||||||
|
|
||||||
|
# Currently PORTTIME_CHECKS_ENAB is not supported
|
||||||
|
|
||||||
|
# Currently QUOTAS_ENAB is not supported
|
||||||
|
|
||||||
|
# Currently SYSLOG_SU_ENAB is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enable "syslog" logging of newgrp(1) and sg(1) activity.
|
||||||
|
#
|
||||||
|
#SYSLOG_SG_ENAB yes
|
||||||
|
|
||||||
|
# Currently CONSOLE is not supported
|
||||||
|
|
||||||
|
# Currently SULOG_FILE is not supported
|
||||||
|
|
||||||
|
# Currently MOTD_FILE is not supported
|
||||||
|
|
||||||
|
# Currently ISSUE_FILE is not supported
|
||||||
|
|
||||||
|
# Currently TTYTYPE_FILE is not supported
|
||||||
|
|
||||||
|
# Currently FTMP_FILE is not supported
|
||||||
|
|
||||||
|
# Currently NOLOGINS_FILE is not supported
|
||||||
|
|
||||||
|
# Currently SU_NAME is not supported
|
||||||
|
|
||||||
|
# *REQUIRED*
|
||||||
|
# Directory where mailboxes reside, _or_ name of file, relative to the
|
||||||
|
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
|
||||||
|
#
|
||||||
|
MAIL_DIR /var/spool/mail
|
||||||
|
#MAIL_FILE .mail
|
||||||
|
|
||||||
|
#
|
||||||
|
# If defined, file which inhibits all the usual chatter during the login
|
||||||
|
# sequence. If a full pathname, then hushed mode will be enabled if the
|
||||||
|
# user's name or shell are found in the file. If not a full pathname, then
|
||||||
|
# hushed mode will be enabled if the file exists in the user's home directory.
|
||||||
|
#
|
||||||
|
#HUSHLOGIN_FILE .hushlogin
|
||||||
|
#HUSHLOGIN_FILE /etc/hushlogins
|
||||||
|
|
||||||
|
# Currently ENV_TZ is not supported
|
||||||
|
|
||||||
|
# Currently ENV_HZ is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# The default PATH settings, for superuser and normal users.
|
||||||
|
#
|
||||||
|
# (they are minimal, add the rest in the shell startup files)
|
||||||
|
#ENV_SUPATH PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||||
|
#ENV_PATH PATH=/bin:/usr/bin
|
||||||
|
|
||||||
|
#
|
||||||
|
# Terminal permissions
|
||||||
|
#
|
||||||
|
# TTYGROUP Login tty will be assigned this group ownership.
|
||||||
|
# TTYPERM Login tty will be set to this permission.
|
||||||
|
#
|
||||||
|
# If you have a write(1) program which is "setgid" to a special group
|
||||||
|
# which owns the terminals, define TTYGROUP as the number of such group
|
||||||
|
# and TTYPERM as 0620. Otherwise leave TTYGROUP commented out and
|
||||||
|
# set TTYPERM to either 622 or 600.
|
||||||
|
#
|
||||||
|
#TTYGROUP tty
|
||||||
|
#TTYPERM 0600
|
||||||
|
|
||||||
|
# Currently ERASECHAR, KILLCHAR and ULIMIT are not supported
|
||||||
|
|
||||||
|
# Default initial "umask" value used by login(1) on non-PAM enabled systems.
|
||||||
|
# Default "umask" value for pam_umask(8) on PAM enabled systems.
|
||||||
|
# UMASK is also used by useradd(8) and newusers(8) to set the mode for new
|
||||||
|
# home directories if HOME_MODE is not set.
|
||||||
|
# 022 is the default value, but 027, or even 077, could be considered
|
||||||
|
# for increased privacy. There is no One True Answer here: each sysadmin
|
||||||
|
# must make up their mind.
|
||||||
|
UMASK 027
|
||||||
|
|
||||||
|
# HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new
|
||||||
|
# home directories.
|
||||||
|
# If HOME_MODE is not set, the value of UMASK is used to create the mode.
|
||||||
|
HOME_MODE 0700
|
||||||
|
|
||||||
|
# Password aging controls:
|
||||||
|
#
|
||||||
|
# PASS_MAX_DAYS Maximum number of days a password may be used.
|
||||||
|
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
|
||||||
|
# PASS_MIN_LEN Minimum acceptable password length.
|
||||||
|
# PASS_WARN_AGE Number of days warning given before a password expires.
|
||||||
|
#
|
||||||
|
PASS_MAX_DAYS 99999
|
||||||
|
PASS_MIN_DAYS 0
|
||||||
|
PASS_WARN_AGE 7
|
||||||
|
|
||||||
|
# Currently PASS_MIN_LEN is not supported
|
||||||
|
|
||||||
|
# Currently SU_WHEEL_ONLY is not supported
|
||||||
|
|
||||||
|
# Currently CRACKLIB_DICTPATH is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Min/max values for automatic uid selection in useradd(8)
|
||||||
|
#
|
||||||
|
UID_MIN 1000
|
||||||
|
UID_MAX 60000
|
||||||
|
# System accounts
|
||||||
|
SYS_UID_MIN 201
|
||||||
|
SYS_UID_MAX 999
|
||||||
|
# Extra per user uids
|
||||||
|
SUB_UID_MIN 524288
|
||||||
|
SUB_UID_MAX 600100000
|
||||||
|
SUB_UID_COUNT 65536
|
||||||
|
|
||||||
|
#
|
||||||
|
# Min/max values for automatic gid selection in groupadd(8)
|
||||||
|
#
|
||||||
|
GID_MIN 1000
|
||||||
|
GID_MAX 60000
|
||||||
|
# System accounts
|
||||||
|
SYS_GID_MIN 201
|
||||||
|
SYS_GID_MAX 999
|
||||||
|
# Extra per user group ids
|
||||||
|
SUB_GID_MIN 524288
|
||||||
|
SUB_GID_MAX 600100000
|
||||||
|
SUB_GID_COUNT 65536
|
||||||
|
|
||||||
|
#
|
||||||
|
# Max number of login(1) retries if password is bad
|
||||||
|
#
|
||||||
|
#LOGIN_RETRIES 3
|
||||||
|
|
||||||
|
#
|
||||||
|
# Max time in seconds for login(1)
|
||||||
|
#
|
||||||
|
#LOGIN_TIMEOUT 60
|
||||||
|
|
||||||
|
# Currently PASS_CHANGE_TRIES is not supported
|
||||||
|
|
||||||
|
# Currently PASS_ALWAYS_WARN is not supported
|
||||||
|
|
||||||
|
# Currently PASS_MAX_LEN is not supported
|
||||||
|
|
||||||
|
# Currently CHFN_AUTH is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Which fields may be changed by regular users using chfn(1) - use
|
||||||
|
# any combination of letters "frwh" (full name, room number, work
|
||||||
|
# phone, home phone). If not defined, no changes are allowed.
|
||||||
|
# For backward compatibility, "yes" = "rwh" and "no" = "frwh".
|
||||||
|
#
|
||||||
|
#CHFN_RESTRICT rwh
|
||||||
|
|
||||||
|
# Currently LOGIN_STRING is not supported
|
||||||
|
|
||||||
|
# Currently MD5_CRYPT_ENAB is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# If set to MD5, MD5-based algorithm will be used for encrypting password
|
||||||
|
# If set to SHA256, SHA256-based algorithm will be used for encrypting password
|
||||||
|
# If set to SHA512, SHA512-based algorithm will be used for encrypting password
|
||||||
|
# If set to BCRYPT, BCRYPT-based algorithm will be used for encrypting password
|
||||||
|
# If set to YESCRYPT, YESCRYPT-based algorithm will be used for encrypting password
|
||||||
|
# If set to DES, DES-based algorithm will be used for encrypting password (default)
|
||||||
|
#
|
||||||
|
ENCRYPT_METHOD YESCRYPT
|
||||||
|
|
||||||
|
#
|
||||||
|
# Only works if ENCRYPT_METHOD is set to SHA256 or SHA512.
|
||||||
|
#
|
||||||
|
# Define the number of SHA rounds.
|
||||||
|
# With a lot of rounds, it is more difficult to brute-force the password.
|
||||||
|
# However, more CPU resources will be needed to authenticate users if
|
||||||
|
# this value is increased.
|
||||||
|
#
|
||||||
|
# If not specified, the libc will choose the default number of rounds (5000).
|
||||||
|
# The values must be within the 1000-999999999 range.
|
||||||
|
#
|
||||||
|
#SHA_CRYPT_MAX_ROUNDS 5000
|
||||||
|
|
||||||
|
# Currently SHA_CRYPT_MIN_ROUNDS is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Only works if ENCRYPT_METHOD is set to BCRYPT.
|
||||||
|
#
|
||||||
|
# Define the number of BCRYPT rounds.
|
||||||
|
# With a lot of rounds, it is more difficult to brute-force the password.
|
||||||
|
# However, more CPU resources will be needed to authenticate users if
|
||||||
|
# this value is increased.
|
||||||
|
#
|
||||||
|
# If not specified, 13 rounds will be attempted.
|
||||||
|
# If only one of the MIN or MAX values is set, then this value will be used.
|
||||||
|
# If MIN > MAX, the highest value will be used.
|
||||||
|
#
|
||||||
|
#BCRYPT_MIN_ROUNDS 13
|
||||||
|
#BCRYPT_MAX_ROUNDS 31
|
||||||
|
|
||||||
|
#
|
||||||
|
# Only works if ENCRYPT_METHOD is set to YESCRYPT.
|
||||||
|
#
|
||||||
|
# Define the YESCRYPT cost factor.
|
||||||
|
# With a higher cost factor, it is more difficult to brute-force the password.
|
||||||
|
# However, more CPU time and more memory will be needed to authenticate users
|
||||||
|
# if this value is increased.
|
||||||
|
#
|
||||||
|
# If not specified, a cost factor of#
|
||||||
|
# Please note that the parameters in this configuration file control the
|
||||||
|
# behavior of the tools from the shadow-utils component. None of these
|
||||||
|
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
|
||||||
|
# passwd command) should therefore be configured elsewhere. Refer to
|
||||||
|
# /etc/pam.d/system-auth for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Delay in seconds before being allowed another attempt after a login failure
|
||||||
|
# Note: When PAM is used, some modules may enforce a minimum delay (e.g.
|
||||||
|
# pam_unix(8) enforces a 2s delay)
|
||||||
|
#
|
||||||
|
#FAIL_DELAY 3
|
||||||
|
|
||||||
|
# Currently FAILLOG_ENAB is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enable display of unknown usernames when login(1) failures are recorded.
|
||||||
|
#
|
||||||
|
#LOG_UNKFAIL_ENAB no
|
||||||
|
|
||||||
|
# Currently LOG_OK_LOGINS is not supported
|
||||||
|
|
||||||
|
# Currently LASTLOG_ENAB is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Limit the highest user ID number for which the lastlog entries should
|
||||||
|
# be updated.
|
||||||
|
#
|
||||||
|
# No LASTLOG_UID_MAX means that there is no user ID limit for writing
|
||||||
|
# lastlog entries.
|
||||||
|
#
|
||||||
|
#LASTLOG_UID_MAX
|
||||||
|
|
||||||
|
# Currently MAIL_CHECK_ENAB is not supported
|
||||||
|
|
||||||
|
# Currently OBSCURE_CHECKS_ENAB is not supported
|
||||||
|
|
||||||
|
# Currently PORTTIME_CHECKS_ENAB is not supported
|
||||||
|
|
||||||
|
# Currently QUOTAS_ENAB is not supported
|
||||||
|
|
||||||
|
# Currently SYSLOG_SU_ENAB is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enable "syslog" logging of newgrp(1) and sg(1) activity.
|
||||||
|
#
|
||||||
|
#SYSLOG_SG_ENAB yes
|
||||||
|
|
||||||
|
# Currently CONSOLE is not supported
|
||||||
|
|
||||||
|
# Currently SULOG_FILE is not supported
|
||||||
|
|
||||||
|
# Currently MOTD_FILE is not supported
|
||||||
|
|
||||||
|
# Currently ISSUE_FILE is not supported
|
||||||
|
|
||||||
|
# Currently TTYTYPE_FILE is not supported
|
||||||
|
|
||||||
|
# Currently FTMP_FILE is not supported
|
||||||
|
|
||||||
|
# Currently NOLOGINS_FILE is not supported
|
||||||
|
|
||||||
|
# Currently SU_NAME is not supported
|
||||||
|
|
||||||
|
# *REQUIRED*
|
||||||
|
# Directory where mailboxes reside, _or_ name of file, relative to the
|
||||||
|
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
|
||||||
|
#
|
||||||
|
MAIL_DIR /var/spool/mail
|
||||||
|
#MAIL_FILE .mail
|
||||||
|
|
||||||
|
#
|
||||||
|
# If defined, file which inhibits all the usual chatter during the login
|
||||||
|
# sequence. If a full pathname, then hushed mode will be enabled if the
|
||||||
|
# user's name or shell are found in the file. If not a full pathname, then
|
||||||
|
# hushed mode will be enabled if the file exists in the user's home directory.
|
||||||
|
#
|
||||||
|
#HUSHLOGIN_FILE .hushlogin
|
||||||
|
#HUSHLOGIN_FILE /etc/hushlogins
|
||||||
|
|
||||||
|
# Currently ENV_TZ is not supported
|
||||||
|
|
||||||
|
# Currently ENV_HZ is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# The default PATH settings, for superuser and normal users.
|
||||||
|
#
|
||||||
|
# (they are minimal, add the rest in the shell startup files)
|
||||||
|
#ENV_SUPATH PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||||
|
#ENV_PATH PATH=/bin:/usr/bin
|
||||||
|
|
||||||
|
#
|
||||||
|
# Terminal permissions
|
||||||
|
#
|
||||||
|
# TTYGROUP Login tty will be assigned this group ownership.
|
||||||
|
# TTYPERM Login tty will be set to this permission.
|
||||||
|
#
|
||||||
|
# If you have a write(1) program which is "setgid" to a special group
|
||||||
|
# which owns the terminals, define TTYGROUP as the number of such group
|
||||||
|
# and TTYPERM as 0620. Otherwise leave TTYGROUP commented out and
|
||||||
|
# set TTYPERM to either 622 or 600.
|
||||||
|
#
|
||||||
|
#TTYGROUP tty
|
||||||
|
#TTYPERM 0600
|
||||||
|
|
||||||
|
# Currently ERASECHAR, KILLCHAR and ULIMIT are not supported
|
||||||
|
|
||||||
|
# Default initial "umask" value used by login(1) on non-PAM enabled systems.
|
||||||
|
# Default "umask" value for pam_umask(8) on PAM enabled systems.
|
||||||
|
# UMASK is also used by useradd(8) and newusers(8) to set the mode for new
|
||||||
|
# home directories if HOME_MODE is not set.
|
||||||
|
# 022 is the default value, but 027, or even 077, could be considered
|
||||||
|
# for increased privacy. There is no One True Answer here: each sysadmin
|
||||||
|
# must make up their mind.
|
||||||
|
UMASK 022
|
||||||
|
|
||||||
|
# HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new
|
||||||
|
# home directories.
|
||||||
|
# If HOME_MODE is not set, the value of UMASK is used to create the mode.
|
||||||
|
HOME_MODE 0700
|
||||||
|
|
||||||
|
# Password aging controls:
|
||||||
|
#
|
||||||
|
# PASS_MAX_DAYS Maximum number of days a password may be used.
|
||||||
|
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
|
||||||
|
# PASS_MIN_LEN Minimum acceptable password length.
|
||||||
|
# PASS_WARN_AGE Number of days warning given before a password expires.
|
||||||
|
#
|
||||||
|
PASS_MAX_DAYS 99999
|
||||||
|
PASS_MIN_DAYS 0
|
||||||
|
PASS_WARN_AGE 7
|
||||||
|
|
||||||
|
# Currently PASS_MIN_LEN is not supported
|
||||||
|
|
||||||
|
# Currently SU_WHEEL_ONLY is not supported
|
||||||
|
|
||||||
|
# Currently CRACKLIB_DICTPATH is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Min/max values for automatic uid selection in useradd(8)
|
||||||
|
#
|
||||||
|
UID_MIN 1000
|
||||||
|
UID_MAX 60000
|
||||||
|
# System accounts
|
||||||
|
SYS_UID_MIN 201
|
||||||
|
SYS_UID_MAX 999
|
||||||
|
# Extra per user uids
|
||||||
|
SUB_UID_MIN 524288
|
||||||
|
SUB_UID_MAX 600100000
|
||||||
|
SUB_UID_COUNT 65536
|
||||||
|
|
||||||
|
#
|
||||||
|
# Min/max values for automatic gid selection in groupadd(8)
|
||||||
|
#
|
||||||
|
GID_MIN 1000
|
||||||
|
GID_MAX 60000
|
||||||
|
# System accounts
|
||||||
|
SYS_GID_MIN 201
|
||||||
|
SYS_GID_MAX 999
|
||||||
|
# Extra per user group ids
|
||||||
|
SUB_GID_MIN 524288
|
||||||
|
SUB_GID_MAX 600100000
|
||||||
|
SUB_GID_COUNT 65536
|
||||||
|
|
||||||
|
#
|
||||||
|
# Max number of login(1) retries if password is bad
|
||||||
|
#
|
||||||
|
#LOGIN_RETRIES 3
|
||||||
|
|
||||||
|
#
|
||||||
|
# Max time in seconds for login(1)
|
||||||
|
#
|
||||||
|
#LOGIN_TIMEOUT 60
|
||||||
|
|
||||||
|
# Currently PASS_CHANGE_TRIES is not supported
|
||||||
|
|
||||||
|
# Currently PASS_ALWAYS_WARN is not supported
|
||||||
|
|
||||||
|
# Currently PASS_MAX_LEN is not supported
|
||||||
|
|
||||||
|
# Currently CHFN_AUTH is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Which fields may be changed by regular users using chfn(1) - use
|
||||||
|
# any combination of letters "frwh" (full name, room number, work
|
||||||
|
# phone, home phone). If not defined, no changes are allowed.
|
||||||
|
# For backward compatibility, "yes" = "rwh" and "no" = "frwh".
|
||||||
|
#
|
||||||
|
#CHFN_RESTRICT rwh
|
||||||
|
|
||||||
|
# Currently LOGIN_STRING is not supported
|
||||||
|
|
||||||
|
# Currently MD5_CRYPT_ENAB is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# If set to MD5, MD5-based algorithm will be used for encrypting password
|
||||||
|
# If set to SHA256, SHA256-based algorithm will be used for encrypting password
|
||||||
|
# If set to SHA512, SHA512-based algorithm will be used for encrypting password
|
||||||
|
# If set to BCRYPT, BCRYPT-based algorithm will be used for encrypting password
|
||||||
|
# If set to YESCRYPT, YESCRYPT-based algorithm will be used for encrypting password
|
||||||
|
# If set to DES, DES-based algorithm will be used for encrypting password (default)
|
||||||
|
#
|
||||||
|
ENCRYPT_METHOD YESCRYPT
|
||||||
|
|
||||||
|
#
|
||||||
|
# Only works if ENCRYPT_METHOD is set to SHA256 or SHA512.
|
||||||
|
#
|
||||||
|
# Define the number of SHA rounds.
|
||||||
|
# With a lot of rounds, it is more difficult to brute-force the password.
|
||||||
|
# However, more CPU resources will be needed to authenticate users if
|
||||||
|
# this value is increased.
|
||||||
|
#
|
||||||
|
# If not specified, the libc will choose the default number of rounds (5000).
|
||||||
|
# The values must be within the 1000-999999999 range.
|
||||||
|
#
|
||||||
|
#SHA_CRYPT_MAX_ROUNDS 5000
|
||||||
|
|
||||||
|
# Currently SHA_CRYPT_MIN_ROUNDS is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Only works if ENCRYPT_METHOD is set to BCRYPT.
|
||||||
|
#
|
||||||
|
# Define the number of BCRYPT rounds.
|
||||||
|
# With a lot of rounds, it is more difficult to brute-force the password.
|
||||||
|
# However, more CPU resources will be needed to authenticate users if
|
||||||
|
# this value is increased.
|
||||||
|
#
|
||||||
|
# If not specified, 13 rounds will be attempted.
|
||||||
|
# If only one of the MIN or MAX values is set, then this value will be used.
|
||||||
|
# If MIN > MAX, the highest value will be used.
|
||||||
|
#
|
||||||
|
#BCRYPT_MIN_ROUNDS 13
|
||||||
|
#BCRYPT_MAX_ROUNDS 31
|
||||||
|
|
||||||
|
#
|
||||||
|
# Only works if ENCRYPT_METHOD is set to YESCRYPT.
|
||||||
|
#
|
||||||
|
# Define the YESCRYPT cost factor.
|
||||||
|
# With a higher cost factor, it is more difficult to brute-force the password.
|
||||||
|
# However, more CPU time and more memory will be needed to authenticate users
|
||||||
|
# if this value is increased.
|
||||||
|
#
|
||||||
|
# If not specified, a cost factor of 5 will be used.
|
||||||
|
# The value must be within the 1-11 range.
|
||||||
|
#
|
||||||
|
YESCRYPT_COST_FACTOR 11
|
||||||
|
|
||||||
|
# Currently CONSOLE_GROUPS is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Should login be allowed if we can't cd to the home directory?
|
||||||
|
# Default is yes.
|
||||||
|
#
|
||||||
|
#DEFAULT_HOME yes
|
||||||
|
|
||||||
|
# Currently ENVIRON_FILE is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# If defined, this command is run when removing a user.
|
||||||
|
# It should remove any at/cron/print jobs etc. owned by
|
||||||
|
# the user to be removed (passed as the first argument).
|
||||||
|
#
|
||||||
|
#USERDEL_CMD /usr/sbin/userdel_local
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enables userdel(8) to remove user groups if no members exist.
|
||||||
|
#
|
||||||
|
USERGROUPS_ENAB yes
|
||||||
|
|
||||||
|
#
|
||||||
|
# If set to a non-zero number, the shadow utilities will make sure that
|
||||||
|
# groups never have more than this number of users on one line.
|
||||||
|
# This permits to support split groups (groups split into multiple lines,
|
||||||
|
# with the same group ID, to avoid limitation of the line length in the
|
||||||
|
# group file).
|
||||||
|
#
|
||||||
|
# 0 is the default value and disables this feature.
|
||||||
|
#
|
||||||
|
#MAX_MEMBERS_PER_GROUP 0
|
||||||
|
|
||||||
|
#
|
||||||
|
# If useradd(8) should create home directories for users by default (non
|
||||||
|
# system users only).
|
||||||
|
# This option is overridden with the -M or -m flags on the useradd(8)
|
||||||
|
# command-line.
|
||||||
|
#
|
||||||
|
CREATE_HOME yes
|
||||||
|
|
||||||
|
#
|
||||||
|
# Force use shadow, even if shadow passwd & shadow group files are
|
||||||
|
# missing.
|
||||||
|
#
|
||||||
|
#FORCE_SHADOW yes
|
||||||
|
|
||||||
|
#
|
||||||
|
# Select the HMAC cryptography algorithm.
|
||||||
|
# Used in pam_timestamp module to calculate the keyed-hash message
|
||||||
|
# authentication code.
|
||||||
|
#
|
||||||
|
# Note: It is recommended to check hmac(3) to see the possible algorithms
|
||||||
|
# that are available in your system.
|
||||||
|
#
|
||||||
|
HMAC_CRYPTO_ALGO SHA512
|
||||||
|
5 will be used.
|
||||||
|
# The value must be within the 1-11 range.
|
||||||
|
#
|
||||||
|
YESCRYPT_COST_FACTOR 11
|
||||||
|
|
||||||
|
# Currently CONSOLE_GROUPS is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# Should login be allowed if we can't cd to the home directory?
|
||||||
|
# Default is yes.
|
||||||
|
#
|
||||||
|
#DEFAULT_HOME yes
|
||||||
|
|
||||||
|
# Currently ENVIRON_FILE is not supported
|
||||||
|
|
||||||
|
#
|
||||||
|
# If defined, this command is run when removing a user.
|
||||||
|
# It should remove any at/cron/print jobs etc. owned by
|
||||||
|
# the user to be removed (passed as the first argument).
|
||||||
|
#
|
||||||
|
#USERDEL_CMD /usr/sbin/userdel_local
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enables userdel(8) to remove user groups if no members exist.
|
||||||
|
#
|
||||||
|
USERGROUPS_ENAB yes
|
||||||
|
|
||||||
|
#
|
||||||
|
# If set to a non-zero number, the shadow utilities will make sure that
|
||||||
|
# groups never have more than this number of users on one line.
|
||||||
|
# This permits to support split groups (groups split into multiple lines,
|
||||||
|
# with the same group ID, to avoid limitation of the line length in the
|
||||||
|
# group file).
|
||||||
|
#
|
||||||
|
# 0 is the default value and disables this feature.
|
||||||
|
#
|
||||||
|
#MAX_MEMBERS_PER_GROUP 0
|
||||||
|
|
||||||
|
#
|
||||||
|
# If useradd(8) should create home directories for users by default (non
|
||||||
|
# system users only).
|
||||||
|
# This option is overridden with the -M or -m flags on the useradd(8)
|
||||||
|
# command-line.
|
||||||
|
#
|
||||||
|
CREATE_HOME yes
|
||||||
|
|
||||||
|
#
|
||||||
|
# Force use shadow, even if shadow passwd & shadow group files are
|
||||||
|
# missing.
|
||||||
|
#
|
||||||
|
#FORCE_SHADOW yes
|
||||||
|
|
||||||
|
#
|
||||||
|
# Select the HMAC cryptography algorithm.
|
||||||
|
# Used in pam_timestamp module to calculate the keyed-hash message
|
||||||
|
# authentication code.
|
||||||
|
#
|
||||||
|
# Note: It is recommended to check hmac(3) to see the possible algorithms
|
||||||
|
# that are available in your system.
|
||||||
|
#
|
||||||
|
HMAC_CRYPTO_ALGO SHA512
|
||||||
62
config/files/usr/etc/security/faillock.conf
Normal file
62
config/files/usr/etc/security/faillock.conf
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
# Configuration for locking the user after multiple failed
|
||||||
|
# authentication attempts.
|
||||||
|
#
|
||||||
|
# The directory where the user files with the failure records are kept.
|
||||||
|
# The default is /var/run/faillock.
|
||||||
|
# dir = /var/run/faillock
|
||||||
|
#
|
||||||
|
# Will log the user name into the system log if the user is not found.
|
||||||
|
# Enabled if option is present.
|
||||||
|
audit
|
||||||
|
#
|
||||||
|
# Don't print informative messages.
|
||||||
|
# Enabled if option is present.
|
||||||
|
# silent
|
||||||
|
#
|
||||||
|
# Don't log informative messages via syslog.
|
||||||
|
# Enabled if option is present.
|
||||||
|
# no_log_info
|
||||||
|
#
|
||||||
|
# Only track failed user authentications attempts for local users
|
||||||
|
# in /etc/passwd and ignore centralized (AD, IdM, LDAP, etc.) users.
|
||||||
|
# The `faillock` command will also no longer track user failed
|
||||||
|
# authentication attempts. Enabling this option will prevent a
|
||||||
|
# double-lockout scenario where a user is locked out locally and
|
||||||
|
# in the centralized mechanism.
|
||||||
|
# Enabled if option is present.
|
||||||
|
# local_users_only
|
||||||
|
#
|
||||||
|
# Deny access if the number of consecutive authentication failures
|
||||||
|
# for this user during the recent interval exceeds n tries.
|
||||||
|
# The default is 3.
|
||||||
|
deny = 50
|
||||||
|
#
|
||||||
|
# The length of the interval during which the consecutive
|
||||||
|
# authentication failures must happen for the user account
|
||||||
|
# lock out is <replaceable>n</replaceable> seconds.
|
||||||
|
# The default is 900 (15 minutes).
|
||||||
|
# fail_interval = 900
|
||||||
|
#
|
||||||
|
# The access will be re-enabled after n seconds after the lock out.
|
||||||
|
# The value 0 has the same meaning as value `never` - the access
|
||||||
|
# will not be re-enabled without resetting the faillock
|
||||||
|
# entries by the `faillock` command.
|
||||||
|
# The default is 600 (10 minutes).
|
||||||
|
unlock_time = 86400
|
||||||
|
#
|
||||||
|
# Root account can become locked as well as regular accounts.
|
||||||
|
# Enabled if option is present.
|
||||||
|
even_deny_root
|
||||||
|
#
|
||||||
|
# This option implies the `even_deny_root` option.
|
||||||
|
# Allow access after n seconds to root account after the
|
||||||
|
# account is locked. In case the option is not specified
|
||||||
|
# the value is the same as of the `unlock_time` option.
|
||||||
|
# root_unlock_time = 900
|
||||||
|
#
|
||||||
|
# If a group name is specified with this option, members
|
||||||
|
# of the group will be handled by this module the same as
|
||||||
|
# the root account (the options `even_deny_root>` and
|
||||||
|
# `root_unlock_time` will apply to them.
|
||||||
|
# By default, the option is not set.
|
||||||
|
# admin_group = <admin_group_name>
|
||||||
79
config/files/usr/etc/security/pwquality.conf
Normal file
79
config/files/usr/etc/security/pwquality.conf
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# Configuration for systemwide password quality limits
|
||||||
|
# Defaults:
|
||||||
|
#
|
||||||
|
# Number of characters in the new password that must not be present in the
|
||||||
|
# old password.
|
||||||
|
# difok = 1
|
||||||
|
#
|
||||||
|
# Minimum acceptable size for the new password (plus one if
|
||||||
|
# credits are not disabled which is the default). (See pam_cracklib manual.)
|
||||||
|
# Cannot be set to lower value than 6.
|
||||||
|
minlen = 15
|
||||||
|
#
|
||||||
|
# The maximum credit for having digits in the new password. If less than 0
|
||||||
|
# it is the minimum number of digits in the new password.
|
||||||
|
dcredit = -1
|
||||||
|
#
|
||||||
|
# The maximum credit for having uppercase characters in the new password.
|
||||||
|
# If less than 0 it is the minimum number of uppercase characters in the new
|
||||||
|
# password.
|
||||||
|
ucredit = -1
|
||||||
|
#
|
||||||
|
# The maximum credit for having lowercase characters in the new password.
|
||||||
|
# If less than 0 it is the minimum number of lowercase characters in the new
|
||||||
|
# password.
|
||||||
|
lcredit = -1
|
||||||
|
#
|
||||||
|
# The maximum credit for having other characters in the new password.
|
||||||
|
# If less than 0 it is the minimum number of other characters in the new
|
||||||
|
# password.
|
||||||
|
ocredit = -1
|
||||||
|
#
|
||||||
|
# The minimum number of required classes of characters for the new
|
||||||
|
# password (digits, uppercase, lowercase, others).
|
||||||
|
# minclass = 0
|
||||||
|
#
|
||||||
|
# The maximum number of allowed consecutive same characters in the new password.
|
||||||
|
# The check is disabled if the value is 0.
|
||||||
|
# maxrepeat = 0
|
||||||
|
#
|
||||||
|
# The maximum number of allowed consecutive characters of the same class in the
|
||||||
|
# new password.
|
||||||
|
# The check is disabled if the value is 0.
|
||||||
|
# maxclassrepeat = 0
|
||||||
|
#
|
||||||
|
# Whether to check for the words from the passwd entry GECOS string of the user.
|
||||||
|
# The check is enabled if the value is not 0.
|
||||||
|
# gecoscheck = 0
|
||||||
|
#
|
||||||
|
# Whether to check for the words from the cracklib dictionary.
|
||||||
|
# The check is enabled if the value is not 0.
|
||||||
|
dictcheck = 1
|
||||||
|
#
|
||||||
|
# Whether to check if it contains the user name in some form.
|
||||||
|
# The check is enabled if the value is not 0.
|
||||||
|
usercheck = 1
|
||||||
|
#
|
||||||
|
# Length of substrings from the username to check for in the password
|
||||||
|
# The check is enabled if the value is greater than 0 and usercheck is enabled.
|
||||||
|
usersubstr = 5
|
||||||
|
#
|
||||||
|
# Whether the check is enforced by the PAM module and possibly other
|
||||||
|
# applications.
|
||||||
|
# The new password is rejected if it fails the check and the value is not 0.
|
||||||
|
enforcing = 0
|
||||||
|
#
|
||||||
|
# Path to the cracklib dictionaries. Default is to use the cracklib default.
|
||||||
|
# dictpath =
|
||||||
|
#
|
||||||
|
# Prompt user at most N times before returning with error. The default is 1.
|
||||||
|
# retry = 3
|
||||||
|
#
|
||||||
|
# Enforces pwquality checks on the root user password.
|
||||||
|
# Enabled if the option is present.
|
||||||
|
enforce_for_root
|
||||||
|
#
|
||||||
|
# Skip testing the password quality for users that are not present in the
|
||||||
|
# /etc/passwd file.
|
||||||
|
# Enabled if the option is present.
|
||||||
|
# local_users_only
|
||||||
6
config/scripts/authselect.sh
Normal file
6
config/scripts/authselect.sh
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Enabling faillock in PAM authentication profile"
|
||||||
|
|
||||||
|
authselect enable-feature with-faillock 1> /dev/null
|
||||||
Reference in New Issue
Block a user