917 lines
58 KiB
YAML
917 lines
58 KiB
YAML
# 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
|
||
%YAML 1.2
|
||
---
|
||
### This file contains configurations for the CISS.debian.installer
|
||
### Master V8.00.000.2025.06.17
|
||
### YAML specification: 1.2
|
||
|
||
installer:
|
||
name: "CISS.debian.installer"
|
||
version: "V8.00.000.2025.06.17"
|
||
|
||
################################################################################################################################
|
||
# APT settings
|
||
################################################################################################################################
|
||
apt:
|
||
contrib: true # Optionally, install contrib software.
|
||
deb_sources: true # Optionally includes deb-src entries for source repositories.
|
||
default_list: false # By default, source repositories are listed in '/etc/apt/sources.list'.
|
||
default_deb822: true # Since Trixie, source repositories are listed in '/etc/apt/sources.list.d/' in deb.822 format.
|
||
full_upgrade: true # Whether to upgrade packages after debootstrap.
|
||
install_recommends: true # Configure APT to not install recommended packages by default.
|
||
non_free: true # Optionally, install non-free software.
|
||
non_free_firmware: true # Optionally, install non-free firmware. MUST be "true" for microcode updates.
|
||
sec: "security.debian.org" # Debian Security Updates Archive.
|
||
|
||
##############################################################################################################################
|
||
# A network mirror MUST be used to supplement the software not included on the installation media. This may also make newer
|
||
# versions of software available.
|
||
##############################################################################################################################
|
||
mirror:
|
||
activate: true # MUST be "true".
|
||
country: "US" # Country code of mirror destination.
|
||
directory: "/debian/" # Debian archive mirror directory in which the mirror of the Debian archive is located.
|
||
hostname: "deb.debian.org" # Debian archive mirror hostname.
|
||
https-country: "US" # Debian archive mirror country.
|
||
protocol: "https" # Protocol to be used for downloading files, where "https" is RECOMMENDED.
|
||
proxy: "" # HTTP proxy information (blank for none) or "http://[[user][:pass]@]host[:port]/"
|
||
|
||
##############################################################################################################################
|
||
# Debian has the following services that provide updates.
|
||
#
|
||
# Backported software is adapted from the development version to work with this release. Although this software has not gone
|
||
# through such complete testings as that contained in the release, it includes newer versions of some applications that may
|
||
# provide useful features. Enabling backports here does not cause any of them to be installed by default; it only allows you
|
||
# to manually select backports to use.
|
||
#
|
||
# Release updates provide more current versions for software that changes relatively frequently and where not having the
|
||
# latest version could reduce the usability of the software. It also provides regression fixes. This service is only
|
||
# available for stable and oldstable releases.
|
||
#
|
||
# Security updates help to keep your system secured against attacks. Enabling this service is strongly recommended.
|
||
#
|
||
# Applying updates on a frequent basis is an important part of keeping the system secure. By default, security updates are not
|
||
# automatically installed, as security advisories should be reviewed before manual installation of the updates using standard
|
||
# package management tools.
|
||
#
|
||
# Alternatively, the unattended-upgrades package can be installed, which will install security updates automatically. Note,
|
||
# however, that automatic installation of updates may occasionally cause unexpected downtime of services provided by this
|
||
# machine in the rare cases where the update is not fully backward-compatible, or where the security advisory requires the
|
||
# administrator to perform some other manual operation. Possible choices: "none", "security", "unattended" (RECOMMENDED)
|
||
##############################################################################################################################
|
||
updates:
|
||
backports: true
|
||
release: true
|
||
security: true
|
||
policy: "unattended"
|
||
|
||
################################################################################################################################
|
||
# Basic settings
|
||
################################################################################################################################
|
||
architecture: "amd64" # MUST be one of "amd64" or "arm64".
|
||
chroot_debug: "false" # Enable debug mode in the chroot environment in case of errors.
|
||
debootstrap: # Provide a mirror for downloading the Debian packages for debootstrap.
|
||
# Specify the packages to be included in the debootstrapping process. Include a comma-separated
|
||
# list of official Debian packages.
|
||
mirror: "https://deb.debian.org/debian"
|
||
# The following packages MUST be included in the debootstrap.
|
||
includes: "busybox,ca-certificates,git,locales,openssl,python3,python3-apt,zstd"
|
||
distribution: "trixie" # MUST be "trixie".
|
||
debian_suite: "stable" # MUST be "stable". Not supported yet: "testing", "experimental".
|
||
exit:
|
||
halt: false # This is how to make the installer shutdown when finished, but not reboot.
|
||
poweroff: false # This will power off the machine instead of just halting it (RECOMMENDED).
|
||
reboot: true # This will reboot the machine.
|
||
firmware:
|
||
install: true # If non-free firmware is needed for the network or other hardware, autoinstall it.
|
||
lookup: "missing" # - "never" Completely disables the firmware search.
|
||
# - "missing" Searches only when the firmware is needed. (default)
|
||
# - "always" Always searches and asks for any firmware that could be useful for the hardware.
|
||
image: "linux-image-6.16.3+deb13-amd64"
|
||
# Could be a meta-package or a specific image like:
|
||
# "linux-image-amd64" || "linux-image-arm64"
|
||
# "linux-image-cloud-amd64" || "linux-image-cloud-arm64"
|
||
# "linux-image-rt-amd64" || "linux-image-rt-arm64"
|
||
# "linux-image-6.16.3+deb13-amd64"
|
||
needrun: false # Static linking to "${TARGET}/run" can cause problems if this data is "burned" into the target.
|
||
provider: "netcup" # MUST be one of "contabo", "hetzner", "netcup" or leave empty.
|
||
security_ext: "selinux" # MUST be one of "apparmor" or "selinux".
|
||
|
||
################################################################################################################################
|
||
# Dropbear settings
|
||
################################################################################################################################
|
||
dropbear:
|
||
boot: true # Dropbear initramfs integration.
|
||
dhcp: false # Whether the '/etc/initramfs-tools/conf.d/ip' file should be configured statically or via DHCP.
|
||
firewall: false # Yet not implemented. MUST be "false".
|
||
# Additional ultra hardening of the dropbear initramfs environment via firewall.
|
||
# The "bastion_ipv4" MUST be provided.
|
||
port: 42137 # SSH Port dropbear initramfs should listen.
|
||
pub_key: "/.preseed/unlock_wrapper_pubring.gpg"
|
||
# './path/to/unlock_wrapper_pubring.pgp' to check the signature of: 'unlock-wrapper.sh.sha512.sig'
|
||
sha_file: "/.preseed/unlock_wrapper.sh.sha512"
|
||
# './path/to/unlock_wrapper.sh.sha512' to verify the integrity of: 'unlock-wrapper.sh'
|
||
sig_file: "/.preseed/unlock_wrapper.sh.sha512.sig"
|
||
# './path/to/unlock_wrapper.sh.sha512.sig' to verify the authenticity of: 'unlock-wrapper.sh.sha512'
|
||
|
||
################################################################################################################################
|
||
# Grub Bootparameter
|
||
# https://docs.kernel.org/admin-guide/kernel-parameters.html
|
||
################################################################################################################################
|
||
grub_parameter:
|
||
##############################################################################################################################
|
||
# [ USB ] Default USB device authorization:
|
||
# default -1 = authorized (same as 1)
|
||
# 0 = not authorized, 1 = authorized, 2 = authorized if a device connected to an internal port.
|
||
##############################################################################################################################
|
||
- "usbcore.authorized_default=0"
|
||
|
||
##############################################################################################################################
|
||
# Audit events need to be captured on processes that start up prior to auditd, so that potential malicious activity cannot go
|
||
# undetected. During boot if audit=1, then the backlog will hold 64 records. If more than 64 records are created during boot,
|
||
# auditd records will be lost, and potential malicious activity could go undetected.
|
||
##############################################################################################################################
|
||
- "audit=1"
|
||
- "audit_backlog_limit=8192"
|
||
|
||
##############################################################################################################################
|
||
# Distrusts CPU bootloader for initial entropy at boot. Distrusts the CPU for initial entropy at boot, as it is not possible
|
||
# to audit, may contain weaknesses or a backdoor.
|
||
# https://en.wikipedia.org/wiki/RDRAND#Reception
|
||
# https://twitter.com/pid_eins/status/1149649806056280069
|
||
# https://archive.nytimes.com/www.nytimes.com/interactive/2013/09/05/us/documents-reveal-nsa-campaign-against-encryption.html
|
||
# https://forums.whonix.org/t/entropy-config-random-trust-cpu-yes-or-no-rng-core-default-quality/8566
|
||
# https://lkml.org/lkml/2022/6/5/271
|
||
##############################################################################################################################
|
||
- "random.trust_cpu=off"
|
||
|
||
##############################################################################################################################
|
||
# Distrusts the bootloader for initial entropy at boot.
|
||
# https://lkml.org/lkml/2022/6/5/271
|
||
##############################################################################################################################
|
||
- "random.trust_bootloader=off"
|
||
|
||
##############################################################################################################################
|
||
# ASLR (Address Space Layout Randomization) causes central areas of memory to be assigned random addresses each time a program
|
||
# is started. These include: Stack, Heap, Shared libraries (e.g., libc), mmap regions, VDSO/VSyscall. The executable itself
|
||
# (only with PIE binaries). The aim is to make it more difficult for attackers to predict memory addresses, thereby preventing
|
||
# classic exploits that rely on known addresses from succeeding.
|
||
# 0: disabled Fixed memory addresses – insecure, testable.
|
||
# 1: Partial ASLR Heap, mmap are randomized, stack only partially randomized.
|
||
# 2: Full ASLR (default) Stack, mmap, heap, VDSO, shared libraries all randomized.
|
||
##############################################################################################################################
|
||
- "randomize_va_space=2"
|
||
|
||
##############################################################################################################################
|
||
# Enables IOMMU to prevent DMA attacks. intel_iommu=on amd_iommu=force_isolation iommu=force
|
||
# Multiple IOMMU switches are redundant; iommu=force is usually sufficient. Forces an IOMMU to be initialized and used
|
||
# completely, even if the BIOS or ACPI wanted to disable it. It activates the basic DMA remapping function. However, it does
|
||
# not say anything about how restrictive the mapping strategy is, 'passthrough', 'strict', see below.
|
||
##############################################################################################################################
|
||
- "iommu=force"
|
||
|
||
##############################################################################################################################
|
||
# Enables strict enforcement of IOMMU TLB invalidation, so devices will never be able to access stale data contents.
|
||
# - 'iommu.passthrough=0'
|
||
# Prevents devices from operating in identity-mapped passthrough mode. Without this parameter (or with =1), devices could be
|
||
# passed through without being monitored by the IOMMU in a truly restrictive manner. From a security standpoint,
|
||
# - 'iommu.passthrough=0' is an important step toward DMA isolation for all devices, especially for untrusted PCI(e) devices.
|
||
# - 'iommu.strict=1'
|
||
# Enables Strict Mode for dma-iommu.c (i.e., all DMA transactions are validated synchronously). Without this parameter, the
|
||
# kernel often runs in lazy mode, where mapping caches are used.
|
||
# Performance vs. security: strict=1= more secure, but potentially slower, especially with many small DMA transfers.
|
||
# https://github.com/torvalds/linux/blob/master/drivers/iommu/Kconfig#L97
|
||
# Page 11 of https://lenovopress.lenovo.com/lp1467.pdf
|
||
##############################################################################################################################
|
||
- "iommu.passthrough=0"
|
||
- "iommu.strict=1"
|
||
|
||
##############################################################################################################################
|
||
# Disable the busmaster bit on all PCI bridges during very early boot to avoid holes in IOMMU.
|
||
# https://mjg59.dreamwidth.org/54433.html
|
||
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4444f8541dad16fefd9b8807ad1451e806ef1d94
|
||
##############################################################################################################################
|
||
- "efi=disable_early_pci_dma"
|
||
|
||
##############################################################################################################################
|
||
# Disables the merging of slabs of similar sizes. Sometimes a slab can be used vulnerably, which an attacker can exploit.
|
||
##############################################################################################################################
|
||
- "slab_nomerge"
|
||
|
||
##############################################################################################################################
|
||
# Zero memory at allocation and free time.
|
||
##############################################################################################################################
|
||
- "init_on_alloc=1"
|
||
- "init_on_free=1"
|
||
|
||
##############################################################################################################################
|
||
# This option randomizes page allocator freelists, improving security by making page allocations less predictable. This also
|
||
# improves performance.
|
||
##############################################################################################################################
|
||
- "page_alloc.shuffle=1"
|
||
|
||
##############################################################################################################################
|
||
# When releasing (i.e., free_pages()), all bytes with a marker value (e.g., 0xAA) are overwritten. If later code
|
||
# (accidentally or maliciously) accesses this page, it will most likely crash or produce recognizable artifacts. Only
|
||
# supported if the kernel was built with CONFIG_PAGE_POISONING=y (default on Debian: enabled since Bookworm).
|
||
##############################################################################################################################
|
||
- "page_poison=1"
|
||
|
||
##############################################################################################################################
|
||
# Enables Kernel Page Table Isolation, which mitigates Meltdown, improves KASLR.
|
||
##############################################################################################################################
|
||
- "pti=on"
|
||
|
||
##############################################################################################################################
|
||
# The setting 'vsyscall' is obsolete, are at fixed addresses and are a target for ROP.
|
||
##############################################################################################################################
|
||
- "vsyscall=none"
|
||
|
||
##############################################################################################################################
|
||
# The kernel adds a small random padding offset to the stack pointer with every system call or kernel entry. The starting
|
||
# point for local variables is at a different position within the stack with every call. This makes ROP chains
|
||
# (return-oriented programming) or stack pivoting attacks significantly more difficult.
|
||
##############################################################################################################################
|
||
- "randomize_kstack_offset=on"
|
||
|
||
##############################################################################################################################
|
||
# Prevents the debugfsfile system from being made available at boot time. This is a useful hardening measure because debugfs
|
||
# reveals a lot of potentially security-relevant kernel information by default, which can be misused by normal users and by
|
||
# exploits.
|
||
##############################################################################################################################
|
||
- "debugfs=off"
|
||
|
||
##############################################################################################################################
|
||
# Force the kernel to panic on "oopses" (which may be due to false positives).
|
||
# - 'panic=N' (e.g., 'panic=60'): Wait N seconds and then reboot.
|
||
# - 'panic=0' No automatic action (System remains stuck in panic state).
|
||
# - 'panic=-1' Also explicitly prevents any automatic reboot.
|
||
##############################################################################################################################
|
||
- "oops=panic"
|
||
- "panic=-1"
|
||
|
||
##############################################################################################################################
|
||
# Enable a subset of known mitigations for CPU vulnerabilities and disable SMT.
|
||
# - 'mitigations=auto' Enables all available CPU-specific security measures based on the detected CPU, microcode version, and
|
||
# kernel build configuration, if applicable.
|
||
# - 'nosmt' Disables Simultaneous Multithreading (SMT) (e.g., Hyper-Threading on Intel) system-wide to prevent shared cache
|
||
# attacks (SMoTHER, MDS, L1TF, TAA, Snoop-assisted).
|
||
# Why is 'mitigations=auto,nosmt' better than setting everything manually?
|
||
# Automatically adjusted: Depending on CPU family, stepping, microcode.
|
||
# Consistency guaranteed: No contradictions between flags are possible
|
||
# (e.g., spec_store_bypass_disable=on vs. nospec_store_bypass_disable=off).
|
||
# Future-proof: Even new features (e.g., bhi=flush or srbds) are automatically activated without having to know about them.
|
||
##############################################################################################################################
|
||
- "mitigations=auto,nosmt"
|
||
|
||
##############################################################################################################################
|
||
# If mitigations=auto,nosmt is set, see before, then these flags should not be set individually because they are redundant.
|
||
# Enable mitigations for both 'Spectre Variant 2' (indirect branch speculation) and Intel branch history injection (BHI)
|
||
# vulnerabilities.
|
||
# https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/spectre.html
|
||
##############################################################################################################################
|
||
#- "spectre_v2=on"
|
||
#- "spectre_v2_user=on"
|
||
#- "spectre_bhi=on"
|
||
|
||
##############################################################################################################################
|
||
# If mitigations=auto,nosmt is set, see before, then these flags should not be set individually because they are redundant.
|
||
# Disable Speculative Store Bypass (Spectre Variant 4).
|
||
# https://www.suse.com/support/kb/doc/?id=000019189
|
||
##############################################################################################################################
|
||
#- "spec_store_bypass_disable=on"
|
||
#- "nospec_store_bypass_disable=off"
|
||
|
||
##############################################################################################################################
|
||
# If mitigations=auto,nosmt is set, see before, then these flags should not be set individually because they are redundant.
|
||
# Enable mitigations for the L1TF vulnerability through disabling SMT and L1D flush runtime control.
|
||
# https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/l1tf.html
|
||
##############################################################################################################################
|
||
#- "l1tf=full,force"
|
||
|
||
##############################################################################################################################
|
||
# If mitigations=auto,nosmt is set, see before, then these flags should not be set individually because they are redundant.
|
||
# Enable mitigations for the MDS vulnerability through clearing the buffer cache and disabling SMT.
|
||
# https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/mds.html
|
||
##############################################################################################################################
|
||
#- "mds=full,nosmt"
|
||
|
||
##############################################################################################################################
|
||
# If mitigations=auto,nosmt is set, see before, then these flags should not be set individually because they are redundant.
|
||
# Patches the TAA vulnerability by disabling TSX and enables mitigations using TSX Async Abort along with disabling SMT.
|
||
# https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/tsx_async_abort.html
|
||
##############################################################################################################################
|
||
#- "tsx=off"
|
||
#- "tsx_async_abort=full,nosmt"
|
||
|
||
##############################################################################################################################
|
||
# Mark all huge pages in the EPT as non-executable to mitigate iTLB multihit.
|
||
# https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/multihit.html
|
||
##############################################################################################################################
|
||
- "kvm.nx_huge_pages=force"
|
||
|
||
##############################################################################################################################
|
||
# Force disable SMT as it has caused numerous CPU vulnerabilities. The only full mitigation of cross-HT attacks is disabling.
|
||
# https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/core-scheduling.html
|
||
##############################################################################################################################
|
||
- "nosmt=force"
|
||
|
||
##############################################################################################################################
|
||
# Enables the prctl interface to prevent leaks from L1D on context switches.
|
||
# https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/l1d_flush.html
|
||
##############################################################################################################################
|
||
- "l1d_flush=on"
|
||
|
||
##############################################################################################################################
|
||
# Mitigates numerous MMIO Stale Data vulnerabilities and disables SMT.
|
||
# mmio_stale_data=off No mitigation (unsafe)
|
||
# mmio_stale_data=full All known measures active
|
||
# mmio_stale_data=full,nosmt Full mitigation + SMT disabling
|
||
# mmio_stale_data=auto Activated depending on CPU/microcode
|
||
# mmio_stale_data=full,force Forces mitigation even on CPUs that are supposedly not affected.
|
||
# https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/processor_mmio_stale_data.html
|
||
##############################################################################################################################
|
||
- "mmio_stale_data=full,force"
|
||
|
||
##############################################################################################################################
|
||
# Enable mitigations for RETBleed (Arbitrary Speculative Code Execution with Return Instructions) vulnerability and disable
|
||
# SMT. If 'mitigations=auto,nosmt' is set, the kernel already activates all retbleed-relevant mitigations, provided the CPU
|
||
# is affected; 'retbleed=auto,nosmt' explicitly overrides the internal assessment and forces full protection. If maximum
|
||
# hardening is required, and one does not want to rely on "auto-detection", then it is recommended to additionally set
|
||
# 'retbleed=auto,nosmt' otherwise, 'mitigations=auto,nosmt' is sufficient.
|
||
# https://www.suse.com/support/kb/doc/?id=000020693
|
||
##############################################################################################################################
|
||
- "retbleed=auto,nosmt"
|
||
|
||
##############################################################################################################################
|
||
# Enables kernel lockdown mode with a focus on confidentiality. The kernel is configured in such a way that even privileged
|
||
# users (such as root) have limited access to kernel data and debug mechanisms.
|
||
# 'confidentiality': Maximum restriction to ensure the security and integrity of the system. This prevents direct access to
|
||
# hardware and debug interfaces, for example. Useful for highly secure environments as it reduces the attack surface to kernel
|
||
# data. However, some applications that require debugging or hardware access may have problems.
|
||
# Note: Lockdown=confidentiality prevents the kernel reads required for the systemd eBPF program
|
||
# (e.g., bpf_probe_read_kernel()), the verifier aborts, Invalid argument, and bpf-restrict-fs cannot load. Functionally, this
|
||
# is "only" the failure of the systemd hardening module RestrictFileSystems= (and related BPF filters); the rest boots.
|
||
# Therefore, countermeasures without BPF/BTF:
|
||
# Strict least-privilege: CapabilityBoundingSet= (remove CAP_SYS_ADMIN), 'NoNewPrivileges=yes', 'SystemCallFilter=~mount',
|
||
# 'PrivateMounts=yes', 'ProtectKernelModules=yes'. On the network side: instead of BPF egress, nftables policies at host level
|
||
# per unit: BindToDevice=lo or disconnect network NS. File systems: 'ProtectSystem=strict', 'ReadOnlyPaths=',
|
||
# 'InaccessiblePaths=', 'ProtectHome=tmpfs|read-only'.
|
||
# Otherwise, countermeasures with 'lockdown=integrity':
|
||
# 'kernel.unprivileged_bpf_disabled=1', 'net.core.bpf_jit_harden=2', 'kernel.perf_event_paranoid=3', 'kernel.kptr_restrict=2',
|
||
# 'kernel.dmesg_restrict=1'. Optional: 'kernel.kexec_load_disabled=1'. One gets BPF hardening (Restrict-FS, Egress filter),
|
||
# but minimizes BPF abuse by unprivileged users & JIT hardening.
|
||
# https://blog.cloudflare.com/de-de/linux-kernel-hardening/
|
||
# https://www.linux-magazine.com/Issues/2020/239/Lockdown-Mode
|
||
##############################################################################################################################
|
||
- "lockdown=integrity"
|
||
|
||
##############################################################################################################################
|
||
# Enables 'Read-Only Data Protection', which implements read-only memory areas for kernel data structures. This protects the
|
||
# kernel from certain types of exploit (e.g., buffer overflows). 'on': Forces the corresponding areas to remain read-only.
|
||
# https://www.kernel.org/doc/html/v6.10/admin-guide/kernel-parameters.html
|
||
##############################################################################################################################
|
||
- "rodata=on"
|
||
|
||
##############################################################################################################################
|
||
# Kernel Electric-Fence (KFENCE) is a low-overhead sampling-based memory safety error detector. KFENCE detects a heap of
|
||
# out-of-bounds access, use-after-free, and invalid-free errors. KFENCE is designed to be enabled in production kernels and
|
||
# has near zero performance overhead. Compared to KASAN, KFENCE trades performance for precision. The main motivation behind
|
||
# KFENCE design is that with enough total uptime, KFENCE will detect bugs in code paths not typically exercised by
|
||
# non-production test workloads. One way to quickly achieve a large enough total uptime is when the tool is deployed across a
|
||
# large fleet of machines.
|
||
# https://docs.kernel.org/dev-tools/kfence.html
|
||
##############################################################################################################################
|
||
- "kfence.sample_interval=100"
|
||
|
||
##############################################################################################################################
|
||
# CFI Ensures that only controlled, predefined transitions are possible in the programs' control flow.
|
||
# kcfi (Kernel Control Flow Integrity): Specific implementation of CFI for the Linux kernel that is particularly robust and
|
||
# provides accurate control flow validation. kcfi relies on compiler-based technologies (e.g., LLVM) that insert special
|
||
# checks and instrumentation into the kernel code.
|
||
# https://kspp.github.io/Recommended_Settings#kernel-command-line-options
|
||
##############################################################################################################################
|
||
- "cfi=kcfi"
|
||
|
||
##############################################################################################################################
|
||
# Remove additional (32-bit) attack surface, unless you really need them.
|
||
# https://www.kernel.org/doc/html/v6.10/admin-guide/kernel-parameters.html
|
||
# https://kspp.github.io/Recommended_Settings#kernel-command-line-options
|
||
##############################################################################################################################
|
||
- "ia32_emulation=0"
|
||
|
||
##############################################################################################################################
|
||
# Removes mapping for 32-bit VDSO (for ia32binaries). On 32-bit processes that rely on VDSO, this causes a fallback to classic
|
||
# syscalls (slower) or errors. On a system without CONFIG_IA32_EMULATION or with ia32_emulation=0, vdso32=0 is effective but
|
||
# redundant.
|
||
##############################################################################################################################
|
||
- "vdso32=0"
|
||
|
||
##############################################################################################################################
|
||
# Checks every copy_to_user() / copy_from_user()operation. Prevents kernels from accidentally copying unallocated memory to
|
||
# userspace. Stop exploits that trigger buffer overflows or use-after-free via copy_*_user(), for example. Effect: Detects
|
||
# heap/SLOB abuse, overwrites. Leads to BUG() & stack trace if suspicious access is detected.
|
||
##############################################################################################################################
|
||
- "hardened_usercopy=1"
|
||
|
||
##############################################################################################################################
|
||
# Sets the minimum log output of the kernel at boot time to level 0 (= KERN_EMERG).
|
||
##############################################################################################################################
|
||
- "loglevel=0"
|
||
|
||
################################################################################################################################
|
||
# Grub settings
|
||
################################################################################################################################
|
||
grub:
|
||
background: # RECOMMENDED settings: JPG 1280 x 1024 px or JPG 1920 x 1080 px
|
||
enable: true # If you want to add a GRUB background.
|
||
path: "/includes/target/etc/default/grub.d/club_1280_720.png"
|
||
bootdev: "/dev/sda" # Due notably to potential USB sticks, the location of the primary drive cannot be determined
|
||
# safely in general, so this needs to be specified.
|
||
force_efi: true # Force GRUB installation to the EFI removable media path?
|
||
# Some EFI firmware implementations do not meet the EFI specification (i.e., they are buggy)
|
||
# and do not support proper configuration of boot options from system hard drives.
|
||
#
|
||
# A workaround for this problem is to install an extra copy of the EFI version of the GRUB
|
||
# bootloader to a fallback location, the "removable media path". Almost all EFI systems, no
|
||
# matter how buggy, will boot GRUB that way.
|
||
#
|
||
# Warning: If the installer failed to detect another operating system that is present on your
|
||
# computer that also depends on this fallback, installing GRUB there will make that OS
|
||
# temporarily unbootable. GRUB can be manually configured later to boot it if necessary.
|
||
only_debian: true # This is fairly safe to set; it makes grub install automatically to the UEFI partition '/boot'
|
||
# record if no other operating system is detected on the machine.
|
||
other-os: true # This one makes grub-installer install to the UEFI partition '/boot' record if it also finds
|
||
# some other OS, which is less safe as it might not be able to boot that other OS.
|
||
password: true # If you want to set a password for GRUB. The password MUST be set at:
|
||
# '/.preseed/password_grub.txt'.
|
||
prober: false # OS-prober did not detect any other operating systems on your computer at this time, but you
|
||
# may still wish to enable it in case you install more in the future.
|
||
skip: false # Skip installing grub.
|
||
update_nvram: false # Update NVRAM variables to automatically boot into Debian?
|
||
# GRUB can configure your platform's NVRAM variables so that it boots into Debian automatically
|
||
# when powered on. However, you may prefer to disable this behavior and avoid changes to your
|
||
# boot configuration. For example, if your NVRAM variables have been set up such that your
|
||
# the system contacts a PXE server on every boot, this would preserve that behavior.
|
||
|
||
################################################################################################################################
|
||
# Locale settings set language, country, locale, keyboard map and timezone
|
||
################################################################################################################################
|
||
locale:
|
||
country: "US"
|
||
keyboard:
|
||
layout: "de"
|
||
xkb_keymap: "de"
|
||
language: "en"
|
||
locale: # All locales specified via override MUST be set here, too. A specified 'locale' take
|
||
# precedence over 'country' and 'language' settings.
|
||
- "en_US.UTF-8"
|
||
- "de_DE.UTF-8"
|
||
override:
|
||
address: "de_DE.UTF-8" # Address format.
|
||
collate: "en_US.UTF-8" # Sort order.
|
||
ctype: "de_DE.UTF-8" # Character set, upper/lower case, character groups.
|
||
measurement: "de_DE.UTF-8" # Metric or imperial system.
|
||
messages: "en_US.UTF-8" # System language for error messages.
|
||
monetary: "en_US.UTF-8" # Currency format and symbol.
|
||
name: "en_US.UTF-8" # Format of personal names.
|
||
numeric: "en_US.UTF-8" # Number formatting, decimal / a thousand separators.
|
||
paper: "de_DE.UTF-8" # Standard paper format.
|
||
telephone: "en_US.UTF-8" # Format for telephone numbers.
|
||
time: "de_DE.UTF-8" # Date and time format, start of week.
|
||
timezone: "Europe/Lisbon"
|
||
|
||
################################################################################################################################
|
||
# Network settings
|
||
################################################################################################################################
|
||
network:
|
||
autoconfig:
|
||
enable: true # Automatic network configuration 'dhcp' is the default. If you prefer to configure the network
|
||
# manually, change 'network.autoconfig.enable' from "true" to "false" and configure
|
||
# - 'network.choose_interface.static'
|
||
# - 'network.hostname'
|
||
# - 'network.ipv6'
|
||
# - 'network.static' section
|
||
choose_interface:
|
||
auto: true # Choose an interface that has a link if possible. Or manually configure the static NIC below.
|
||
static: "eth1" # For manual configuration, specify a particular interface.
|
||
hostname: "nsa.usic.gov" # Specify the FQDN of the server.
|
||
# If not specified and autoconfig is enabled, the given dhcp value is chosen.
|
||
ipv6: true # Specify if you want to use IPv6.
|
||
timeout:
|
||
dhcp: 60 # If the dhcp server is slow, and the installer times out waiting for it, this might be useful.
|
||
linkwait: 3 # To set a different link detection timeout (default is 3 seconds).
|
||
static:
|
||
enable: true # If you want the preconfiguration file to work on systems both with and without a dhcp
|
||
# server, change 'network.static.enable' from "false" to "true" and configure the static
|
||
# configuration below.
|
||
ipv4address: ""
|
||
ipv4netmask: ""
|
||
ipv4gateway: ""
|
||
ipv4nameserver:
|
||
- "135.181.207.105" # dns01.eddns.eu
|
||
- "89.58.62.53" # dns02.eddns.de
|
||
- "138.199.237.109" # dns03.eddns.eu
|
||
ipv4nameserver_fallback: # Only three DNS Resolvers in total are recommended.
|
||
#- "176.9.93.198" # dnsforge.de
|
||
#- "176.9.1.117" # dnsforge.de
|
||
ipv6address: "2a03:4000:10:d43:188:68:34:243"
|
||
ipv6netmask: "128"
|
||
ipv6gateway: "fe80::1"
|
||
ipv6nameserver:
|
||
- "2a01:4f9:c012:a813:135:181:207:105"
|
||
- "2a0a:4cc0:1:e6:89:58:62:53"
|
||
- "2a01:4f8:c013:8011:138:199:237:109"
|
||
ipv6nameserver_fallback: # Only three DNS Resolvers in total are recommended.
|
||
#- "2a01:4f8:151:34aa::198"
|
||
#- "2a01:4f8:141:316d::117"
|
||
|
||
################################################################################################################################
|
||
# Security settings
|
||
################################################################################################################################
|
||
security:
|
||
ufw_out: deny # Policy for ufw outbound traffic. MUST be either 'allow' or 'deny'.
|
||
unauthenticated: false # The installer will ensure that any packages are signed and authenticated.
|
||
unauthenticated_ssl: false # This ensures that the connection between the installer, and the server from which files
|
||
# are downloaded, is encrypted and signed by a trusted certificate authority.
|
||
|
||
################################################################################################################################
|
||
# Software installation
|
||
################################################################################################################################
|
||
software:
|
||
##############################################################################################################################
|
||
### Installed by 4000_debootstrap.sh
|
||
##############################################################################################################################
|
||
# adduser
|
||
# apt
|
||
# apt-utils
|
||
# base-files
|
||
# base-passwd
|
||
# bash
|
||
# bsdutils
|
||
# busybox
|
||
# ca-certificates
|
||
# coreutils
|
||
# cpio
|
||
# cron
|
||
# dash
|
||
# debconf
|
||
# debian-archive-keyring
|
||
# debianutils
|
||
# dhcpcd-base
|
||
# diffutils
|
||
# e2fsprogs
|
||
# fdisk
|
||
# findutils
|
||
# git
|
||
# grep
|
||
# gzip
|
||
# hostname
|
||
# ifupdown
|
||
# iproute2
|
||
# iputils-ping
|
||
# kmod
|
||
# less
|
||
# locales
|
||
# login
|
||
# logrotate
|
||
# nano
|
||
# openssl
|
||
# passwd
|
||
# procps
|
||
# python3
|
||
# python3-apt
|
||
# sed
|
||
# tar
|
||
# tzdata
|
||
# util-linux
|
||
# vim-common
|
||
# zstd
|
||
#
|
||
##############################################################################################################################
|
||
### Installed by 4110_update_sources.sh
|
||
##############################################################################################################################
|
||
# unattended-upgrades
|
||
#
|
||
##############################################################################################################################
|
||
### Installed by 4130_installation_toolset.sh
|
||
##############################################################################################################################
|
||
# apt-show-versions
|
||
# bc
|
||
# bind9-dnsutils
|
||
# bsdmainutils
|
||
# btrfs-progs
|
||
# bzip2
|
||
# console-setup
|
||
# curl
|
||
# dirmngr
|
||
# dmsetup
|
||
# dosfstools
|
||
# e2fsprogs
|
||
# efibootmgr
|
||
# file
|
||
# gawk
|
||
# gdisk
|
||
# gnupg
|
||
# haveged
|
||
# initramfs-tools
|
||
# jq
|
||
# kbd
|
||
# keyutils
|
||
# libpam-pwquality
|
||
# lsb-release
|
||
# parted
|
||
# pciutils
|
||
# pwgen
|
||
# sudo
|
||
# tree
|
||
# unzip
|
||
# usbutils
|
||
# vim-common
|
||
# wget
|
||
# whois
|
||
# zsh
|
||
#
|
||
##############################################################################################################################
|
||
### Installed by 4140_installation_microcode.sh
|
||
##############################################################################################################################
|
||
# amd64-microcode
|
||
# intel-microcode
|
||
#
|
||
##############################################################################################################################
|
||
### Installed by 4150_installation_chrony.sh
|
||
##############################################################################################################################
|
||
# chrony
|
||
#
|
||
##############################################################################################################################
|
||
### Installed by 4160_installation_eza.sh
|
||
##############################################################################################################################
|
||
# eza
|
||
#
|
||
##############################################################################################################################
|
||
### Installed by 4170_installation_lynis.sh
|
||
##############################################################################################################################
|
||
# lynis
|
||
#
|
||
##############################################################################################################################
|
||
### Installed by 4220_installation_cryptsetup.sh
|
||
##############################################################################################################################
|
||
# cryptsetup
|
||
# cryptsetup-initramfs
|
||
#
|
||
##############################################################################################################################
|
||
### Installed by 4230_installation_grub.sh
|
||
##############################################################################################################################
|
||
# grub2-common
|
||
# grub-efi-amd64 || grub-efi-arm64 || grub-efi-ia32
|
||
#
|
||
##############################################################################################################################
|
||
### Installed by 4305_installation_netsec.sh
|
||
##############################################################################################################################
|
||
# fail2ban
|
||
# ufw
|
||
#
|
||
##############################################################################################################################
|
||
### Installed by 4310_dropbear_build.sh
|
||
##############################################################################################################################
|
||
# dropbear-initramfs
|
||
#
|
||
##############################################################################################################################
|
||
### Installed by 4330_installation_ssh.sh
|
||
##############################################################################################################################
|
||
# ssh
|
||
#
|
||
##############################################################################################################################
|
||
### Installed by 4480_hardening_usb.sh
|
||
##############################################################################################################################
|
||
# usbguard
|
||
#
|
||
##############################################################################################################################
|
||
### Installed by 4490_hardening_virus.sh
|
||
##############################################################################################################################
|
||
# rkhunter
|
||
#
|
||
##############################################################################################################################
|
||
# Installed by 4500_accounts_preparation.sh
|
||
##############################################################################################################################
|
||
# bash-completion
|
||
# fzf
|
||
#
|
||
##############################################################################################################################
|
||
# Installed by 4510_accounts_hardening.sh
|
||
##############################################################################################################################
|
||
# libpam-google-authenticator
|
||
# wamerican
|
||
# wbritish
|
||
# wfrench
|
||
# wngerman
|
||
#
|
||
##############################################################################################################################
|
||
# Installed by 4600_installation_packages.sh
|
||
##############################################################################################################################
|
||
- bat
|
||
- borgbackup
|
||
- borgbackup-doc
|
||
- dhcpdump
|
||
- dhcping
|
||
- dialog
|
||
- expect
|
||
- htop
|
||
- iftop
|
||
- locate
|
||
- man-db
|
||
- manpages
|
||
- manpages-dev
|
||
- mdadm
|
||
- mtr
|
||
- ncat
|
||
- rsnapshot
|
||
- rsync
|
||
- sysstat
|
||
- unzip
|
||
- zip
|
||
##############################################################################################################################
|
||
# diagnostics
|
||
##############################################################################################################################
|
||
#- knot-dnssecutils
|
||
#- knot-dnsutils
|
||
#- nmap
|
||
#- spectre-meltdown-checker
|
||
#- tshark
|
||
##############################################################################################################################
|
||
# sw dev
|
||
##############################################################################################################################
|
||
#- apt-utils
|
||
#- build-essential
|
||
#- clang
|
||
#- debconf
|
||
#- debconf-utils
|
||
#- debootstrap
|
||
#- linux-source
|
||
#- lld
|
||
#- shellcheck
|
||
#- ssl-cert
|
||
##############################################################################################################################
|
||
# Installed by 4610_installation_security.sh
|
||
##############################################################################################################################
|
||
# apparmor
|
||
# apparmor-profiles
|
||
# apparmor-profiles-extra
|
||
# apparmor-utils
|
||
# selinux-basics
|
||
# selinux-policy-default
|
||
# selinux-utils
|
||
# setools
|
||
# semodule-utils
|
||
# sepol-utils
|
||
# policycoreutils
|
||
# policycoreutils-python-utils
|
||
# checkpolicy
|
||
# python3-setools
|
||
##############################################################################################################################
|
||
# Installed by 4620_installation_verification.sh
|
||
##############################################################################################################################
|
||
# aide
|
||
# aide-common
|
||
# audit
|
||
# debsums
|
||
|
||
################################################################################################################################
|
||
# Time settings
|
||
################################################################################################################################
|
||
# Germany : https://www.ptb.de/cms/ptb/fachabteilungen/abtq/gruppe-q4/ref-q42/zeitsynchronisation-von-rechnern-mit-hilfe-des-network-time-protocol-ntp.html
|
||
# Germany : ptbtime1.ptb.de ptbtime2.ptb.de ptbtime3.ptb.de
|
||
# Germany : https://www.rrze.fau.de/serverdienste/infrastruktur/zeitserver/
|
||
# Germany : ntp0.fau.de ntp3.fau.de
|
||
# Portugal : https://si.tecnico.ulisboa.pt/en/servicos/servidores-e-dados/ntp/
|
||
# Portugal : ntp1.tecnico.ulisboa.pt ntp2.tecnico.ulisboa.pt
|
||
# Sweden : https://www.netnod.se/swedish-distributed-time-service
|
||
# Sweden : sth1.ntp.se
|
||
# Switzerland : https://www.metas.ch/metas/de/home/fabe/zeit-und-frequenz/time-dissemination.html
|
||
# Switzerland : ntp11.metas.ch ntp12.metas.ch ntp13.metas.ch
|
||
# USA : https://tf.nist.gov/tf-cgi/servers.cgi
|
||
# USA : time-a-g.nist.gov time-c-b.nist.gov utcnist3.colorado.edu
|
||
ntp:
|
||
server:
|
||
- "ntp.ripe.net"
|
||
- "ptbtime3.ptb.de"
|
||
- "ptbtime2.ptb.de"
|
||
- "ptbtime1.ptb.de"
|
||
- "ntp13.metas.ch"
|
||
- "time-c-b.nist.gov"
|
||
- "sth1.ntp.se"
|
||
- "ntp0.fau.de"
|
||
timezone: "Europe/Lisbon" # Any valid setting for $TZ; see the contents of '/usr/share/zoneinfo' for valid values.
|
||
utc: true # Controls whether the hardware clock is set to UTC.
|
||
|
||
################################################################################################################################
|
||
# SSH settings
|
||
################################################################################################################################
|
||
ssh:
|
||
allow_hardening: true # For additional hardening of SSH connections via TCP wrapper: '/etc/hosts.allow'.
|
||
# If "allow_hardening" = "true", at least one 'allow_ipv4' MUST be provided.
|
||
allow_ipv4: # Provide Bastion / Jump-Server / static VPN-Exit-Nodes IPv4: will be added: 'f2ban-ignoreip'.
|
||
- 202.61.246.50
|
||
allow_ipv6: # Provide Bastion / Jump-Server / static VPN-Exit-Nodes IPv6: will be added: 'f2ban-ignoreip'.
|
||
- 2a03:4000:53:f:abcd:9494:0:2
|
||
port: 42137 # SSH Port.
|
||
root_ca: "/.preseed/ssh_root_ca.pub"
|
||
|
||
################################################################################################################################
|
||
# User settings
|
||
################################################################################################################################
|
||
user:
|
||
mfa:
|
||
info: "totp:v1"
|
||
salt: "CISS:CDI:OTP" # + (Server_FQDN/Username)
|
||
##############################################################################################################################
|
||
# root – Superuser account (normally disabled for direct login)
|
||
##############################################################################################################################
|
||
root:
|
||
ensure: present # Must always be 'present'. (Not in use in this version of the installer.)
|
||
protected: true # Prevent unintentional edits or deletions. (Not in use in this version of the installer.)
|
||
shell: /bin/zsh # Login shell (e.g., '/bin/bash', '/bin/zsh'); use '/usr/sbin/nologin' for non-interactive users.
|
||
password: "47110815"
|
||
sshpubkey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINAYZDAqVZUk3LwJsqeVHKvLn8UKkFx642VBbiSS8uSY 2025_ciss.debian.live.ISO_PUBLIC_ONLY"
|
||
authentication:
|
||
access:
|
||
ssh: false # Allow SSH access.
|
||
tty: false # Allow TTY (local console) login.
|
||
password: false # Allow password login. SSH password login is always disabled.
|
||
2fa:
|
||
ssh: true # Require 2FA for SSH access.
|
||
tty: true # Require 2FA for TTY (local console) login.
|
||
privileges:
|
||
description: "Root user with full system access and administrative privileges."
|
||
restricted: false # If true, the user is limited in scope (e.g., no login, no file access, --no-create-home)
|
||
shell: true # MUST be "true" if the shell is not '/usr/sbin/nologin' or '/bin/false'.
|
||
sudo: false # Whether the user can escalate to root using sudo.
|
||
system: true # Whether this is a low-UID system user (e.g., for automation).
|
||
|
||
##############################################################################################################################
|
||
# Primary administrative user with full sudo access
|
||
##############################################################################################################################
|
||
user0:
|
||
ensure: present # Must always be 'present'. (Not in use in this version of the installer.)
|
||
protected: true # Prevent unintentional edits or deletions. (Not in use in this version of the installer.)
|
||
name: "msw" # The name of the user account.
|
||
fullname: "msw" # The full name of the user account holder.
|
||
uid: 1000 # Ensures that the same user has the same UID on all systems.
|
||
gid: 1000 # Ensures that the same user has the same GID on all systems.
|
||
shell: /bin/zsh # Login shell (e.g., '/bin/bash', '/bin/zsh'); use '/usr/sbin/nologin' for non-interactive users.
|
||
password: "47110815"
|
||
sshpubkey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINAYZDAqVZUk3LwJsqeVHKvLn8UKkFx642VBbiSS8uSY 2025_ciss.debian.live.ISO_PUBLIC_ONLY"
|
||
authentication:
|
||
access:
|
||
ssh: true # Allow SSH access.
|
||
tty: true # Allow TTY (local console) login.
|
||
password: true # Allow password login. SSH password login is always disabled.
|
||
2fa:
|
||
ssh: true # Require 2FA for SSH access.
|
||
tty: true # Require 2FA for TTY (local console) login.
|
||
privileges:
|
||
description: "Primary admin user with full sudo access and interactive login."
|
||
sudo: true # Whether the user can escalate to root using sudo.
|
||
system: false # Whether this is a low-UID system user (e.g., for automation).
|
||
restricted: false # If true, the user is limited in scope (e.g., no login, no file access, --no-create-home)
|
||
shell: true # MUST be "true" if the shell is not '/usr/sbin/nologin' or '/bin/false'.
|
||
|
||
##############################################################################################################################
|
||
# ansible – System user for automation, no interactive shell
|
||
##############################################################################################################################
|
||
user1:
|
||
ensure: present # "present" = create user; "absent" = remove user
|
||
protected: true # Prevent unintentional edits or deletions.
|
||
name: "ansible" # The name of the user account.
|
||
fullname: "ansible" # The full name of the user account holder.
|
||
uid: 137 # Ensures that the same user has the same UID on all systems.
|
||
gid: 137 # Ensures that the same user has the same GID on all systems.
|
||
shell: /bin/bash # Login shell (e.g., '/bin/bash', '/bin/zsh'); use '/usr/sbin/nologin' for non-interactive users.
|
||
password: "" # No password set for ansible user.
|
||
sshpubkey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINAYZDAqVZUk3LwJsqeVHKvLn8UKkFx642VBbiSS8uSY 2025_ciss.debian.live.ISO_PUBLIC_ONLY"
|
||
authentication:
|
||
access:
|
||
ssh: true # Allow SSH access.
|
||
tty: false # Allow TTY (local console) login.
|
||
password: false # Allow password login. SSH password login is always disabled.
|
||
2fa:
|
||
ssh: false # Require 2FA for SSH access.
|
||
tty: false # Require 2FA for TTY (local console) login.
|
||
privileges:
|
||
description: "Ansible automation user with sudo, key-only SSH, no TTY."
|
||
sudo: true # Whether the user can escalate to root using sudo.
|
||
system: true # Whether this is a low-UID system user (e.g., for automation).
|
||
restricted: false # If true, the user is limited in scope (e.g., no login, no file access, --no-create-home)
|
||
shell: true # MUST be "true" if the shell is not '/usr/sbin/nologin' or '/bin/false'.
|
||
|
||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=yaml
|