V8.00.000.2025.06.17
All checks were successful
🛡️ Shell Script Linting / 🛡️ Shell Script Linting (push) Successful in 50s
All checks were successful
🛡️ Shell Script Linting / 🛡️ Shell Script Linting (push) Successful in 50s
Signed-off-by: Marc S. Weidner <msw@coresecret.dev>
This commit is contained in:
@@ -19,28 +19,6 @@ guard_sourcing
|
|||||||
# Helper module to extract the current GRUB CMDLINE strings.
|
# Helper module to extract the current GRUB CMDLINE strings.
|
||||||
# Globals:
|
# Globals:
|
||||||
# TARGET
|
# TARGET
|
||||||
# VAR_GRUB_CMDLINE_LINUX
|
|
||||||
# VAR_GRUB_CMDLINE_LINUX_DEFAULT
|
|
||||||
# VAR_ORIG_GRUB_CMDLINE_LINUX
|
|
||||||
# VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT
|
|
||||||
# Arguments:
|
|
||||||
# None
|
|
||||||
#######################################
|
|
||||||
old_grub_extract_current_string() {
|
|
||||||
# shellcheck disable=SC2155
|
|
||||||
declare -gx VAR_ORIG_GRUB_CMDLINE_LINUX=$(grep -E 'GRUB_CMDLINE_LINUX=' "${TARGET}/etc/default/grub")
|
|
||||||
# shellcheck disable=SC2155
|
|
||||||
declare -gx VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT=$(grep -E 'GRUB_CMDLINE_LINUX_DEFAULT=' "${TARGET}/etc/default/grub")
|
|
||||||
# shellcheck disable=SC2155
|
|
||||||
declare -gx VAR_GRUB_CMDLINE_LINUX=$(grep -E 'GRUB_CMDLINE_LINUX=' "${TARGET}/etc/default/grub" | sed 's/.$//')
|
|
||||||
# shellcheck disable=SC2155
|
|
||||||
declare -gx VAR_GRUB_CMDLINE_LINUX_DEFAULT=$(grep -E 'GRUB_CMDLINE_LINUX_DEFAULT=' "${TARGET}/etc/default/grub" | sed 's/.$//')
|
|
||||||
}
|
|
||||||
|
|
||||||
#######################################
|
|
||||||
# description
|
|
||||||
# Globals:
|
|
||||||
# TARGET
|
|
||||||
# VAR_ORIG_GRUB_CMDLINE_LINUX
|
# VAR_ORIG_GRUB_CMDLINE_LINUX
|
||||||
# VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT
|
# VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT
|
||||||
# VK_GRUB_CMDLINE_LINUX
|
# VK_GRUB_CMDLINE_LINUX
|
||||||
@@ -49,6 +27,8 @@ old_grub_extract_current_string() {
|
|||||||
# VV_GRUB_CMDLINE_LINUX_DEFAULT
|
# VV_GRUB_CMDLINE_LINUX_DEFAULT
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# None
|
# None
|
||||||
|
# Returns:
|
||||||
|
# 0: on success
|
||||||
#######################################
|
#######################################
|
||||||
grub_extract_current_string() {
|
grub_extract_current_string() {
|
||||||
### Declare Arrays, HashMaps, and Variables.
|
### Declare Arrays, HashMaps, and Variables.
|
||||||
@@ -61,31 +41,19 @@ grub_extract_current_string() {
|
|||||||
VAR_ORIG_GRUB_CMDLINE_LINUX=$(grep -E '^GRUB_CMDLINE_LINUX=' "${TARGET}/etc/default/grub")
|
VAR_ORIG_GRUB_CMDLINE_LINUX=$(grep -E '^GRUB_CMDLINE_LINUX=' "${TARGET}/etc/default/grub")
|
||||||
VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT=$(grep -E '^GRUB_CMDLINE_LINUX_DEFAULT=' "${TARGET}/etc/default/grub")
|
VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT=$(grep -E '^GRUB_CMDLINE_LINUX_DEFAULT=' "${TARGET}/etc/default/grub")
|
||||||
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
do_log "debug" "file_only" "1081() VAR_ORIG_GRUB_CMDLINE_LINUX: [${VAR_ORIG_GRUB_CMDLINE_LINUX}]."
|
||||||
do_log "debug" "file_only" "1081() Value of VAR_ORIG_GRUB_CMDLINE_LINUX: [${VAR_ORIG_GRUB_CMDLINE_LINUX}]."
|
do_log "debug" "file_only" "1081() VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT: [${VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT}]."
|
||||||
do_log "debug" "file_only" "1081() Value of VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT: [${VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT}]."
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
|
|
||||||
### Keys (fixed prefixes).
|
### Keys (fixed prefixes).
|
||||||
VK_GRUB_CMDLINE_LINUX='GRUB_CMDLINE_LINUX='
|
VK_GRUB_CMDLINE_LINUX='GRUB_CMDLINE_LINUX='
|
||||||
VK_GRUB_CMDLINE_LINUX_DEFAULT='GRUB_CMDLINE_LINUX_DEFAULT='
|
VK_GRUB_CMDLINE_LINUX_DEFAULT='GRUB_CMDLINE_LINUX_DEFAULT='
|
||||||
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
do_log "debug" "file_only" "1081() Value of VK_GRUB_CMDLINE_LINUX: [${VK_GRUB_CMDLINE_LINUX}]."
|
|
||||||
do_log "debug" "file_only" "1081() Value of VK_GRUB_CMDLINE_LINUX_DEFAULT: [${VK_GRUB_CMDLINE_LINUX_DEFAULT}]."
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
|
|
||||||
### Raw values (with quotes if necessary).
|
### Raw values (with quotes if necessary).
|
||||||
# shellcheck disable=SC2295
|
# shellcheck disable=SC2295
|
||||||
vv_raw_lin="${VAR_ORIG_GRUB_CMDLINE_LINUX#${VK_GRUB_CMDLINE_LINUX}}"
|
vv_raw_lin="${VAR_ORIG_GRUB_CMDLINE_LINUX#${VK_GRUB_CMDLINE_LINUX}}"
|
||||||
# shellcheck disable=SC2295
|
# shellcheck disable=SC2295
|
||||||
vv_raw_lin_def="${VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT#${VK_GRUB_CMDLINE_LINUX_DEFAULT}}"
|
vv_raw_lin_def="${VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT#${VK_GRUB_CMDLINE_LINUX_DEFAULT}}"
|
||||||
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
do_log "debug" "file_only" "1081() Value of vv_raw_lin: [${vv_raw_lin}]."
|
|
||||||
do_log "debug" "file_only" "1081() Value of vv_raw_lin_def: [${vv_raw_lin_def}]."
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
|
|
||||||
### Remove outer quotes symmetrically.
|
### Remove outer quotes symmetrically.
|
||||||
if [[ -n ${vv_raw_lin} ]]; then
|
if [[ -n ${vv_raw_lin} ]]; then
|
||||||
|
|
||||||
@@ -124,10 +92,15 @@ grub_extract_current_string() {
|
|||||||
VV_GRUB_CMDLINE_LINUX="${vv_raw_lin}"
|
VV_GRUB_CMDLINE_LINUX="${vv_raw_lin}"
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
VV_GRUB_CMDLINE_LINUX_DEFAULT="${vv_raw_lin_def}"
|
VV_GRUB_CMDLINE_LINUX_DEFAULT="${vv_raw_lin_def}"
|
||||||
|
|
||||||
|
do_log "debug" "file_only" "1081() VV_GRUB_CMDLINE_LINUX: [${VV_GRUB_CMDLINE_LINUX}]."
|
||||||
|
do_log "debug" "file_only" "1081() VV_GRUB_CMDLINE_LINUX_DEFAULT: [${VV_GRUB_CMDLINE_LINUX_DEFAULT}]."
|
||||||
|
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
# description
|
# Helper module to finish the modified GRUB CMDLINE strings.
|
||||||
# Globals:
|
# Globals:
|
||||||
# TARGET
|
# TARGET
|
||||||
# VAR_GRUB_CMDLINE_LINUX
|
# VAR_GRUB_CMDLINE_LINUX
|
||||||
@@ -137,91 +110,50 @@ grub_extract_current_string() {
|
|||||||
# VV_GRUB_CMDLINE_LINUX
|
# VV_GRUB_CMDLINE_LINUX
|
||||||
# VV_GRUB_CMDLINE_LINUX_DEFAULT
|
# VV_GRUB_CMDLINE_LINUX_DEFAULT
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# None
|
# None
|
||||||
|
# Returns:
|
||||||
|
# 0: on success
|
||||||
#######################################
|
#######################################
|
||||||
grub_finalize_string() {
|
grub_finalize_string() {
|
||||||
### Declare Arrays, HashMaps, and Variables.
|
### Declare Arrays, HashMaps, and Variables.
|
||||||
declare -a ary_out=()
|
declare var_file="${TARGET}/etc/default/grub.d/99-ciss-cmdline.cfg"
|
||||||
declare var_file="${TARGET}/etc/default/grub"
|
declare var_linux="${VV_GRUB_CMDLINE_LINUX//\'/\'\"\'\"\'}"
|
||||||
declare var_new_lin="${VK_GRUB_CMDLINE_LINUX}'${VV_GRUB_CMDLINE_LINUX}'"
|
declare var_linux_default="${VV_GRUB_CMDLINE_LINUX_DEFAULT//\'/\'\"\'\"\'}"
|
||||||
declare var_new_lin_def="${VK_GRUB_CMDLINE_LINUX_DEFAULT}'${VV_GRUB_CMDLINE_LINUX_DEFAULT}'"
|
declare -gx VAR_GRUB_CMDLINE_LINUX="${VK_GRUB_CMDLINE_LINUX}'${VV_GRUB_CMDLINE_LINUX}'"
|
||||||
declare -i var_found_lin=0 var_found_lin_def=0 var_line=0
|
declare -gx VAR_GRUB_CMDLINE_LINUX_DEFAULT="${VK_GRUB_CMDLINE_LINUX_DEFAULT}'${VV_GRUB_CMDLINE_LINUX_DEFAULT}'"
|
||||||
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
mkdir -p "${TARGET}/etc/default/grub.d"
|
||||||
do_log "debug" "file_only" "1081() var_new_lin [${var_new_lin}]."
|
|
||||||
do_log "debug" "file_only" "1081() var_new_lin [${var_new_lin_def}]."
|
|
||||||
do_log "debug" "file_only" "1081() Before [mapfile -t ary_lines < ${var_file}]."
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
|
|
||||||
### Read file line by line; robust against missing a final newline.
|
cat << EOF >| "${var_file}"
|
||||||
while IFS= read -r var_line || [[ -n "${var_line}" ]]; do
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-06-17; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# 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.; <msw@coresecret.dev>
|
||||||
|
# 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
|
||||||
|
|
||||||
case "${var_line}" in
|
### Options in "GRUB_CMDLINE_LINUX" are always effective.
|
||||||
|
### Options in "GRUB_CMDLINE_LINUX_DEFAULT" are effective ONLY during normal boot (NOT during recovery mode).
|
||||||
|
|
||||||
"${VK_GRUB_CMDLINE_LINUX}"*)
|
EOF
|
||||||
|
|
||||||
ary_out+=("${var_new_lin}")
|
insert_comments "${TARGET}/etc/default/grub.d/99-ciss-cmdline.cfg"
|
||||||
var_found_lin=1
|
|
||||||
;;
|
|
||||||
|
|
||||||
"${VK_GRUB_CMDLINE_LINUX_DEFAULT}"*)
|
umask 0022
|
||||||
|
|
||||||
ary_out+=("${var_new_lin_def}")
|
|
||||||
var_found_lin_def=1
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
ary_out+=("${var_line}")
|
|
||||||
;;
|
|
||||||
|
|
||||||
esac
|
|
||||||
|
|
||||||
done < "${var_file}"
|
|
||||||
|
|
||||||
### If Key is missing in the file, add it at the end (robust against minimal templates).
|
|
||||||
(( var_found_lin == 0 )) && ary_out+=( "${var_new_lin}" )
|
|
||||||
(( var_found_lin_def == 0 )) && ary_out+=( "${var_new_lin_def}" )
|
|
||||||
|
|
||||||
### Write back (without sed/awk, only built-ins).
|
|
||||||
{
|
{
|
||||||
for var_line in "${ary_out[@]}"; do
|
printf "GRUB_CMDLINE_LINUX='%s'\n" "${var_linux}"
|
||||||
printf '%s\n' "${var_line}"
|
printf "GRUB_CMDLINE_LINUX_DEFAULT='%s'\n" "${var_linux_default}"
|
||||||
done
|
printf "\n"
|
||||||
} >| "${var_file}"
|
printf "# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh\n"
|
||||||
|
} >> "${var_file}"
|
||||||
|
|
||||||
### For subsequent use, export the complete lines as well.
|
do_log "debug" "file_only" "1081() [${VAR_GRUB_CMDLINE_LINUX}]."
|
||||||
declare -gx VAR_GRUB_CMDLINE_LINUX="${var_new_lin}"
|
do_log "debug" "file_only" "1081() [${VAR_GRUB_CMDLINE_LINUX_DEFAULT}]."
|
||||||
declare -gx VAR_GRUB_CMDLINE_LINUX_DEFAULT="${var_new_lin_def}"
|
|
||||||
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
return 0
|
||||||
do_log "debug" "file_only" "1081() VAR_GRUB_CMDLINE_LINUX [${VAR_GRUB_CMDLINE_LINUX}]."
|
|
||||||
do_log "debug" "file_only" "1081() VAR_GRUB_CMDLINE_LINUX_DEFAULT [${VAR_GRUB_CMDLINE_LINUX_DEFAULT}]."
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#######################################
|
|
||||||
# Helper module to finish the modified GRUB CMDLINE strings.
|
|
||||||
# Globals:
|
|
||||||
# TARGET
|
|
||||||
# VAR_GRUB_CMDLINE_LINUX
|
|
||||||
# VAR_GRUB_CMDLINE_LINUX_DEFAULT
|
|
||||||
# VAR_H
|
|
||||||
# VAR_ORIG_GRUB_CMDLINE_LINUX
|
|
||||||
# VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT
|
|
||||||
# Arguments:
|
|
||||||
# None
|
|
||||||
#######################################
|
|
||||||
old_grub_finalize_string() {
|
|
||||||
declare var_grub_cmdline_linux="" var_grub_cmdline_linux_default=""
|
|
||||||
|
|
||||||
var_grub_cmdline_linux="${VAR_GRUB_CMDLINE_LINUX}${VAR_H}"
|
|
||||||
var_grub_cmdline_linux_default="${VAR_GRUB_CMDLINE_LINUX_DEFAULT}${VAR_H}"
|
|
||||||
|
|
||||||
VAR_GRUB_CMDLINE_LINUX=$(printf '%s' "${var_grub_cmdline_linux}" | sed -e 's/[\/&\$]/\\&/g' )
|
|
||||||
VAR_GRUB_CMDLINE_LINUX_DEFAULT=$(printf '%s' "${var_grub_cmdline_linux_default}" | sed -e 's/[\/&\$]/\\&/g' )
|
|
||||||
|
|
||||||
sed -i "s|${VAR_ORIG_GRUB_CMDLINE_LINUX}|${VAR_GRUB_CMDLINE_LINUX}|" "${TARGET}/etc/default/grub"
|
|
||||||
sed -i "s|${VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT}|${VAR_GRUB_CMDLINE_LINUX_DEFAULT}|" "${TARGET}/etc/default/grub"
|
|
||||||
}
|
}
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
|
|||||||
@@ -70,6 +70,29 @@ grep_nic_driver_modules() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Wrapper to insert the metadata field into the specified file.
|
||||||
|
# Globals:
|
||||||
|
# VAR_ARCHITECTURE
|
||||||
|
# VAR_CODENAME
|
||||||
|
# VAR_VERSION
|
||||||
|
# Arguments:
|
||||||
|
# 1: /path/to/file
|
||||||
|
# Returns:
|
||||||
|
# 0: on success
|
||||||
|
#######################################
|
||||||
|
insert_comments() {
|
||||||
|
declare file="${1}"
|
||||||
|
sed -i '/^# SPDX-Security-Contact: security@coresecret\.eu$/a\
|
||||||
|
\
|
||||||
|
# Static file system information: '"${file}"'\
|
||||||
|
# Generated by CISS.debian.installer '"${VAR_VERSION}"'\
|
||||||
|
# Architecture: '"${VAR_ARCHITECTURE}"'\
|
||||||
|
# Distribution: '"${VAR_CODENAME}"'
|
||||||
|
' "${file}"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
# Helper module for update, full dist-upgrade, autoclean, autopurge and autoremove.
|
# Helper module for update, full dist-upgrade, autoclean, autopurge and autoremove.
|
||||||
# Arguments:
|
# Arguments:
|
||||||
|
|||||||
@@ -57,11 +57,10 @@ setup_resolv() {
|
|||||||
# SPDX-PackageName: CISS.debian.installer
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# /etc/resolv.conf : Generated by CISS.debian.installer ${VAR_VERSION}
|
# Static file system information: /etc/resolv.conf
|
||||||
# Architecture : ${VAR_ARCHITECTURE}
|
# Generated by CISS.debian.installer ${VAR_VERSION}
|
||||||
# Distribution : ${VAR_CODENAME}
|
# Architecture: ${VAR_ARCHITECTURE}
|
||||||
|
# Distribution: ${VAR_CODENAME}
|
||||||
# Static file system information '/etc/resolv.conf '.
|
|
||||||
|
|
||||||
### Custom DNS IPv4 configuration
|
### Custom DNS IPv4 configuration
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -94,9 +94,10 @@ generate_sources() {
|
|||||||
# SPDX-PackageName: CISS.debian.installer
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# /etc/apt/sources.list : Generated by CISS.debian.installer ${VAR_VERSION}
|
# Static file system information: /etc/apt/sources.list
|
||||||
# Architecture : ${VAR_ARCHITECTURE}
|
# Generated by CISS.debian.installer ${VAR_VERSION}
|
||||||
# Distribution : ${VAR_CODENAME}
|
# Architecture: ${VAR_ARCHITECTURE}
|
||||||
|
# Distribution: ${VAR_CODENAME}
|
||||||
|
|
||||||
#------------------------------------------------------------------------------------------------------------------------------#
|
#------------------------------------------------------------------------------------------------------------------------------#
|
||||||
# OFFICIAL DEBIAN REPOS #
|
# OFFICIAL DEBIAN REPOS #
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ installation_initramfs() {
|
|||||||
install -D -m 0644 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/initramfs-tools/modules" \
|
install -D -m 0644 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/initramfs-tools/modules" \
|
||||||
"${TARGET}/etc/initramfs-tools/"
|
"${TARGET}/etc/initramfs-tools/"
|
||||||
|
|
||||||
insert_initramfs_comments "${TARGET}/etc/initramfs-tools/modules"
|
insert_comments "${TARGET}/etc/initramfs-tools/modules"
|
||||||
|
|
||||||
var_modules=$(grep_nic_driver_modules)
|
var_modules=$(grep_nic_driver_modules)
|
||||||
|
|
||||||
@@ -62,12 +62,13 @@ EOF
|
|||||||
# SPDX-PackageName: CISS.debian.installer
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# /etc/initramfs-tools/conf.d/driver-policy : Generated by CISS.debian.installer ${VAR_VERSION}
|
# Static file system information: /etc/initramfs-tools/conf.d/driver-policy
|
||||||
# Architecture : ${VAR_ARCHITECTURE}
|
# Generated by CISS.debian.installer ${VAR_VERSION}
|
||||||
# Distribution : ${VAR_CODENAME}
|
# Architecture: ${VAR_ARCHITECTURE}
|
||||||
|
# Distribution: ${VAR_CODENAME}
|
||||||
|
|
||||||
# Driver inclusion policy selected during installation.
|
# Driver inclusion policy selected during installation.
|
||||||
# Note: this setting overrides the value set in the file '/etc/initramfs-tools/initramfs.conf'.
|
# Note: This setting overrides the value set in the file '/etc/initramfs-tools/initramfs.conf'.
|
||||||
|
|
||||||
MODULES=dep
|
MODULES=dep
|
||||||
|
|
||||||
@@ -76,26 +77,4 @@ EOF
|
|||||||
|
|
||||||
guard_dir && return 0
|
guard_dir && return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
#######################################
|
|
||||||
# Helper to insert the Metadata field into '/etc/initramfs-tools/modules'.
|
|
||||||
# Globals:
|
|
||||||
# VAR_ARCHITECTURE
|
|
||||||
# VAR_CODENAME
|
|
||||||
# VAR_VERSION
|
|
||||||
# Arguments:
|
|
||||||
# 1: /etc/initramfs-tools/modules
|
|
||||||
# Returns:
|
|
||||||
# 0: on success
|
|
||||||
#######################################
|
|
||||||
insert_initramfs_comments() {
|
|
||||||
declare file="${1}"
|
|
||||||
sed -i '/^# SPDX-Security-Contact: security@coresecret\.eu$/a\
|
|
||||||
\
|
|
||||||
# /etc/initramfs-tools/modules : Generated by CISS.debian.installer '"${VAR_VERSION}"'\
|
|
||||||
# Architecture : '"${VAR_ARCHITECTURE}"'\
|
|
||||||
# Distribution : '"${VAR_CODENAME}"'
|
|
||||||
' "${file}"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ installation_chrony() {
|
|||||||
|
|
||||||
install -D -m 0644 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/chrony/chrony.cnf" "${TARGET}/etc/chrony/chrony.conf"
|
install -D -m 0644 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/chrony/chrony.cnf" "${TARGET}/etc/chrony/chrony.conf"
|
||||||
|
|
||||||
insert_chrony_comments "${TARGET}/etc/chrony/chrony.conf"
|
insert_comments "${TARGET}/etc/chrony/chrony.conf"
|
||||||
|
|
||||||
cat "${var_of}" >> "${TARGET}/etc/chrony/chrony.conf"
|
cat "${var_of}" >> "${TARGET}/etc/chrony/chrony.conf"
|
||||||
|
|
||||||
@@ -80,26 +80,4 @@ installation_chrony() {
|
|||||||
|
|
||||||
guard_dir && return 0
|
guard_dir && return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
#######################################
|
|
||||||
# Helper to insert the Metadata field into '/etc/chrony/chrony.conf'.
|
|
||||||
# Globals:
|
|
||||||
# VAR_ARCHITECTURE
|
|
||||||
# VAR_CODENAME
|
|
||||||
# VAR_VERSION
|
|
||||||
# Arguments:
|
|
||||||
# 1: /etc/chrony/chrony.conf
|
|
||||||
# Returns:
|
|
||||||
# 0: on success
|
|
||||||
#######################################
|
|
||||||
insert_chrony_comments() {
|
|
||||||
declare file="${1}"
|
|
||||||
sed -i '/^# SPDX-Security-Contact: security@coresecret\.eu$/a\
|
|
||||||
\
|
|
||||||
# /etc/chrony/conf.d : Generated by CISS.debian.installer '"${VAR_VERSION}"'\
|
|
||||||
# Architecture : '"${VAR_ARCHITECTURE}"'\
|
|
||||||
# Distribution : '"${VAR_CODENAME}"'
|
|
||||||
' "${file}"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
|
|||||||
@@ -78,12 +78,11 @@ generate_fstab() {
|
|||||||
# SPDX-PackageName: CISS.debian.installer
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# /etc/fstab : Generated by CISS.debian.installer ${VAR_VERSION}
|
# Static file system information: /etc/fstab
|
||||||
# Architecture : ${VAR_ARCHITECTURE}
|
# Generated by CISS.debian.installer ${VAR_VERSION}
|
||||||
# Distribution : ${VAR_CODENAME}
|
# Architecture: ${VAR_ARCHITECTURE}
|
||||||
|
# Distribution: ${VAR_CODENAME}
|
||||||
|
|
||||||
# Static file system information '/etc/fstab'.
|
|
||||||
#
|
|
||||||
# Use 'blkid' to print the universally unique identifier for a device; this may be used with [UUID=] as a more robust way to
|
# Use 'blkid' to print the universally unique identifier for a device; this may be used with [UUID=] as a more robust way to
|
||||||
# name devices that work even if disks are added and removed. See fstab(5).
|
# name devices that work even if disks are added and removed. See fstab(5).
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -71,12 +71,11 @@ generate_crypttab() {
|
|||||||
# SPDX-PackageName: CISS.debian.installer
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# /etc/crypttab : Generated by CISS.debian.installer ${VAR_VERSION}
|
# Static file system information: /etc/crypttab
|
||||||
# Architecture : ${VAR_ARCHITECTURE}
|
# Generated by CISS.debian.installer ${VAR_VERSION}
|
||||||
# Distribution : ${VAR_CODENAME}
|
# Architecture: ${VAR_ARCHITECTURE}
|
||||||
|
# Distribution: ${VAR_CODENAME}
|
||||||
|
|
||||||
# Static file system information: '/etc/crypttab'.
|
|
||||||
#
|
|
||||||
# Basic rule: 'discard' / 'nodiscard' are normally only set in '/etc/crypttab' when LUKS/dm-crypt is in use. Options like
|
# Basic rule: 'discard' / 'nodiscard' are normally only set in '/etc/crypttab' when LUKS/dm-crypt is in use. Options like
|
||||||
# 'discard=async' or similar are typically only set in '/etc/fstab' (at the file system level). The crypttab determines whether
|
# 'discard=async' or similar are typically only set in '/etc/fstab' (at the file system level). The crypttab determines whether
|
||||||
# the underlying encrypted device (LUKS/dm-crypt) passes TRIM commands to the physical drive or not. The '/etc/fstab' determines
|
# the underlying encrypted device (LUKS/dm-crypt) passes TRIM commands to the physical drive or not. The '/etc/fstab' determines
|
||||||
|
|||||||
@@ -35,13 +35,6 @@ update_grub_bootparameter() {
|
|||||||
|
|
||||||
grub_extract_current_string
|
grub_extract_current_string
|
||||||
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
# shellcheck disable=SC2153
|
|
||||||
do_log "debug" "file_only" "4250() Value of GRUB_CMDLINE_LINUX: [${VV_GRUB_CMDLINE_LINUX}]."
|
|
||||||
# shellcheck disable=SC2153
|
|
||||||
do_log "debug" "file_only" "4250() Value of GRUB_CMDLINE_LINUX_DEFAULT: [${VV_GRUB_CMDLINE_LINUX_DEFAULT}]."
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
|
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
for var_param in "${ARY_BOOTPARAM[@]}"; do
|
for var_param in "${ARY_BOOTPARAM[@]}"; do
|
||||||
|
|
||||||
@@ -59,43 +52,19 @@ update_grub_bootparameter() {
|
|||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
do_log "debug" "file_only" "4250() Value of VV_GRUB_CMDLINE_LINUX_DEFAULT: [${VV_GRUB_CMDLINE_LINUX_DEFAULT}]."
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
|
|
||||||
|
|
||||||
if [[ "${VAR_DROPBEAR}" == "true" ]]; then
|
if [[ "${VAR_DROPBEAR}" == "true" ]]; then
|
||||||
var_label="${HMP_PATH_ENCLABEL["/"]}"
|
var_label="${HMP_PATH_ENCLABEL["/"]}"
|
||||||
VV_GRUB_CMDLINE_LINUX="${VV_GRUB_CMDLINE_LINUX:+${VV_GRUB_CMDLINE_LINUX} }cryptdevice=${VAR_CRYPT_ROOT}:cryptroot root=/dev/mapper/${var_label}"
|
VV_GRUB_CMDLINE_LINUX="${VV_GRUB_CMDLINE_LINUX:+${VV_GRUB_CMDLINE_LINUX} }cryptdevice=${VAR_CRYPT_ROOT}:cryptroot root=/dev/mapper/${var_label}"
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
do_log "debug" "file_only" "4250() Value of VV_GRUB_CMDLINE_LINUX: [${VV_GRUB_CMDLINE_LINUX}]."
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${VAR_NUKE}" == "true" ]]; then
|
if [[ "${VAR_NUKE}" == "true" ]]; then
|
||||||
var_nuke_string="nuke=${VAR_NUKE_HASH}"
|
var_nuke_string="nuke=${VAR_NUKE_HASH}"
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
VV_GRUB_CMDLINE_LINUX="${VV_GRUB_CMDLINE_LINUX} ${var_nuke_string}"
|
VV_GRUB_CMDLINE_LINUX="${VV_GRUB_CMDLINE_LINUX} ${var_nuke_string}"
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
do_log "debug" "file_only" "4250() Value of VV_GRUB_CMDLINE_LINUX: [${VV_GRUB_CMDLINE_LINUX}]."
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
do_log "debug" "file_only" "4250() Calling [grub_finalize_string]."
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
grub_finalize_string
|
grub_finalize_string
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
do_log "debug" "file_only" "4250() Back from [grub_finalize_string]."
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
# shellcheck disable=SC2153
|
|
||||||
do_log "debug" "file_only" "4250() GRUB_CMDLINE_LINUX: [${VAR_GRUB_CMDLINE_LINUX}]."
|
|
||||||
# shellcheck disable=SC2153
|
|
||||||
do_log "debug" "file_only" "4250() GRUB_CMDLINE_LINUX_DEFAULT: [${VAR_GRUB_CMDLINE_LINUX_DEFAULT}]."
|
|
||||||
sleep 5
|
|
||||||
# TODO REMOVE DEBUG LOGGER
|
|
||||||
|
|
||||||
do_in_target "${TARGET}" update-grub
|
do_in_target "${TARGET}" update-grub
|
||||||
|
|
||||||
|
|||||||
@@ -65,9 +65,10 @@ installation_network() {
|
|||||||
# SPDX-PackageName: CISS.debian.installer
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# /etc/network/interfaces : Generated by CISS.debian.installer ${VAR_VERSION}
|
# Static file system information: /etc/network/interfaces
|
||||||
# Architecture : ${VAR_ARCHITECTURE}
|
# Generated by CISS.debian.installer ${VAR_VERSION}
|
||||||
# Distribution : ${VAR_CODENAME}
|
# Architecture: ${VAR_ARCHITECTURE}
|
||||||
|
# Distribution: ${VAR_CODENAME}
|
||||||
|
|
||||||
# This file describes the network interfaces available on your system
|
# This file describes the network interfaces available on your system
|
||||||
# and how to activate them. For more information, see interfaces(5).
|
# and how to activate them. For more information, see interfaces(5).
|
||||||
@@ -106,9 +107,10 @@ EOF
|
|||||||
# SPDX-PackageName: CISS.debian.installer
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# /etc/network/interfaces.d/10-ipv4-dhcp : Generated by CISS.debian.installer ${VAR_VERSION}
|
# Static file system information: /etc/network/interfaces.d/10-ipv4-dhcp
|
||||||
# Architecture : ${VAR_ARCHITECTURE}
|
# Generated by CISS.debian.installer ${VAR_VERSION}
|
||||||
# Distribution : ${VAR_CODENAME}
|
# Architecture: ${VAR_ARCHITECTURE}
|
||||||
|
# Distribution: ${VAR_CODENAME}
|
||||||
|
|
||||||
# The primary network interface IPv4
|
# The primary network interface IPv4
|
||||||
auto ${VAR_FINAL_NIC}
|
auto ${VAR_FINAL_NIC}
|
||||||
@@ -133,9 +135,10 @@ EOF
|
|||||||
# SPDX-PackageName: CISS.debian.installer
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# /etc/network/interfaces.d/10-ipv4-dhcp : Generated by CISS.debian.installer ${VAR_VERSION}
|
# Static file system information: /etc/network/interfaces.d/10-ipv4-dhcp
|
||||||
# Architecture : ${VAR_ARCHITECTURE}
|
# Generated by CISS.debian.installer ${VAR_VERSION}
|
||||||
# Distribution : ${VAR_CODENAME}
|
# Architecture: ${VAR_ARCHITECTURE}
|
||||||
|
# Distribution: ${VAR_CODENAME}
|
||||||
|
|
||||||
# The primary network interface IPv4
|
# The primary network interface IPv4
|
||||||
auto ${VAR_FINAL_NIC}
|
auto ${VAR_FINAL_NIC}
|
||||||
@@ -163,9 +166,10 @@ EOF
|
|||||||
# SPDX-PackageName: CISS.debian.installer
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# /etc/network/interfaces.d/10-ipv4-static : Generated by CISS.debian.installer ${VAR_VERSION}
|
# Static file system information: /etc/network/interfaces.d/10-ipv4-static
|
||||||
# Architecture : ${VAR_ARCHITECTURE}
|
# Generated by CISS.debian.installer ${VAR_VERSION}
|
||||||
# Distribution : ${VAR_CODENAME}
|
# Architecture: ${VAR_ARCHITECTURE}
|
||||||
|
# Distribution: ${VAR_CODENAME}
|
||||||
|
|
||||||
# The primary network interface IPv4
|
# The primary network interface IPv4
|
||||||
auto ${VAR_FINAL_NIC}
|
auto ${VAR_FINAL_NIC}
|
||||||
@@ -197,9 +201,10 @@ EOF
|
|||||||
# SPDX-PackageName: CISS.debian.installer
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# /etc/network/interfaces.d/10-ipv6-dhcp : Generated by CISS.debian.installer ${VAR_VERSION}
|
# Static file system information: /etc/network/interfaces.d/10-ipv6-dhcp
|
||||||
# Architecture : ${VAR_ARCHITECTURE}
|
# Generated by CISS.debian.installer ${VAR_VERSION}
|
||||||
# Distribution : ${VAR_CODENAME}
|
# Architecture: ${VAR_ARCHITECTURE}
|
||||||
|
# Distribution: ${VAR_CODENAME}
|
||||||
|
|
||||||
# The primary network interface IPv6
|
# The primary network interface IPv6
|
||||||
auto ${VAR_FINAL_NIC}
|
auto ${VAR_FINAL_NIC}
|
||||||
@@ -227,9 +232,10 @@ EOF
|
|||||||
# SPDX-PackageName: CISS.debian.installer
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# /etc/network/interfaces.d/10-ipv6-static : Generated by CISS.debian.installer ${VAR_VERSION}
|
# Static file system information: /etc/network/interfaces.d/10-ipv6-static
|
||||||
# Architecture : ${VAR_ARCHITECTURE}
|
# Generated by CISS.debian.installer ${VAR_VERSION}
|
||||||
# Distribution : ${VAR_CODENAME}
|
# Architecture: ${VAR_ARCHITECTURE}
|
||||||
|
# Distribution: ${VAR_CODENAME}
|
||||||
|
|
||||||
# The primary network interface IPv6
|
# The primary network interface IPv6
|
||||||
auto ${VAR_FINAL_NIC}
|
auto ${VAR_FINAL_NIC}
|
||||||
|
|||||||
@@ -152,11 +152,10 @@ write_dropbear_conf() {
|
|||||||
# SPDX-PackageName: CISS.debian.installer
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# /etc/dropbear/dropbear.conf : Generated by CISS.debian.installer ${VAR_VERSION}
|
# Static file system information: /etc/dropbear/dropbear.conf
|
||||||
# Architecture : ${VAR_ARCHITECTURE}
|
# Generated by CISS.debian.installer ${VAR_VERSION}
|
||||||
# Distribution : ${VAR_CODENAME}
|
# Architecture: ${VAR_ARCHITECTURE}
|
||||||
|
# Distribution: ${VAR_CODENAME}
|
||||||
# Static file system information: '/etc/dropbear/initramfs/dropbear.conf'.
|
|
||||||
|
|
||||||
# Configuration options for the dropbear-initramfs boot scripts.
|
# Configuration options for the dropbear-initramfs boot scripts.
|
||||||
# Variable assignment follow shell semantics and escaping/quoting rules.
|
# Variable assignment follow shell semantics and escaping/quoting rules.
|
||||||
|
|||||||
@@ -25,20 +25,41 @@ kernel_modules() {
|
|||||||
### Entropy collection improvements
|
### Entropy collection improvements
|
||||||
mkdir -p "${TARGET}/usr/lib/modules-load.d"
|
mkdir -p "${TARGET}/usr/lib/modules-load.d"
|
||||||
cat << EOF >| "${TARGET}/usr/lib/modules-load.d/30_security-misc.conf"
|
cat << EOF >| "${TARGET}/usr/lib/modules-load.d/30_security-misc.conf"
|
||||||
## The jitterentropy_rng kernel module provides a reliable and hardware-independent source of cryptographic entropy by measuring
|
# SPDX-Version: 3.0
|
||||||
## minute variations in CPU execution timing (jitter). These microsecond-level differences are unpredictable and rooted in
|
# SPDX-CreationInfo: 2025-06-17; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
## physical randomness, making them suitable for high-quality entropy generation. Unlike other RNG methods that rely on hardware
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.installer.git
|
||||||
## features like TPMs or Intel's RDRAND, which may not be available or trusted, jitterentropy_rng works across all platforms,
|
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
||||||
## including virtual machines and air-gapped systems. It is compliant with NIST SP 800-90B and BSI TR-02102-4, ensuring secure
|
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
## entropy even during early boot stages, such as in initramfs or before full userland is available. It is the most secure,
|
# SPDX-FileType: SOURCE
|
||||||
## standards-compliant, and universally applicable entropy source for hardened Linux environments.
|
# SPDX-License-Identifier: EUPL-1.2 OR LicenseRef-CCLA-1.0
|
||||||
## https://www.whonix.org/wiki/Dev/Entropy
|
# SPDX-LicenseComment: This file is part of the CISS.debian.installer.secure framework.
|
||||||
## https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=927972
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
## https://forums.whonix.org/t/jitterentropy-rngd/7204
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
|
# Static file system information: /usr/lib/modules-load.d/30_security-misc.conf
|
||||||
|
# Generated by CISS.debian.installer ${VAR_VERSION}
|
||||||
|
# Architecture: ${VAR_ARCHITECTURE}
|
||||||
|
# Distribution: ${VAR_CODENAME}
|
||||||
|
|
||||||
|
# The jitterentropy_rng kernel module provides a reliable and hardware-independent source of cryptographic entropy by measuring
|
||||||
|
# minute variations in CPU execution timing (jitter). These microsecond-level differences are unpredictable and rooted in
|
||||||
|
# physical randomness, making them suitable for high-quality entropy generation. Unlike other RNG methods that rely on hardware
|
||||||
|
# features like TPMs or Intel's RDRAND, which may not be available or trusted, jitterentropy_rng works across all platforms,
|
||||||
|
# including virtual machines and air-gapped systems. It is compliant with NIST SP 800-90B and BSI TR-02102-4, ensuring secure
|
||||||
|
# entropy even during early boot stages, such as in initramfs or before full userland is available. It is the most secure,
|
||||||
|
# standards-compliant, and universally applicable entropy source for hardened Linux environments.
|
||||||
|
# https://www.whonix.org/wiki/Dev/Entropy
|
||||||
|
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=927972
|
||||||
|
# https://forums.whonix.org/t/jitterentropy-rngd/7204
|
||||||
|
|
||||||
jitterentropy_rng
|
jitterentropy_rng
|
||||||
|
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
EOF
|
EOF
|
||||||
chmod 0644 "${TARGET}/usr/lib/modules-load.d/30_security-misc.conf"
|
chmod 0644 "${TARGET}/usr/lib/modules-load.d/30_security-misc.conf"
|
||||||
|
|
||||||
do_log "info" "file_only" "4400() Installed: '/usr/lib/modules-load.d/30_security-misc.conf'."
|
do_log "info" "file_only" "4400() Installed: '/usr/lib/modules-load.d/30_security-misc.conf'."
|
||||||
|
|
||||||
guard_dir && return 0
|
guard_dir && return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,7 +76,11 @@ EOF
|
|||||||
kernel_modprobe() {
|
kernel_modprobe() {
|
||||||
install -D -m 0755 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/modprobe.d/0000_ciss_debian_installer.cnf" \
|
install -D -m 0755 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/modprobe.d/0000_ciss_debian_installer.cnf" \
|
||||||
"${TARGET}/etc/modprobe.d/0000_ciss_debian_installer.conf"
|
"${TARGET}/etc/modprobe.d/0000_ciss_debian_installer.conf"
|
||||||
|
|
||||||
|
insert_comments "${TARGET}/etc/modprobe.d/0000_ciss_debian_installer.conf"
|
||||||
|
|
||||||
do_log "info" "file_only" "4400() Installed: '/etc/modprobe.d/0000_ciss_debian_installer.conf'."
|
do_log "info" "file_only" "4400() Installed: '/etc/modprobe.d/0000_ciss_debian_installer.conf'."
|
||||||
|
|
||||||
guard_dir && return 0
|
guard_dir && return 0
|
||||||
}
|
}
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
|
|||||||
@@ -25,7 +25,11 @@ guard_sourcing
|
|||||||
kernel_sysctl() {
|
kernel_sysctl() {
|
||||||
install -D -m 0644 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/sysctl.d/99_local.hardened" \
|
install -D -m 0644 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/sysctl.d/99_local.hardened" \
|
||||||
"${TARGET}/etc/sysctl.d/99_local.hardened"
|
"${TARGET}/etc/sysctl.d/99_local.hardened"
|
||||||
|
|
||||||
|
insert_comments "${TARGET}/etc/sysctl.d/99_local.hardened"
|
||||||
|
|
||||||
do_log "info" "file_only" "4410() Installed: '/etc/sysctl.d/99_local.hardened'."
|
do_log "info" "file_only" "4410() Installed: '/etc/sysctl.d/99_local.hardened'."
|
||||||
|
|
||||||
guard_dir && return 0
|
guard_dir && return 0
|
||||||
}
|
}
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
|
|||||||
@@ -34,13 +34,13 @@ installation_ssh() {
|
|||||||
### Declare Arrays, HashMaps, and Variables.
|
### Declare Arrays, HashMaps, and Variables.
|
||||||
declare -a ary_user=()
|
declare -a ary_user=()
|
||||||
declare -i i=0
|
declare -i i=0
|
||||||
declare var_auth="" var_name=""
|
declare var_auth="" var_name="" var_ca=""
|
||||||
|
|
||||||
do_in_target "${TARGET}" apt-get install -y --no-install-recommends --no-install-suggests ssh
|
do_in_target "${TARGET}" apt-get install -y --no-install-recommends --no-install-suggests ssh
|
||||||
|
|
||||||
install -D -m 0644 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/banner" "${TARGET}/etc/"
|
install -D -m 0644 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/banner" "${TARGET}/etc/"
|
||||||
install -D -m 0644 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/motd" "${TARGET}/etc/"
|
install -D -m 0644 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/motd" "${TARGET}/etc/"
|
||||||
do_log "info" "file_only" "4420() Installed SSH banner and motd to '${TARGET}/etc/'."
|
do_log "info" "file_only" "4420() Installed SSH '/etc/banner' and '/etc/motd'."
|
||||||
|
|
||||||
### Only process those for which both *_name and *_authentication_access_ssh are set.
|
### Only process those for which both *_name and *_authentication_access_ssh are set.
|
||||||
for ((i = 0; i <= VAR_USER_MAX; i++)); do
|
for ((i = 0; i <= VAR_USER_MAX; i++)); do
|
||||||
@@ -59,39 +59,56 @@ installation_ssh() {
|
|||||||
#shellcheck disable=SC2312
|
#shellcheck disable=SC2312
|
||||||
do_in_target "${TARGET}" ssh-keygen -o -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -C "root@${VAR_FINAL_FQDN}-$(date -I)"
|
do_in_target "${TARGET}" ssh-keygen -o -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -C "root@${VAR_FINAL_FQDN}-$(date -I)"
|
||||||
|
|
||||||
mkdir -p "${DIR_BAK}/etc/ssh"
|
mkdir -p "${TARGET}/root/.ciss/cdi/backup/etc/ssh"
|
||||||
cp "${TARGET}/etc/ssh/sshd_config" "${DIR_BAK}/etc/ssh/sshd_config.bak"
|
cp "${TARGET}/etc/ssh/sshd_config" "${TARGET}/root/.ciss/cdi/backup/etc/ssh/sshd_config.bak"
|
||||||
chmod 0644 "${DIR_BAK}/etc/ssh/sshd_config.bak"
|
cp "${TARGET}/etc/ssh/ssh_config" "${TARGET}/root/.ciss/cdi/backup/etc/ssh/ssh_config.bak"
|
||||||
cp "${TARGET}/etc/ssh/ssh_config" "${DIR_BAK}/etc/ssh/ssh_config.bak"
|
|
||||||
chmod 0644 "${DIR_BAK}/etc/ssh/ssh_config.bak"
|
|
||||||
|
|
||||||
rm -f "${TARGET}/etc/ssh/sshd_config"
|
rm -f "${TARGET}/etc/ssh/sshd_config"
|
||||||
|
|
||||||
install -D -m 0600 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/ssh/sshd_config" "${TARGET}/etc/ssh/sshd_config"
|
install -D -m 0600 -o root -g root "${VAR_SETUP_PATH}/includes/target/etc/ssh/sshd_config" "${TARGET}/etc/ssh/sshd_config"
|
||||||
chmod 0600 "${TARGET}/etc/ssh/ssh_config"
|
chmod 0600 "${TARGET}/etc/ssh/ssh_config"
|
||||||
|
|
||||||
|
insert_comments "${TARGET}/etc/ssh/sshd_config"
|
||||||
|
|
||||||
# shellcheck disable=SC2153
|
# shellcheck disable=SC2153
|
||||||
sed -i -E "s|^\s*ListenAddress\s+.*$|$(printf '%-30s%s' 'ListenAddress' "${VAR_FINAL_IPV4}")|" "${TARGET}/etc/ssh/sshd_config"
|
#sed -i -E "s|^\s*ListenAddress\s+.*$|$(printf '%-29s%s' 'ListenAddress' "${VAR_FINAL_IPV4}")|" "${TARGET}/etc/ssh/sshd_config"
|
||||||
|
sed -i -E "s|^[[:space:]]*ListenAddress[[:space:]]+.*$|$(printf '%-29s%s' 'ListenAddress' "${VAR_FINAL_IPV4}")|" "${TARGET}/etc/ssh/sshd_config"
|
||||||
|
|
||||||
if [[ -n "${VAR_FINAL_IPV6}" ]]; then
|
if [[ -n "${VAR_FINAL_IPV6}" ]]; then
|
||||||
sed -i -E "s|^\s*ListenAddress\s+::.*$|$(printf '%-30s%s' 'ListenAddress' "${VAR_FINAL_IPV6}")|" "${TARGET}/etc/ssh/sshd_config"
|
#sed -i -E "s|^\s*ListenAddress\s+::.*$|$(printf '%-29s%s' 'ListenAddress' "${VAR_FINAL_IPV6}")|" "${TARGET}/etc/ssh/sshd_config"
|
||||||
|
sed -i -E "s|^[[:space:]]*ListenAddress[[:space:]]+::.*$|$(printf '%-29s%s' 'ListenAddress' "${VAR_FINAL_IPV6}")|" "${TARGET}/etc/ssh/sshd_config"
|
||||||
else
|
else
|
||||||
sed -i "/^\s*ListenAddress\s*::/d" "${TARGET}/etc/ssh/sshd_config"
|
#sed -i "/^\s*ListenAddress\s*::/d" "${TARGET}/etc/ssh/sshd_config"
|
||||||
|
sed -i "/^[[:space:]]*ListenAddress[[:space:]]*::/d" "${TARGET}/etc/ssh/sshd_config"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sed -i -E "s|^\s*Port\s+.*$|$(printf '%-30s%s' 'Port' "${ssh_port}")|" "${TARGET}/etc/ssh/sshd_config"
|
#sed -i -E "s|^\s*Port\s+.*$|$(printf '%-29s%s' 'Port' "${ssh_port}")|" "${TARGET}/etc/ssh/sshd_config"
|
||||||
|
sed -i -E "s|^[[:space:]]*Port[[:space:]]+.*$|$(printf '%-29s%s' 'Port' "${ssh_port}")|" "${TARGET}/etc/ssh/sshd_config"
|
||||||
|
|
||||||
if (( ${#ary_user[@]} > 0 )); then
|
if (( ${#ary_user[@]} > 0 )); then
|
||||||
sed -i -E "s|^\s*AllowUsers\s+.*$|$(printf '%-30s%s' 'AllowUsers' "root ${ary_user[*]}")|" "${TARGET}/etc/ssh/sshd_config"
|
sed -i -E "s|^\s*AllowUsers\s+.*$|$(printf '%-29s%s' 'AllowUsers' "root ${ary_user[*]}")|" "${TARGET}/etc/ssh/sshd_config"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -n "${ssh_root_ca}" ]]; then
|
if [[ -n "${ssh_root_ca}" ]]; then
|
||||||
|
var_ca="${ssh_root_ca##*/}"
|
||||||
install -D -m 0644 -o root -g root "${VAR_SETUP_PATH}${ssh_root_ca}" "${TARGET}/etc/ssh/"
|
install -D -m 0644 -o root -g root "${VAR_SETUP_PATH}${ssh_root_ca}" "${TARGET}/etc/ssh/"
|
||||||
sed -i -E "s|^\s*TrustedUserCAKeys\s+.*$|$(printf '%-30s%s' 'TrustedUserCAKeys' "/etc/ssh/${ssh_root_ca}")|" "${TARGET}/etc/ssh/sshd_config"
|
sed -i -E "s|^\s*TrustedUserCAKeys\s+.*$|$(printf '%-29s%s' 'TrustedUserCAKeys' "/etc/ssh/${var_ca}")|" "${TARGET}/etc/ssh/sshd_config"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
do_in_target_script "${TARGET}" "sshd -T >| /root/.ciss/cdi/log/sshd_config.log"
|
### Preparing the test environment in chroot.
|
||||||
do_in_target_script "${TARGET}" "ssh-keygen -r ${VAR_FINAL_FQDN}. >| /root/.ciss/cdi/log/ssh.log"
|
do_in_target "${TARGET}" install -d -o root -g root -m 0755 /run/sshd
|
||||||
|
|
||||||
|
### Syntax test (hard).
|
||||||
|
if ! do_in_target_script "${TARGET}" "sshd -t -f /etc/ssh/sshd_config"; then
|
||||||
|
do_log "emergency" "file_only" "4420() [sshd -t -f /etc/ssh/sshd_config] failed."
|
||||||
|
return "${ERR_CONF_VALIDATION}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
### Effective configuration (soft, purely informative).
|
||||||
|
if ! do_in_target_script "${TARGET}" "sshd -T -f /etc/ssh/sshd_config >| /root/.ciss/cdi/log/sshd_config.log"; then
|
||||||
|
do_log "warn" "file_only" "4420() [sshd -T -f /etc/ssh/sshd_config] failed. Likely env. Continuing."
|
||||||
|
fi
|
||||||
|
|
||||||
|
do_in_target_script "${TARGET}" "ssh-keygen -r ${VAR_FINAL_FQDN}. >| /root/.ciss/cdi/log/SSHFP.log"
|
||||||
|
|
||||||
###########################################################################################
|
###########################################################################################
|
||||||
# The file /etc/profile.d/idle-users.sh is created to set two read-only #
|
# The file /etc/profile.d/idle-users.sh is created to set two read-only #
|
||||||
|
|||||||
@@ -9,8 +9,6 @@
|
|||||||
# SPDX-PackageName: CISS.debian.installer
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
### Version Master V8.00.000.2025.06.17
|
|
||||||
|
|
||||||
# The kernel allows unprivileged users to indirectly cause certain modules to be loaded via module auto-loading. This allows an
|
# The kernel allows unprivileged users to indirectly cause certain modules to be loaded via module auto-loading. This allows an
|
||||||
# attacker to auto-load a vulnerable module which is then exploited. One such example is CVE-2017-6074, in which an attacker
|
# attacker to auto-load a vulnerable module which is then exploited. One such example is CVE-2017-6074, in which an attacker
|
||||||
# could trigger the DCCP kernel module to be loaded by initiating a DCCP connection and then exploit a vulnerability in said
|
# could trigger the DCCP kernel module to be loaded by initiating a DCCP connection and then exploit a vulnerability in said
|
||||||
|
|||||||
@@ -9,8 +9,6 @@
|
|||||||
# SPDX-PackageName: CISS.debian.installer
|
# SPDX-PackageName: CISS.debian.installer
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
### Version Master V8.03.864.2025.07.15
|
|
||||||
|
|
||||||
### https://www.ssh-audit.com/
|
### https://www.ssh-audit.com/
|
||||||
### ssh -Q cipher | cipher-auth | compression | kex | kex-gss | key | key-cert | key-plain | key-sig | mac | protocol-version | sig
|
### ssh -Q cipher | cipher-auth | compression | kex | kex-gss | key | key-cert | key-plain | key-sig | mac | protocol-version | sig
|
||||||
|
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ declare -girx ERR_READ_GRUB_FILE=221 # Error reading the Grub password file.
|
|||||||
declare -girx ERR_READ_PASS_FILE=220 # Error reading the password file.
|
declare -girx ERR_READ_PASS_FILE=220 # Error reading the password file.
|
||||||
declare -girx ERR_GENERATE_SALT=219 # Error generating salt.
|
declare -girx ERR_GENERATE_SALT=219 # Error generating salt.
|
||||||
declare -girx ERR_VAR_REGEX_CHK=218 # Error checking VAR against REGEX.
|
declare -girx ERR_VAR_REGEX_CHK=218 # Error checking VAR against REGEX.
|
||||||
|
declare -girx ERR_CONF_VALIDATION=217 # Error checking the respective configuration files.
|
||||||
|
|
||||||
### Definition of error trap vars.
|
### Definition of error trap vars.
|
||||||
declare -gx ERRCODE="" # = $? = $1 = ERRCODE
|
declare -gx ERRCODE="" # = $? = $1 = ERRCODE
|
||||||
|
|||||||
Reference in New Issue
Block a user