Patch summary:

    [shared] Modify /etc/login.defs rules to allow heading spaces & trailing 
comments
    [shared] Move accounts_maximum_age_login_defs.xml to shared
    [shared] Add Fedora 20 as another platform identifier for password 
/etc/login.defs rules
    [shared] Update test attestations timestamps for RHEL & Fedora (for 
password /etc/login.defs rules)
    [Fedora] Replace own copies of /etc/login.defs password OVAL checks with 
the shared ones
    [RHEL/6] Make a link for accounts_maximum_age_login_defs.xml from shared
    [RHEL/7] Make a link for accounts_maximum_age_login_defs.xml from shared

Testing report:

  The proposal has been tested on all of RHEL-6, RHEL-7, and Rawhide for both
combinations (with / without trailing comments, with / without heading spaces)
and seems to be working properly in all cases (further review / testing 
appreciated
of course).

Please review.

Thank you && Regards, Jan.
--
Jan iankko Lieskovsky / Red Hat Security Technologies Team
From 461fe1dbab938d2c7770216e1d0ace202116d3d7 Mon Sep 17 00:00:00 2001
From: Jan Lieskovsky <[email protected]>
Date: Fri, 11 Apr 2014 16:22:43 +0200
Subject: [PATCH] [shared] Modify /etc/login.defs rules to allow heading spaces
 & trailing comments [shared] Move accounts_maximum_age_login_defs.xml to
 shared [shared] Add Fedora 20 as another platform identifier [shared] Update
 test attestations timestamps for RHEL & Fedora [Fedora] Replace own copies of
 /etc/login.defs OVAL checks with shared version [RHEL/6] Make a link for
 accounts_maximum_age_login_defs.xml from shared [RHEL/7] The same

Signed-off-by: Jan Lieskovsky <[email protected]>
---
 .../checks/accounts_maximum_age_login_defs.xml     | 33 +------------------
 .../checks/accounts_minimum_age_login_defs.xml     | 35 +-------------------
 .../checks/accounts_password_minlen_login_defs.xml | 34 +-------------------
 .../accounts_password_warn_age_login_defs.xml      | 36 +--------------------
 .../checks/accounts_maximum_age_login_defs.xml     | 35 +-------------------
 .../checks/accounts_maximum_age_login_defs.xml     |  1 +
 shared/oval/accounts_maximum_age_login_defs.xml    | 37 ++++++++++++++++++++++
 shared/oval/accounts_minimum_age_login_defs.xml    |  8 +++--
 .../oval/accounts_password_minlen_login_defs.xml   |  8 +++--
 .../oval/accounts_password_warn_age_login_defs.xml |  8 +++--
 10 files changed, 58 insertions(+), 177 deletions(-)
 mode change 100644 => 120000 Fedora/input/checks/accounts_maximum_age_login_defs.xml
 mode change 100644 => 120000 Fedora/input/checks/accounts_minimum_age_login_defs.xml
 mode change 100644 => 120000 Fedora/input/checks/accounts_password_minlen_login_defs.xml
 mode change 100644 => 120000 Fedora/input/checks/accounts_password_warn_age_login_defs.xml
 mode change 100644 => 120000 RHEL/6/input/checks/accounts_maximum_age_login_defs.xml
 create mode 120000 RHEL/7/input/checks/accounts_maximum_age_login_defs.xml
 create mode 100644 shared/oval/accounts_maximum_age_login_defs.xml

diff --git a/Fedora/input/checks/accounts_maximum_age_login_defs.xml b/Fedora/input/checks/accounts_maximum_age_login_defs.xml
deleted file mode 100644
index 5e96118..0000000
--- a/Fedora/input/checks/accounts_maximum_age_login_defs.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<def-group>
-  <definition class="compliance" id="accounts_maximum_age_login_defs" version="1">
-    <metadata>
-      <title>Set Password Expiration Parameters</title>
-      <affected family="unix">
-        <platform>Fedora 19</platform>
-      </affected>
-      <description>The maximum password age policy should meet minimum requirements.</description>
-    </metadata>
-    <criteria comment="the value PASS_MAX_DAYS should be set appropriately in /etc/login.defs">
-      <criterion test_ref="test_pass_max_days" />
-    </criteria>
-  </definition>
-
-  <ind:textfilecontent54_test check="all" comment="the value PASS_MAX_DAYS should be set appropriately in /etc/login.defs" id="test_pass_max_days" version="1">
-    <ind:object object_ref="object_etc_login_defs_pass_max" />
-    <ind:state state_ref="state_accounts_maximum_age_login_defs" />
-  </ind:textfilecontent54_test>
-
-  <ind:textfilecontent54_object id="object_etc_login_defs_pass_max" version="1">
-    <ind:filepath>/etc/login.defs</ind:filepath>
-    <ind:pattern operation="pattern match">^[\s]*PASS_MAX_DAYS[\s]+(\d+)\s*$</ind:pattern>
-    <ind:instance datatype="int">1</ind:instance>
-  </ind:textfilecontent54_object>
-
-  <ind:textfilecontent54_state id="state_accounts_maximum_age_login_defs" version="1">
-    <ind:subexpression operation="less than or equal" var_ref="var_accounts_maximum_age_login_defs" datatype="int" />
-  </ind:textfilecontent54_state>
-
-  <external_variable comment="maximum password age" datatype="int" id="var_accounts_maximum_age_login_defs" version="1" />
-
-</def-group>
diff --git a/Fedora/input/checks/accounts_maximum_age_login_defs.xml b/Fedora/input/checks/accounts_maximum_age_login_defs.xml
new file mode 120000
index 0000000..1f8ffe9
--- /dev/null
+++ b/Fedora/input/checks/accounts_maximum_age_login_defs.xml
@@ -0,0 +1 @@
+../../../shared/oval/accounts_maximum_age_login_defs.xml
\ No newline at end of file
diff --git a/Fedora/input/checks/accounts_minimum_age_login_defs.xml b/Fedora/input/checks/accounts_minimum_age_login_defs.xml
deleted file mode 100644
index 87917e0..0000000
--- a/Fedora/input/checks/accounts_minimum_age_login_defs.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<def-group>
-  <definition class="compliance" id="accounts_minimum_age_login_defs" version="1">
-    <metadata>
-      <title>Set Password Expiration Parameters</title>
-      <affected family="unix">
-        <platform>Fedora 19</platform>
-      </affected>
-      <description>The minimum password age policy should be set appropriately.</description>
-    </metadata>
-    <criteria comment="the value PASS_MIN_DAYS should be set appropriately in /etc/login.defs">
-      <criterion test_ref="test_pass_min_days" />
-    </criteria>
-  </definition>
-
-  <ind:textfilecontent54_test check="all"
-  comment="Tests the value of PASS_MIN_DAYS in /etc/login.defs"
-  id="test_pass_min_days" version="1">
-    <ind:object object_ref="object_etc_login_defs_pass_min_age" />
-    <ind:state state_ref="state_etc_login_defs_pass_min_age" />
-  </ind:textfilecontent54_test>
-
-  <ind:textfilecontent54_object id="object_etc_login_defs_pass_min_age" version="1">
-    <ind:filepath>/etc/login.defs</ind:filepath>
-    <ind:pattern operation="pattern match">^[\s]*PASS_MIN_DAYS[\s]+(\d+)\s*$</ind:pattern>
-    <ind:instance datatype="int">1</ind:instance>
-  </ind:textfilecontent54_object>
-
-  <ind:textfilecontent54_state id="state_etc_login_defs_pass_min_age" version="1">
-    <ind:subexpression operation="greater than or equal" var_ref="var_accounts_minimum_age_login_defs" datatype="int" />
-  </ind:textfilecontent54_state>
-
-  <external_variable comment="minimum password age in days" datatype="int" id="var_accounts_minimum_age_login_defs" version="1" />
-
-</def-group>
diff --git a/Fedora/input/checks/accounts_minimum_age_login_defs.xml b/Fedora/input/checks/accounts_minimum_age_login_defs.xml
new file mode 120000
index 0000000..00ba914
--- /dev/null
+++ b/Fedora/input/checks/accounts_minimum_age_login_defs.xml
@@ -0,0 +1 @@
+../../../shared/oval/accounts_minimum_age_login_defs.xml
\ No newline at end of file
diff --git a/Fedora/input/checks/accounts_password_minlen_login_defs.xml b/Fedora/input/checks/accounts_password_minlen_login_defs.xml
deleted file mode 100644
index e3ce130..0000000
--- a/Fedora/input/checks/accounts_password_minlen_login_defs.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<def-group>
-
-  <definition class="compliance" id="accounts_password_minlen_login_defs" version="1">
-    <metadata>
-      <title>Set Password Expiration Parameters</title>
-      <affected family="unix">
-        <platform>Fedora 19</platform>
-      </affected>
-      <description>The password minimum length should be set appropriately.</description>
-    </metadata>
-    <criteria operator="AND">
-      <criterion test_ref="test_etc_login_defs" />
-    </criteria>
-  </definition>
-
-  <ind:textfilecontent54_test check="all" comment="check PASS_MIN_LEN in /etc/login.defs" id="test_etc_login_defs" version="1">
-    <ind:object object_ref="object_etc_login_defs" />
-    <ind:state state_ref="state_accounts_password_minlen_login_defs" />
-  </ind:textfilecontent54_test>
-
-  <ind:textfilecontent54_object id="object_etc_login_defs" version="1">
-    <ind:filepath>/etc/login.defs</ind:filepath>
-    <ind:pattern operation="pattern match">^PASS_MIN_LEN\s+(\d+)\s*$</ind:pattern>
-    <ind:instance datatype="int">1</ind:instance>
-  </ind:textfilecontent54_object>
-
-  <ind:textfilecontent54_state id="state_accounts_password_minlen_login_defs" version="1">
-    <ind:subexpression operation="greater than or equal" var_ref="var_accounts_password_minlen_login_defs" datatype="int" />
-  </ind:textfilecontent54_state>
-
-  <external_variable comment="password minimum length" datatype="int" id="var_accounts_password_minlen_login_defs" version="1" />
-
-</def-group>
diff --git a/Fedora/input/checks/accounts_password_minlen_login_defs.xml b/Fedora/input/checks/accounts_password_minlen_login_defs.xml
new file mode 120000
index 0000000..a434e9b
--- /dev/null
+++ b/Fedora/input/checks/accounts_password_minlen_login_defs.xml
@@ -0,0 +1 @@
+../../../shared/oval/accounts_password_minlen_login_defs.xml
\ No newline at end of file
diff --git a/Fedora/input/checks/accounts_password_warn_age_login_defs.xml b/Fedora/input/checks/accounts_password_warn_age_login_defs.xml
deleted file mode 100644
index 5230af1..0000000
--- a/Fedora/input/checks/accounts_password_warn_age_login_defs.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<def-group>
-  <definition class="compliance" id="accounts_password_warn_age_login_defs" version="1">
-    <metadata>
-      <title>Set Password Expiration Parameters</title>
-      <affected family="unix">
-        <platform>Fedora 19</platform>
-      </affected>
-      <description>The password expiration warning age should be set appropriately.</description>
-    </metadata>
-    <criteria>
-      <criterion test_ref="test_pass_warn_age" />
-    </criteria>
-  </definition>
-
-  <ind:textfilecontent54_test check="all"
-  comment="Tests the value of PASS_WARN_AGE in /etc/login.defs"
-  id="test_pass_warn_age" version="1">
-    <ind:object object_ref="object_etc_login_defs_pass_warn_age" />
-    <ind:state state_ref="state_etc_login_defs_pass_warn_age" />
-  </ind:textfilecontent54_test>
-
-  <ind:textfilecontent54_object id="object_etc_login_defs_pass_warn_age"
-  version="1">
-    <ind:filepath>/etc/login.defs</ind:filepath>
-    <ind:pattern operation="pattern match">^[\s]*PASS_WARN_AGE[\s]*(\d+)\s*$</ind:pattern>
-    <ind:instance datatype="int">1</ind:instance>
-  </ind:textfilecontent54_object>
-
-  <ind:textfilecontent54_state id="state_etc_login_defs_pass_warn_age" version="1">
-    <ind:subexpression operation="greater than or equal" var_ref="var_accounts_password_warn_age_login_defs" datatype="int" />
-  </ind:textfilecontent54_state>
-
-  <external_variable comment="password expiration warning age in days" datatype="int" id="var_accounts_password_warn_age_login_defs" version="1" />
-
-</def-group>
diff --git a/Fedora/input/checks/accounts_password_warn_age_login_defs.xml b/Fedora/input/checks/accounts_password_warn_age_login_defs.xml
new file mode 120000
index 0000000..4f95fe1
--- /dev/null
+++ b/Fedora/input/checks/accounts_password_warn_age_login_defs.xml
@@ -0,0 +1 @@
+../../../shared/oval/accounts_password_warn_age_login_defs.xml
\ No newline at end of file
diff --git a/RHEL/6/input/checks/accounts_maximum_age_login_defs.xml b/RHEL/6/input/checks/accounts_maximum_age_login_defs.xml
deleted file mode 100644
index 5360e66..0000000
--- a/RHEL/6/input/checks/accounts_maximum_age_login_defs.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<def-group>
-  <definition class="compliance" id="accounts_maximum_age_login_defs" version="1">
-    <metadata>
-      <title>Set Password Expiration Parameters</title>
-      <affected family="unix">
-        <platform>Red Hat Enterprise Linux 6</platform>
-      </affected>
-      <description>The maximum password age policy should meet
-      minimum requirements.</description>
-      <reference source="MED" ref_id="20130807" ref_url="test_attestation" />
-    </metadata>
-    <criteria comment="the value PASS_MAX_DAYS should be set appropriately in /etc/login.defs">
-      <criterion test_ref="test_pass_max_days" />
-    </criteria>
-  </definition>
-
-  <ind:textfilecontent54_test check="all" comment="the value PASS_MAX_DAYS should be set appropriately in /etc/login.defs" id="test_pass_max_days" version="1">
-    <ind:object object_ref="object_etc_login_defs_pass_max" />
-    <ind:state state_ref="state_accounts_maximum_age_login_defs" />
-  </ind:textfilecontent54_test>
-
-  <ind:textfilecontent54_object id="object_etc_login_defs_pass_max" version="1">
-    <ind:filepath>/etc/login.defs</ind:filepath>
-    <ind:pattern operation="pattern match">^[\s]*PASS_MAX_DAYS[\s]+(\d+)\s*$</ind:pattern>
-    <ind:instance datatype="int">1</ind:instance>
-  </ind:textfilecontent54_object>
-
-  <ind:textfilecontent54_state id="state_accounts_maximum_age_login_defs" version="1">
-    <ind:subexpression operation="less than or equal" var_ref="var_accounts_maximum_age_login_defs" datatype="int" />
-  </ind:textfilecontent54_state>
-
-  <external_variable comment="maximum password age" datatype="int" id="var_accounts_maximum_age_login_defs" version="1" />
-
-</def-group>
diff --git a/RHEL/6/input/checks/accounts_maximum_age_login_defs.xml b/RHEL/6/input/checks/accounts_maximum_age_login_defs.xml
new file mode 120000
index 0000000..496fd34
--- /dev/null
+++ b/RHEL/6/input/checks/accounts_maximum_age_login_defs.xml
@@ -0,0 +1 @@
+../../../../shared/oval/accounts_maximum_age_login_defs.xml
\ No newline at end of file
diff --git a/RHEL/7/input/checks/accounts_maximum_age_login_defs.xml b/RHEL/7/input/checks/accounts_maximum_age_login_defs.xml
new file mode 120000
index 0000000..496fd34
--- /dev/null
+++ b/RHEL/7/input/checks/accounts_maximum_age_login_defs.xml
@@ -0,0 +1 @@
+../../../../shared/oval/accounts_maximum_age_login_defs.xml
\ No newline at end of file
diff --git a/shared/oval/accounts_maximum_age_login_defs.xml b/shared/oval/accounts_maximum_age_login_defs.xml
new file mode 100644
index 0000000..211f259
--- /dev/null
+++ b/shared/oval/accounts_maximum_age_login_defs.xml
@@ -0,0 +1,37 @@
+<def-group>
+  <definition class="compliance" id="accounts_maximum_age_login_defs" version="1">
+    <metadata>
+      <title>Set Password Expiration Parameters</title>
+      <affected family="unix">
+        <platform>Red Hat Enterprise Linux 6</platform>
+        <platform>Red Hat Enterprise Linux 7</platform>
+        <platform>Fedora 20</platform>
+      </affected>
+      <description>The maximum password age policy should meet
+      minimum requirements.</description>
+      <reference source="JL" ref_id="20140411" ref_url="test_attestation" />
+      <!-- Fedora 20: <reference source="JL" ref_id="20140411" ref_url="test_attestation" /> -->
+    </metadata>
+    <criteria comment="the value PASS_MAX_DAYS should be set appropriately in /etc/login.defs">
+      <criterion test_ref="test_pass_max_days" />
+    </criteria>
+  </definition>
+
+  <ind:textfilecontent54_test check="all" comment="the value PASS_MAX_DAYS should be set appropriately in /etc/login.defs" id="test_pass_max_days" version="1">
+    <ind:object object_ref="object_etc_login_defs_pass_max" />
+    <ind:state state_ref="state_accounts_maximum_age_login_defs" />
+  </ind:textfilecontent54_test>
+
+  <ind:textfilecontent54_object id="object_etc_login_defs_pass_max" version="2">
+    <ind:filepath>/etc/login.defs</ind:filepath>
+    <ind:pattern operation="pattern match">^[\s]*PASS_MAX_DAYS[\s]+(\d+)[\s]*(?:|(?:#.*))?$</ind:pattern>
+    <ind:instance datatype="int">1</ind:instance>
+  </ind:textfilecontent54_object>
+
+  <ind:textfilecontent54_state id="state_accounts_maximum_age_login_defs" version="1">
+    <ind:subexpression operation="less than or equal" var_ref="var_accounts_maximum_age_login_defs" datatype="int" />
+  </ind:textfilecontent54_state>
+
+  <external_variable comment="maximum password age" datatype="int" id="var_accounts_maximum_age_login_defs" version="1" />
+
+</def-group>
diff --git a/shared/oval/accounts_minimum_age_login_defs.xml b/shared/oval/accounts_minimum_age_login_defs.xml
index 03ada1e..6690bd4 100644
--- a/shared/oval/accounts_minimum_age_login_defs.xml
+++ b/shared/oval/accounts_minimum_age_login_defs.xml
@@ -5,9 +5,11 @@
       <affected family="unix">
         <platform>Red Hat Enterprise Linux 6</platform>
         <platform>Red Hat Enterprise Linux 7</platform>
+        <platform>Fedora 20</platform>
       </affected>
       <description>The minimum password age policy should be set appropriately.</description>
-      <reference source="MED" ref_id="20130807" ref_url="test_attestation" />
+      <reference source="JL" ref_id="20140411" ref_url="test_attestation" />
+      <!-- Fedora 20: <reference source="JL" ref_id="20140411" ref_url="test_attestation" /> -->
     </metadata>
     <criteria comment="the value PASS_MIN_DAYS should be set appropriately in /etc/login.defs">
       <criterion test_ref="test_pass_min_days" />
@@ -21,9 +23,9 @@
     <ind:state state_ref="state_etc_login_defs_pass_min_age" />
   </ind:textfilecontent54_test>
 
-  <ind:textfilecontent54_object id="object_etc_login_defs_pass_min_age" version="1">
+  <ind:textfilecontent54_object id="object_etc_login_defs_pass_min_age" version="2">
     <ind:filepath>/etc/login.defs</ind:filepath>
-    <ind:pattern operation="pattern match">^[\s]*PASS_MIN_DAYS[\s]+(\d+)\s*$</ind:pattern>
+    <ind:pattern operation="pattern match">^[\s]*PASS_MIN_DAYS[\s]+(\d+)[\s]*(?:|(?:#.*))?$</ind:pattern>
     <ind:instance datatype="int">1</ind:instance>
   </ind:textfilecontent54_object>
 
diff --git a/shared/oval/accounts_password_minlen_login_defs.xml b/shared/oval/accounts_password_minlen_login_defs.xml
index 2fc1556..cca79a4 100644
--- a/shared/oval/accounts_password_minlen_login_defs.xml
+++ b/shared/oval/accounts_password_minlen_login_defs.xml
@@ -6,9 +6,11 @@
       <affected family="unix">
         <platform>Red Hat Enterprise Linux 6</platform>
         <platform>Red Hat Enterprise Linux 7</platform>
+        <platform>Fedora 20</platform>
       </affected>
       <description>The password minimum length should be set appropriately.</description>
-      <reference source="swells" ref_id="20130914" ref_url="test_attestation" />
+      <reference source="JL" ref_id="20140411" ref_url="test_attestation" />
+      <!-- Fedora 20: <reference source="JL" ref_id="20140411" ref_url="test_attestation" /> -->
     </metadata>
     <criteria operator="AND">
       <criterion test_ref="test_etc_login_defs" />
@@ -20,9 +22,9 @@
     <ind:state state_ref="state_accounts_password_minlen_login_defs" />
   </ind:textfilecontent54_test>
 
-  <ind:textfilecontent54_object id="object_etc_login_defs" version="1">
+  <ind:textfilecontent54_object id="object_etc_login_defs" version="2">
     <ind:filepath>/etc/login.defs</ind:filepath>
-    <ind:pattern operation="pattern match">^PASS_MIN_LEN\s+(\d+)\s*$</ind:pattern>
+    <ind:pattern operation="pattern match">^[\s]*PASS_MIN_LEN[\s]+(\d+)[\s]*(?:|(?:#.*))?$</ind:pattern>
     <ind:instance datatype="int">1</ind:instance>
   </ind:textfilecontent54_object>
 
diff --git a/shared/oval/accounts_password_warn_age_login_defs.xml b/shared/oval/accounts_password_warn_age_login_defs.xml
index 583a3a4..7bc8780 100644
--- a/shared/oval/accounts_password_warn_age_login_defs.xml
+++ b/shared/oval/accounts_password_warn_age_login_defs.xml
@@ -5,9 +5,11 @@
       <affected family="unix">
         <platform>Red Hat Enterprise Linux 6</platform>
         <platform>Red Hat Enterprise Linux 7</platform>
+        <platform>Fedora 20</platform>
       </affected>
       <description>The password expiration warning age should be set appropriately.</description>
-      <reference source="swells" ref_id="20130914" ref_url="test_attestation" />
+      <reference source="JL" ref_id="20140411" ref_url="test_attestation" />
+      <!-- Fedora 20: <reference source="JL" ref_id="20140411" ref_url="test_attestation" /> -->
     </metadata>
     <criteria>
       <criterion test_ref="test_pass_warn_age" />
@@ -22,9 +24,9 @@
   </ind:textfilecontent54_test>
 
   <ind:textfilecontent54_object id="object_etc_login_defs_pass_warn_age"
-  version="1">
+  version="2">
     <ind:filepath>/etc/login.defs</ind:filepath>
-    <ind:pattern operation="pattern match">^[\s]*PASS_WARN_AGE[\s]*(\d+)\s*$</ind:pattern>
+    <ind:pattern operation="pattern match">^[\s]*PASS_WARN_AGE[\s]+(\d+)[\s]*(?:|(?:#.*))?$</ind:pattern>
     <ind:instance datatype="int">1</ind:instance>
   </ind:textfilecontent54_object>
 
-- 
1.8.3.1

_______________________________________________
scap-security-guide mailing list
[email protected]
https://lists.fedorahosted.org/mailman/listinfo/scap-security-guide

Reply via email to