[PATCH] Adding new OVAL check that will parse /etc/passwd, looking for system accounts with real login shells (not /sbin/nologin).
Maura Dailey
maura at eclipse.ncsc.mil
Mon Jul 22 20:43:38 UTC 2013
*grumble* Stupid historical exemptions!
Alright, is this a satisfactory patch to address sync/shutdown/halt? (I
didn't do anything to address the prose yet, in case others wanted to
weigh in.)
- Maura Dailey
Signed-off-by: Maura Dailey <maura at eclipse.ncsc.mil>
---
.../accounts_no_shelllogin_for_systemaccounts.xml | 23
++++++++++++++++++++
.../system/accounts/restrictions/root_logins.xml | 2 +-
2 files changed, 24 insertions(+), 1 deletions(-)
create mode 100644
RHEL6/input/checks/accounts_no_shelllogin_for_systemaccounts.xml
diff --git
a/RHEL6/input/checks/accounts_no_shelllogin_for_systemaccounts.xml
b/RHEL6/input/checks/accounts_no_shelllogin_for_systemaccounts.xml
new file mode 100644
index 0000000..ee59e0e
--- /dev/null
+++ b/RHEL6/input/checks/accounts_no_shelllogin_for_systemaccounts.xml
@@ -0,0 +1,23 @@
+<def-group>
+ <definition class="compliance"
id="accounts_no_shelllogin_for_systemaccounts" version="1">
+ <metadata>
+ <title>System Accounts Do Not Run a Shell</title>
+ <affected family="unix">
+ <platform>Red Hat Enterprise Linux 6</platform>
+ </affected>
+ <description>The root account is the only system account that
should have a login shell.</description>
+ </metadata>
+ <criteria>
+ <criterion comment="tests for the presence of login shells (not
/sbin/nologin) for system accounts in /etc/passwd file"
test_ref="test_accounts_no_shelllogin_for_systemaccounts" />
+ </criteria>
+ </definition>
+ <ind:textfilecontent54_test check="all" check_existence="none_exist"
comment="tests for the presence of login shells (not /sbin/nologin) for
system accounts in /etc/passwd file"
id="test_accounts_no_shelllogin_for_systemaccounts" version="1">
+ <ind:object
object_ref="object_accounts_no_shelllogin_for_systemaccounts" />
+ </ind:textfilecontent54_test>
+ <ind:textfilecontent54_object
id="object_accounts_no_shelllogin_for_systemaccounts" version="1">
+ <ind:path>/etc</ind:path>
+ <ind:filename>passwd</ind:filename>
+ <ind:pattern operation="pattern
match">^(?!.*root).*:x:[\d]*:0*([0-9]{1,2}|[1-4][0-9]{2}):[^:]*:[^:]*:(?!\/sbin\/nologin|\/bin\/sync|\/sbin\/shutdown|\/sbin\/halt).*$</ind:pattern>
+ <ind:instance datatype="int">1</ind:instance>
+ </ind:textfilecontent54_object>
+</def-group>
diff --git a/RHEL6/input/system/accounts/restrictions/root_logins.xml
b/RHEL6/input/system/accounts/restrictions/root_logins.xml
index f9b6aa2..1f2a840 100644
--- a/RHEL6/input/system/accounts/restrictions/root_logins.xml
+++ b/RHEL6/input/system/accounts/restrictions/root_logins.xml
@@ -158,7 +158,7 @@ section on the root account. Doing so might cause
the system to
become inaccessible.
</warning>
<ident cce="26966-2" />
-<oval id="no_shelllogin_for_systemaccounts" />
+<oval id="accounts_no_shelllogin_for_systemaccounts" />
<ref nist="" disa="178" />
<tested by="DS" on="20121024"/>
</Rule>
--
1.7.1
On 07/22/2013 01:53 PM, Steve Grubb wrote:
> On Monday, July 22, 2013 12:00:13 PM Maura Dailey wrote:
>> I can add more exceptions. I'm more concerned that the prose is so vague.
>>
>>> Seems to fail on the sync, shutdown, halt accounts
>>>
>>> sync:x:5:0:sync:/sbin:/bin/sync
>>> shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
>>> halt:x:7:0:halt:/sbin:/sbin/halt
> This dates back to the 1980's. Back then, sudo didn't exist. So, to let non-
> admins do something "safe" they added these system accounts and set the shell
> to the admin action. So, if you needed to sync the disks, you just logged in
> under the sync account. To power off, you just logged in under shutdown.
>
> These are no longer used as they once were. But they are there simply for
> historical reasons. The accounts could have their shell removed. But if a
> check is made, then you'd want to check that account name matches the program
> name before deciding it OK due to white list to prevent other shells from
> being substituted.
>
> Looking at the prose:
>
>>> + <description>The root account is the only system account that should
> have a login shell.</description>
>
> I also think this is a problem. Its typical to login as the postgres or oracle
> user to perform admin tasks for that service.
>
> -Steve
>
>>> + </metadata>
>>> + <criteria>
>>> + <criterion comment="tests for the presence of login shells (not
> /sbin/nologin) for system accounts in /etc/passwd file"
> test_ref="test_accounts_no_shelllogin_for_systemaccounts" />
>
>
> _______________________________________________
> scap-security-guide mailing list
> scap-security-guide at lists.fedorahosted.org
> https://lists.fedorahosted.org/mailman/listinfo/scap-security-guide
More information about the scap-security-guide
mailing list