Blame SOURCES/scap-security-guide-0.1.50-add_ansible_sshd_set_max_auth_tries_PR_5597.patch

dac76a
From dcefd47e94095cbb39059f5d0ec9ef42593ae595 Mon Sep 17 00:00:00 2001
dac76a
From: Gabriel Becker <ggasparb@redhat.com>
dac76a
Date: Wed, 15 Apr 2020 17:15:39 +0200
dac76a
Subject: [PATCH] Add ansible and bash remediation for rule
dac76a
 sshd_set_max_auth_tries.
dac76a
dac76a
---
dac76a
 .../ssh_server/sshd_set_max_auth_tries/ansible/shared.yml | 8 ++++++++
dac76a
 .../ssh/ssh_server/sshd_set_max_auth_tries/bash/shared.sh | 8 ++++++++
dac76a
 .../ssh/ssh_server/sshd_set_max_auth_tries/rule.yml       | 4 ++--
dac76a
 .../sshd_set_max_auth_tries/tests/comment.fail.sh         | 8 ++++++++
dac76a
 .../sshd_set_max_auth_tries/tests/correct_value.pass.sh   | 8 ++++++++
dac76a
 .../tests/correct_value_less_than.pass.sh                 | 8 ++++++++
dac76a
 .../sshd_set_max_auth_tries/tests/line_not_there.fail.sh  | 3 +++
dac76a
 .../sshd_set_max_auth_tries/tests/wrong_value.fail.sh     | 8 ++++++++
dac76a
 rhel7/profiles/cis.profile                                | 1 +
dac76a
 9 files changed, 54 insertions(+), 2 deletions(-)
dac76a
 create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/ansible/shared.yml
dac76a
 create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/bash/shared.sh
dac76a
 create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/comment.fail.sh
dac76a
 create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/correct_value.pass.sh
dac76a
 create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/correct_value_less_than.pass.sh
dac76a
 create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/line_not_there.fail.sh
dac76a
 create mode 100644 linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/wrong_value.fail.sh
dac76a
dac76a
diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/ansible/shared.yml b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/ansible/shared.yml
dac76a
new file mode 100644
dac76a
index 0000000000..28f3ef0cd2
dac76a
--- /dev/null
dac76a
+++ b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/ansible/shared.yml
dac76a
@@ -0,0 +1,8 @@
dac76a
+# platform = multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_rhv
dac76a
+# reboot = false
dac76a
+# strategy = restrict
dac76a
+# complexity = low
dac76a
+# disruption = low
dac76a
+- (xccdf-var sshd_max_auth_tries_value)
dac76a
+
dac76a
+{{{ ansible_sshd_set(parameter="MaxAuthTries", value="{{ sshd_max_auth_tries_value }}") }}}
dac76a
diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/bash/shared.sh b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/bash/shared.sh
dac76a
new file mode 100644
dac76a
index 0000000000..eebe07158c
dac76a
--- /dev/null
dac76a
+++ b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/bash/shared.sh
dac76a
@@ -0,0 +1,8 @@
dac76a
+# platform = multi_platform_wrlinux,multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_rhv,multi_platform_sle
dac76a
+
dac76a
+# Include source function library.
dac76a
+. /usr/share/scap-security-guide/remediation_functions
dac76a
+
dac76a
+populate sshd_max_auth_tries_value
dac76a
+
dac76a
+{{{ bash_sshd_config_set(parameter="MaxAuthTries", value="$sshd_max_auth_tries_value") }}}
dac76a
diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/rule.yml b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/rule.yml
dac76a
index 7b5750ee0d..437c4dd8c7 100644
dac76a
--- a/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/rule.yml
dac76a
+++ b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/rule.yml
dac76a
@@ -6,7 +6,7 @@ description: |-
dac76a
     The <tt>MaxAuthTries</tt> parameter specifies the maximum number of authentication attempts
dac76a
     permitted per connection. Once the number of failures reaches half this value, additional failures are logged.
dac76a
     to set MaxAUthTries edit <tt>/etc/ssh/sshd_config</tt> as follows:
dac76a
-    
MaxAuthTries tries
dac76a
+    
MaxAuthTries <sub idref="sshd_max_auth_tries_value"/>
dac76a
 
dac76a
 rationale: |-
dac76a
     Setting the MaxAuthTries parameter to a low number will minimize the risk of successful
dac76a
@@ -30,4 +30,4 @@ ocil: |-
dac76a
     To ensure the <tt>MaxAuthTries</tt> parameter is set, run the following command:
dac76a
     
$ sudo grep MaxAuthTries /etc/ssh/sshd_config
dac76a
     If properly configured, output should be:
dac76a
-    
MaxAuthTries tries
dac76a
+    
MaxAuthTries <sub idref="sshd_max_auth_tries_value"/>
dac76a
diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/comment.fail.sh b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/comment.fail.sh
dac76a
new file mode 100644
dac76a
index 0000000000..caf18a73c6
dac76a
--- /dev/null
dac76a
+++ b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/comment.fail.sh
dac76a
@@ -0,0 +1,8 @@
dac76a
+#!/bin/bash
dac76a
+SSHD_CONFIG="/etc/ssh/sshd_config"
dac76a
+
dac76a
+if grep -q "^MaxAuthTries" $SSHD_CONFIG; then
dac76a
+	sed -i "s/^MaxAuthTries.*/# MaxAuthTries 4/" $SSHD_CONFIG
dac76a
+else
dac76a
+	echo "# MaxAuthTries 4" >> $SSHD_CONFIG
dac76a
+fi
dac76a
diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/correct_value.pass.sh b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/correct_value.pass.sh
dac76a
new file mode 100644
dac76a
index 0000000000..32233d3a82
dac76a
--- /dev/null
dac76a
+++ b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/correct_value.pass.sh
dac76a
@@ -0,0 +1,8 @@
dac76a
+#!/bin/bash
dac76a
+SSHD_CONFIG="/etc/ssh/sshd_config"
dac76a
+
dac76a
+if grep -q "^MaxAuthTries" $SSHD_CONFIG; then
dac76a
+	sed -i "s/^MaxAuthTries.*/MaxAuthTries 4/" $SSHD_CONFIG
dac76a
+else
dac76a
+	echo "MaxAuthTries 4" >> $SSHD_CONFIG
dac76a
+fi
dac76a
diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/correct_value_less_than.pass.sh b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/correct_value_less_than.pass.sh
dac76a
new file mode 100644
dac76a
index 0000000000..e98176320d
dac76a
--- /dev/null
dac76a
+++ b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/correct_value_less_than.pass.sh
dac76a
@@ -0,0 +1,8 @@
dac76a
+#!/bin/bash
dac76a
+SSHD_CONFIG="/etc/ssh/sshd_config"
dac76a
+
dac76a
+if grep -q "^MaxAuthTries" $SSHD_CONFIG; then
dac76a
+	sed -i "s/^MaxAuthTries.*/MaxAuthTries 2/" $SSHD_CONFIG
dac76a
+else
dac76a
+	echo "MaxAuthTries 2" >> $SSHD_CONFIG
dac76a
+fi
dac76a
diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/line_not_there.fail.sh b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/line_not_there.fail.sh
dac76a
new file mode 100644
dac76a
index 0000000000..f038aa9be0
dac76a
--- /dev/null
dac76a
+++ b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/line_not_there.fail.sh
dac76a
@@ -0,0 +1,3 @@
dac76a
+#!/bin/bash
dac76a
+
dac76a
+sed -i "/^MaxAuthTries.*/d" /etc/ssh/sshd_config
dac76a
diff --git a/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/wrong_value.fail.sh b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/wrong_value.fail.sh
dac76a
new file mode 100644
dac76a
index 0000000000..79940bded3
dac76a
--- /dev/null
dac76a
+++ b/linux_os/guide/services/ssh/ssh_server/sshd_set_max_auth_tries/tests/wrong_value.fail.sh
dac76a
@@ -0,0 +1,8 @@
dac76a
+#!/bin/bash
dac76a
+SSHD_CONFIG="/etc/ssh/sshd_config"
dac76a
+
dac76a
+if grep -q "^MaxAuthTries" $SSHD_CONFIG; then
dac76a
+	sed -i "s/^MaxAuthTries.*/MaxAuthTries 50/" $SSHD_CONFIG
dac76a
+else
dac76a
+	echo "MaxAuthTries 50" >> $SSHD_CONFIG
dac76a
+fi
dac76a
diff --git a/rhel7/profiles/cis.profile b/rhel7/profiles/cis.profile
dac76a
index 2e68e73f34..886e9a963a 100644
dac76a
--- a/rhel7/profiles/cis.profile
dac76a
+++ b/rhel7/profiles/cis.profile
dac76a
@@ -581,6 +581,7 @@ selections:
dac76a
     - sshd_disable_x11_forwarding
dac76a
     
dac76a
     ### 5.2.5 Ensure SSH MaxAuthTries is set to 4 or less (Scored)
dac76a
+    - sshd_max_auth_tries_value=4
dac76a
     - sshd_set_max_auth_tries
dac76a
 
dac76a
     ### 5.2.6 Ensure SSH IgnoreRhosts is enabled (Scored)