summaryrefslogtreecommitdiffstats
path: root/meta-phosphor
diff options
context:
space:
mode:
authorRichard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>2018-07-16 01:01:32 +0530
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2018-10-17 08:53:52 -0400
commitb4103f45d957422337bd34e43776e086e4208593 (patch)
treef165f33a9aa13ba9132833aee2f341c9fc51f114 /meta-phosphor
parentca67d6eb5adf8a486eb9999af0347a1cc4ed5786 (diff)
downloadtalos-openbmc-b4103f45d957422337bd34e43776e086e4208593.tar.gz
talos-openbmc-b4103f45d957422337bd34e43776e086e4208593.zip
Enforce password security through pam
Add suitable pam modules in place which will enforce password security 1. pam_cracklib is added with minimum length of 8. Length greater than 8 can be configured through D-Bus interface. 2. pam_pwhistory is added to remember old password. Disabled by default. Can be enabled through D-Bus interface 3. pam-tally2 used to lock out account after failed attempts. Disabled by deault. Can be enabled through D-Bus interface Note: pam_cracklib will do password verification one extra time, hence with this fix, any password change will request, Retype new password for 2 times. (From meta-phosphor rev: bb70abc065a7eeb3206460ad20041bc132dab784) Change-Id: Ibc5e275196509fb0b47c7174805195475d66590c Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com> Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'meta-phosphor')
-rw-r--r--meta-phosphor/recipes-core/pam/libpam/pam.d/common-account26
-rw-r--r--meta-phosphor/recipes-core/pam/libpam/pam.d/common-auth19
-rw-r--r--meta-phosphor/recipes-core/pam/libpam/pam.d/common-password28
-rw-r--r--meta-phosphor/recipes-core/pam/libpam_%.bbappend11
4 files changed, 84 insertions, 0 deletions
diff --git a/meta-phosphor/recipes-core/pam/libpam/pam.d/common-account b/meta-phosphor/recipes-core/pam/libpam/pam.d/common-account
new file mode 100644
index 000000000..10cfc73ea
--- /dev/null
+++ b/meta-phosphor/recipes-core/pam/libpam/pam.d/common-account
@@ -0,0 +1,26 @@
+#
+# /etc/pam.d/common-account - authorization settings common to all services
+#
+# This file is included from other service-specific PAM config files,
+# and should contain a list of the authorization modules that define
+# the central access policy for use on the system. The default is to
+# only deny service to users whose accounts are expired in /etc/shadow.
+#
+# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
+# To take advantage of this, it is recommended that you configure any
+# local modules either before or after the default block, and use
+# pam-auth-update to manage selection of other modules. See
+# pam-auth-update(8) for details.
+#
+
+# here are the per-package modules (the "Primary" block)
+account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so
+# here's the fallback if no module succeeds
+account requisite pam_deny.so
+account required pam_tally2.so
+# prime the stack with a positive return value if there isn't one already;
+# this avoids us returning an error just because nothing sets a success code
+# since the modules above will each just jump around
+account required pam_permit.so
+# and here are more per-package modules (the "Additional" block)
+# end of pam-auth-update config
diff --git a/meta-phosphor/recipes-core/pam/libpam/pam.d/common-auth b/meta-phosphor/recipes-core/pam/libpam/pam.d/common-auth
new file mode 100644
index 000000000..4ac58fb54
--- /dev/null
+++ b/meta-phosphor/recipes-core/pam/libpam/pam.d/common-auth
@@ -0,0 +1,19 @@
+#
+# /etc/pam.d/common-auth - authentication settings common to all services
+#
+# This file is included from other service-specific PAM config files,
+# and should contain a list of the authentication modules that define
+# the central authentication scheme for use on the system
+# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
+# traditional Unix authentication mechanisms.
+
+# here are the per-package modules (the "Primary" block)
+auth [success=ok default=1] pam_tally2.so deny=0 unlock_time=0
+auth [success=1 default=ignore] pam_unix.so nullok_secure
+# here's the fallback if no module succeeds
+auth requisite pam_deny.so
+# prime the stack with a positive return value if there isn't one already;
+# this avoids us returning an error just because nothing sets a success code
+# since the modules above will each just jump around
+auth required pam_permit.so
+# and here are more per-package modules (the "Additional" block)
diff --git a/meta-phosphor/recipes-core/pam/libpam/pam.d/common-password b/meta-phosphor/recipes-core/pam/libpam/pam.d/common-password
new file mode 100644
index 000000000..ddd7ca1d7
--- /dev/null
+++ b/meta-phosphor/recipes-core/pam/libpam/pam.d/common-password
@@ -0,0 +1,28 @@
+#
+# /etc/pam.d/common-password - password-related modules common to all services
+#
+# This file is included from other service-specific PAM config files,
+# and should contain a list of modules that define the services to be
+# used to change user passwords. The default is pam_unix.
+
+# Explanation of pam_unix options:
+#
+# The "sha512" option enables salted SHA512 passwords. Without this option,
+# the default is Unix crypt. Prior releases used the option "md5".
+#
+# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
+# login.defs.
+#
+# See the pam_unix manpage for other options.
+
+# here are the per-package modules (the "Primary" block)
+password [success=ok default=die] pam_cracklib.so debug enforce_for_root reject_username minlen=8 difok=0
+#password [success=ok ignore=ignore default=die] pam_pwhistory.so debug enforce_for_root remember=0 use_authtok
+password [success=1 default=die] pam_unix.so sha512 use_authtok
+# here's the fallback if no module succeeds
+password requisite pam_deny.so
+# prime the stack with a positive return value if there isn't one already;
+# this avoids us returning an error just because nothing sets a success code
+# since the modules above will each just jump around
+password required pam_permit.so
+# and here are more per-package modules (the "Additional" block)
diff --git a/meta-phosphor/recipes-core/pam/libpam_%.bbappend b/meta-phosphor/recipes-core/pam/libpam_%.bbappend
new file mode 100644
index 000000000..65c608bea
--- /dev/null
+++ b/meta-phosphor/recipes-core/pam/libpam_%.bbappend
@@ -0,0 +1,11 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI += " file://pam.d/common-password \
+ file://pam.d/common-account \
+ file://pam.d/common-auth \
+ "
+
+RDEPENDS_${PN}-runtime += "${MLPREFIX}pam-plugin-cracklib-${libpam_suffix} \
+ ${MLPREFIX}pam-plugin-tally2-${libpam_suffix} \
+ ${MLPREFIX}pam-plugin-pwhistory-${libpam_suffix} \
+ "
OpenPOWER on IntegriCloud