mirror of
https://github.com/ovh/debian-cis.git
synced 2024-11-26 15:31:07 +01:00
730ab47437
* allow multiple exception users for 99.5.2.4 * move clean up part of previous commit * split clean up part of previous commit * add tests for multiple allowed and denied ssh users * fix script to correctly set multiple allowed and denied ssh users * add cleanup resolved check to 5.2.18 * apply shellfmt to 5.2.18 --------- Co-authored-by: GoldenKiwi <thibault.dewailly@corp.ovh.com>
131 lines
7.7 KiB
Bash
131 lines
7.7 KiB
Bash
# shellcheck shell=bash
|
|
# run-shellcheck
|
|
test_audit() {
|
|
describe Running on blank host
|
|
register_test retvalshouldbe 1
|
|
register_test contain "openssh-server is installed"
|
|
# shellcheck disable=2154
|
|
run blank "${CIS_CHECKS_DIR}/${script}.sh" --audit-all
|
|
|
|
describe Correcting situation
|
|
# `apply` performs a service reload after each change in the config file
|
|
# the service needs to be started for the reload to succeed
|
|
service ssh start
|
|
# if the audit script provides "apply" option, enable and run it
|
|
sed -i 's/audit/enabled/' "${CIS_CONF_DIR}/conf.d/${script}.cfg"
|
|
"${CIS_CHECKS_DIR}/${script}.sh" || true
|
|
|
|
describe Checking resolved state
|
|
register_test retvalshouldbe 0
|
|
register_test contain "^AllowUsers[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^AllowGroups[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyUsers[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyGroups[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
run resolved "${CIS_CHECKS_DIR}/${script}.sh" --audit-all
|
|
|
|
describe Check and report mismatch for allowed user
|
|
useradd -s /bin/bash johnallow
|
|
sed -i "s/ALLOWED_USERS=''/ALLOWED_USERS='johnallow'/" "${CIS_CONF_DIR}/conf.d/${script}.cfg"
|
|
register_test retvalshouldbe 1
|
|
register_test contain "^AllowUsers[[:space:]]*johnallow is not present in /etc/ssh/sshd_config"
|
|
register_test contain "^AllowGroups[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyUsers[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyGroups[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
run allowed_user_mismatch "${CIS_CHECKS_DIR}/${script}.sh" --audit-all
|
|
|
|
describe Correctly apply allowed user
|
|
# the previous test checked that ALLOWED_USERS is set but not correctly applied in sshd_config so we apply it now
|
|
"${CIS_CHECKS_DIR}/${script}.sh" || true
|
|
# and check again that the fix was correctly applied
|
|
register_test retvalshouldbe 0
|
|
register_test contain "^AllowUsers[[:space:]]*johnallow is present in /etc/ssh/sshd_config"
|
|
register_test contain "^AllowGroups[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyUsers[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyGroups[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
run fix_user_mismatch "${CIS_CHECKS_DIR}/${script}.sh" --apply-all
|
|
|
|
describe Check and report mismatch for multiple allowed users
|
|
useradd -s /bin/bash janeallow
|
|
sed -i "s/johnallow/johnallow janeallow/" "${CIS_CONF_DIR}/conf.d/${script}.cfg"
|
|
register_test retvalshouldbe 1
|
|
register_test contain "^AllowUsers[[:space:]]*johnallow janeallow is not present in /etc/ssh/sshd_config"
|
|
register_test contain "^AllowGroups[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyUsers[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyGroups[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
run multi_allowed_user_mismatch "${CIS_CHECKS_DIR}/${script}.sh" --audit-all
|
|
|
|
describe Correctly apply multiple allowed users
|
|
# the previous test checked that ALLOWED_USERS is set but not correctly applied in sshd_config so we apply it now
|
|
"${CIS_CHECKS_DIR}/${script}.sh" || true
|
|
# and check again that the fix was correctly applied
|
|
tail -n 5 /etc/ssh/sshd_config
|
|
register_test retvalshouldbe 0
|
|
register_test contain "^AllowUsers[[:space:]]*johnallow janeallow is present in /etc/ssh/sshd_config"
|
|
register_test contain "^AllowGroups[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyUsers[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyGroups[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
run fix_multi_allowed_user_mismatch "${CIS_CHECKS_DIR}/${script}.sh" --audit-all
|
|
|
|
# reset allowed users to default before continuing
|
|
sed -i "s/ALLOWED_USERS='johnallow janeallow'/ALLOWED_USERS=''/" "${CIS_CONF_DIR}/conf.d/${script}.cfg"
|
|
|
|
describe Check and report mismatch for denied user
|
|
useradd -s /bin/bash peterdeny
|
|
sed -i "s/DENIED_USERS=''/DENIED_USERS='peterdeny'/" "${CIS_CONF_DIR}/conf.d/${script}.cfg"
|
|
register_test retvalshouldbe 1
|
|
register_test contain "^AllowUsers[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^AllowGroups[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyUsers[[:space:]]*peterdeny is not present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyGroups[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
run denied_user_mismatch "${CIS_CHECKS_DIR}/${script}.sh" --audit-all
|
|
|
|
describe Correctly apply denied user
|
|
# the previous test checked that DENIED_USERS is set but not correctly applied in sshd_config so we apply it now
|
|
"${CIS_CHECKS_DIR}/${script}.sh" || true
|
|
# and check again that the fix was correctly applied
|
|
register_test retvalshouldbe 0
|
|
register_test contain "^AllowUsers[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^AllowGroups[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyUsers[[:space:]]*peterdeny is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyGroups[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
run fix_denied_user_mismatch "${CIS_CHECKS_DIR}/${script}.sh" --apply-all
|
|
|
|
describe Check and report mismatch for multiple denied users
|
|
useradd -s /bin/bash marrydeny
|
|
sed -i "s/peterdeny/peterdeny marrydeny/" "${CIS_CONF_DIR}/conf.d/${script}.cfg"
|
|
register_test retvalshouldbe 1
|
|
register_test contain "^AllowUsers[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^AllowGroups[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyUsers[[:space:]]*peterdeny marrydeny is not present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyGroups[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
run multi_denied_user_mismatch "${CIS_CHECKS_DIR}/${script}.sh" --audit-all
|
|
|
|
describe Correctly apply multiple denied users
|
|
# the previous test checked that DENIED_USERS is set but not correctly applied in sshd_config so we apply it now
|
|
"${CIS_CHECKS_DIR}/${script}.sh" || true
|
|
# and check again that the fix was correctly applied
|
|
register_test retvalshouldbe 0
|
|
register_test contain "^AllowUsers[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^AllowGroups[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyUsers[[:space:]]*peterdeny marrydeny is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyGroups[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
run fix_multi_denied_user_mismatch "${CIS_CHECKS_DIR}/${script}.sh" --audit-all
|
|
|
|
# reset to prevent other test from possibly failing in the future
|
|
sed -i "s/DENIED_USERS='peterdeny marrydeny'/DENIED_USERS=''/" "${CIS_CONF_DIR}/conf.d/${script}.cfg"
|
|
"${CIS_CHECKS_DIR}/${script}.sh" || true
|
|
describe Checking resolved state
|
|
register_test retvalshouldbe 0
|
|
register_test contain "^AllowUsers[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^AllowGroups[[:space:]]** is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyUsers[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
register_test contain "^DenyGroups[[:space:]]*nobody is present in /etc/ssh/sshd_config"
|
|
run cleanup_resolved "${CIS_CHECKS_DIR}/${script}.sh" --audit-all
|
|
|
|
# Cleanup
|
|
userdel johnallow
|
|
userdel janeallow
|
|
userdel peterdeny
|
|
userdel marrydeny
|
|
}
|