#!/bin/bash # SPDX-Version: 3.0 # SPDX-CreationInfo: 2025-06-17; WEIDNER, Marc S.; # SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.installer.git # SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency # SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; # SPDX-FileType: SOURCE # SPDX-License-Identifier: EUPL-1.2 OR LicenseRef-CCLA-1.0 # SPDX-LicenseComment: This file is part of the CISS.debian.installer.secure framework. # SPDX-PackageName: CISS.debian.installer # SPDX-Security-Contact: security@coresecret.eu guard_sourcing ####################################### # Hardening files and directories. # Globals: # RECOVERY # TARGET # VAR_RUN_RECOVERY # VAR_SETUP_PATH # Arguments: # None # Returns: # 0: on success ####################################### hardening_files() { declare var_bin="" var_binary="" declare var_target="${TARGET}" ### Check for TARGET / RECOVERY. [[ "${VAR_RUN_RECOVERY}" == "true" ]] && var_target="${RECOVERY}" chmod 0700 "${var_target}/etc/cron.d" "${var_target}/etc/cron.daily" "${var_target}/etc/cron.hourly" "${var_target}/etc/cron.monthly" \ "${var_target}/etc/cron.weekly" chmod 0700 "${var_target}/etc/sudoers.d" chmod 0700 "${var_target}/etc/crontab" [[ -f "${var_target}/etc/cron.deny" ]] && rm "${var_target}/etc/cron.deny" ### /etc/issue --------------------------------------------------------------------------------------------------------------- rm -f "${var_target}/etc/issue" "${var_target}/etc/issue.net" install -m 0644 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/issue" "${var_target}/etc/issue" install -m 0644 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/issue.net" "${var_target}/etc/issue.net" ### /root/.ansible ----------------------------------------------------------------------------------------------------------- install -d -m 0700 -o root -g root "${var_target}/root/.ansible" ### /usr/bin/compiler -------------------------------------------------------------------------------------------------------- for var_bin in as gcc g++ cc clang; do var_binary=$(readlink -f "${var_target}/usr/bin/${var_bin}") || { do_log "info" "file_only" "4430() Binary: '${var_bin}' not found, skipping." continue } chmod 0700 "${var_binary}" || { do_log "info" "file_only" "4430() Binary chmod 0700: '${var_bin}' failed, skipping." } done ### /etc/update-motd.d/10-uname ---------------------------------------------------------------------------------------------- mkdir -p "${var_target}/root/.ciss/cdi/backup/etc/update-motd.d" cp -af "${var_target}/etc/update-motd.d/10-uname" "${var_target}/root/.ciss/cdi/backup/etc/update-motd.d/10-uname" cat << 'EOF' >| "${var_target}/etc/update-motd.d/10-uname" #!/bin/sh uname -snrm EOF chmod 0755 /etc/update-motd.d/10-uname guard_dir && return 0 } ### Prevents accidental 'unset -f'. # shellcheck disable=SC2034 readonly -f hardening_files # vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh