From d0ab72dd26f4f30d9dfe910a53468a6cba96531a Mon Sep 17 00:00:00 2001 From: Thibault Ayanides Date: Wed, 23 Dec 2020 11:41:53 +0100 Subject: [PATCH] ADD(5.2.20-23): add new sshd checks --- bin/hardening/5.2.20_enable_ssh_pam.sh | 59 +++++++++++++++++- ...5.2.21_disable_ssh_allow_tcp_forwarding.sh | 59 +++++++++++++++++- .../5.2.22_configure_ssh_max_startups.sh | 62 ++++++++++++++++++- .../5.2.23_limit_ssh_max_sessions.sh | 59 +++++++++++++++++- tests/hardening/5.2.20_enable_ssh_pam.sh | 13 +++- ...5.2.21_disable_ssh_allow_tcp_forwarding.sh | 13 +++- .../5.2.22_configure_ssh_max_startups.sh | 13 +++- .../5.2.23_limit_ssh_max_sessions.sh | 13 +++- 8 files changed, 279 insertions(+), 12 deletions(-) diff --git a/bin/hardening/5.2.20_enable_ssh_pam.sh b/bin/hardening/5.2.20_enable_ssh_pam.sh index 2c97335..f4e5635 100755 --- a/bin/hardening/5.2.20_enable_ssh_pam.sh +++ b/bin/hardening/5.2.20_enable_ssh_pam.sh @@ -17,14 +17,59 @@ HARDENING_LEVEL=3 # shellcheck disable=2034 DESCRIPTION="Enable SSH PAM." +PACKAGE='openssh-server' +OPTIONS='' +FILE='/etc/ssh/sshd_config' + # This function will be called if the script status is on enabled / audit mode audit() { - : + is_pkg_installed "$PACKAGE" + if [ "$FNRET" != 0 ]; then + crit "$PACKAGE is not installed!" + else + ok "$PACKAGE is installed" + for SSH_OPTION in $OPTIONS; do + SSH_PARAM=$(echo "$SSH_OPTION" | cut -d= -f 1) + SSH_VALUE=$(echo "$SSH_OPTION" | cut -d= -f 2) + PATTERN="^${SSH_PARAM}[[:space:]]*$SSH_VALUE" + does_pattern_exist_in_file $FILE "$PATTERN" + if [ "$FNRET" = 0 ]; then + ok "$PATTERN is present in $FILE" + else + crit "$PATTERN is not present in $FILE" + fi + done + fi } # This function will be called if the script status is on enabled mode apply() { - : + is_pkg_installed "$PACKAGE" + if [ "$FNRET" = 0 ]; then + ok "$PACKAGE is installed" + else + crit "$PACKAGE is absent, installing it" + apt_install "$PACKAGE" + fi + for SSH_OPTION in $OPTIONS; do + SSH_PARAM=$(echo "$SSH_OPTION" | cut -d= -f 1) + SSH_VALUE=$(echo "$SSH_OPTION" | cut -d= -f 2) + PATTERN="^${SSH_PARAM}[[:space:]]*$SSH_VALUE" + does_pattern_exist_in_file "$FILE" "$PATTERN" + if [ "$FNRET" = 0 ]; then + ok "$PATTERN is present in $FILE" + else + warn "$PATTERN is not present in $FILE, adding it" + does_pattern_exist_in_file "$FILE" "^${SSH_PARAM}" + if [ "$FNRET" != 0 ]; then + add_end_of_file "$FILE" "$SSH_PARAM $SSH_VALUE" + else + info "Parameter $SSH_PARAM is present but with the wrong value -- Fixing" + replace_in_file "$FILE" "^${SSH_PARAM}[[:space:]]*.*" "$SSH_PARAM $SSH_VALUE" + fi + /etc/init.d/ssh reload + fi + done } # This function will check config parameters required @@ -32,6 +77,16 @@ check_config() { : } +# This function will check config parameters required +create_config() { + cat <