From 73616af4eb2516697c2e10f9c797b30148265c2e Mon Sep 17 00:00:00 2001 From: GoldenKiwi Date: Wed, 27 Dec 2023 10:27:06 +0100 Subject: [PATCH] Syslog-ng fixes and enhancements (#226) * syslog-ng : fix remote host test and enhance Regex fixes #124 * enh: add test for 4.2.1.6 --- .../4.2.1.5_syslog-ng_remote_host.sh | 5 ++- bin/hardening/4.2.1.6_remote_syslog-ng_acl.sh | 8 ++--- .../4.2.1.5_syslog-ng_remote_host.sh | 2 +- .../hardening/4.2.1.6_remote_syslog-ng_acl.sh | 33 +++++++++++++++++-- 4 files changed, 37 insertions(+), 11 deletions(-) diff --git a/bin/hardening/4.2.1.5_syslog-ng_remote_host.sh b/bin/hardening/4.2.1.5_syslog-ng_remote_host.sh index 59a8463..195724b 100755 --- a/bin/hardening/4.2.1.5_syslog-ng_remote_host.sh +++ b/bin/hardening/4.2.1.5_syslog-ng_remote_host.sh @@ -16,10 +16,9 @@ set -u # One variable unset, it's over HARDENING_LEVEL=3 # shellcheck disable=2034 DESCRIPTION="Configure syslog-ng to send logs to a remote log host." - PACKAGE='syslog-ng' - -PATTERN='destination[[:alnum:][:space:]*{]+(tcp|udp)[[:space:]]*\(\"[[:alnum:].]+\".' +SYSLOG_BASEDIR='/etc/syslog-ng' +PATTERN='destination[[:alnum:][:space:]*_*{]+(tcp|network|udp)[[:space:]]*\([[:space:]]*\"?[[:alnum:]\-.]+\"?.' # This function will be called if the script status is on enabled / audit mode audit() { diff --git a/bin/hardening/4.2.1.6_remote_syslog-ng_acl.sh b/bin/hardening/4.2.1.6_remote_syslog-ng_acl.sh index 9db6856..fcdabda 100755 --- a/bin/hardening/4.2.1.6_remote_syslog-ng_acl.sh +++ b/bin/hardening/4.2.1.6_remote_syslog-ng_acl.sh @@ -18,9 +18,9 @@ HARDENING_LEVEL=3 DESCRIPTION="Configure syslog to accept remote syslog messages only on designated log hosts." PACKAGE='syslog-ng' - +SYSLOG_BASEDIR='/etc/syslog-ng' REMOTE_HOST="" -PATTERN='source[[:alnum:][:space:]*{]+(tcp|udp)[[:space:]]*\(\"[[:alnum:].]+\".' +PATTERN='source[[:alnum:][:space:]*_*{]+(tcp|network|udp)[[:space:]]*\([[:space:]]*\"?[[:alnum:]\-.]+\"?.' # This function will be called if the script status is on enabled / audit mode audit() { @@ -37,7 +37,7 @@ audit() { fi done - if [[ "$REMOTE_HOST" ]]; then + if [[ "$REMOTE_HOST" ]] && [[ "$REMOTE_HOST" != 'false' ]]; then info "This is the remote host, checking that it only accepts logs from specified zone" if [ "$FOUND" = 1 ]; then ok "$PATTERN is present in $FILES" @@ -70,7 +70,7 @@ apply() { fi done - if [[ "$REMOTE_HOST" ]]; then + if [[ "$REMOTE_HOST" ]] && [[ "$REMOTE_HOST" != 'false' ]]; then info "This is the remote host, checking that it only accepts logs from specified zone" if [ "$FOUND" = 1 ]; then ok "$PATTERN is present in $FILES" diff --git a/tests/hardening/4.2.1.5_syslog-ng_remote_host.sh b/tests/hardening/4.2.1.5_syslog-ng_remote_host.sh index d4b9614..7c1efab 100644 --- a/tests/hardening/4.2.1.5_syslog-ng_remote_host.sh +++ b/tests/hardening/4.2.1.5_syslog-ng_remote_host.sh @@ -38,6 +38,6 @@ EOF run subfile "${CIS_CHECKS_DIR}/${script}.sh" --audit-all # Cleanup - rm /etc/syslog-ng/conf.d/1_tcp_destination + rm -f /etc/syslog-ng/conf.d/1_tcp_destination } diff --git a/tests/hardening/4.2.1.6_remote_syslog-ng_acl.sh b/tests/hardening/4.2.1.6_remote_syslog-ng_acl.sh index 5bb5d86..e88160b 100644 --- a/tests/hardening/4.2.1.6_remote_syslog-ng_acl.sh +++ b/tests/hardening/4.2.1.6_remote_syslog-ng_acl.sh @@ -2,10 +2,37 @@ # run-shellcheck test_audit() { describe Running on blank host - register_test retvalshouldbe 0 - dismiss_count_for_test + register_test retvalshouldbe 1 # shellcheck disable=2154 + echo 'REMOTE_HOST="true"' >>"${CIS_CONF_DIR}/conf.d/${script}.cfg" run blank "${CIS_CHECKS_DIR}/${script}.sh" --audit-all - # TODO fill comprehensive tests + cp -a /etc/syslog-ng/syslog-ng.conf /tmp/syslog-ng.conf.bak + echo "source mySyslog tcp (\"127.0.0.1\")" >>/etc/syslog-ng/syslog-ng.conf + + describe Checking one line conf + register_test retvalshouldbe 0 + run oneline "${CIS_CHECKS_DIR}/${script}.sh" --audit-all + + cp -a /tmp/syslog-ng.conf.bak /etc/syslog-ng/syslog-ng.conf + cat >>/etc/syslog-ng/syslog-ng.conf <>/etc/syslog-ng/conf.d/1_tcp_source + cat /etc/syslog-ng/conf.d/1_tcp_source + + describe Checking file in subdirectory + register_test retvalshouldbe 0 + run subfile "${CIS_CHECKS_DIR}/${script}.sh" --audit-all + + rm -f /etc/syslog-ng/conf.d/1_tcp_source + }