Compare commits
183 Commits
v8.13.142-
...
4c5d917eb6
| Author | SHA256 | Date | |
|---|---|---|---|
|
4c5d917eb6
|
|||
|
69835345e7
|
|||
|
b210d784a7
|
|||
|
3fe0913dc9
|
|||
|
311074c1d3
|
|||
|
5cdf9f93a1
|
|||
|
db5e1836f8
|
|||
|
65ee8985b8
|
|||
|
7d142cb058
|
|||
|
a7bc6ca2cb
|
|||
|
4614d65d7c
|
|||
|
ae8edb028b
|
|||
|
270be404be
|
|||
|
3b8a8bd9e2
|
|||
|
99cda6c141
|
|||
|
9481ac092a
|
|||
|
7c231100ff
|
|||
|
e44bef253f
|
|||
|
9253722a47
|
|||
|
5150604a54
|
|||
|
b2e19ae41b
|
|||
|
33a013c158
|
|||
|
47eaa39e3d
|
|||
|
8b2809f4de
|
|||
|
12f366e842
|
|||
|
075f0ad6e3
|
|||
|
1540036410
|
|||
|
f00c8fd690
|
|||
|
fd94e0aea0
|
|||
|
c2e5f83fbf
|
|||
|
dd79251eb7
|
|||
|
2d9bb3840a
|
|||
|
83ce94b842
|
|||
|
b0f7ee8c07
|
|||
|
2b5fbde43f
|
|||
|
7c3c3654dc
|
|||
|
cbbd855ca7
|
|||
|
d7c94122d0
|
|||
|
0bf6aec92f
|
|||
|
b88084e699
|
|||
|
0f41a67b01
|
|||
|
1e2e124352
|
|||
|
94a3bc40c3
|
|||
|
2f9ecd4dee
|
|||
|
7a0fc6127d
|
|||
|
354e78c5a2
|
|||
|
2f94fc9e7e
|
|||
|
072372f69b
|
|||
|
b6748c4c50
|
|||
|
33ab1affa3
|
|||
|
18f7afa640
|
|||
|
307b2a74aa
|
|||
|
87d954f0e6
|
|||
|
6894fda632
|
|||
|
a46507ec0b
|
|||
|
e81f85f4bf
|
|||
|
c4ac2fc6b6
|
|||
|
f7b58dd58b
|
|||
|
6ca1dc23a0
|
|||
|
884fa4a7c1
|
|||
|
70b76b63b2
|
|||
|
831b097308
|
|||
|
011fa4b611
|
|||
|
597bf1eaa3
|
|||
|
2a2a498345
|
|||
|
ea8845c95b
|
|||
|
660ff2842d
|
|||
|
87c563c8d7
|
|||
|
93fbf258f2
|
|||
|
b52ae63248
|
|||
|
935fc97215
|
|||
|
0f85ba60b2
|
|||
|
fcd1756cce
|
|||
|
a2451de100
|
|||
|
c6eebb4eb5
|
|||
|
8b4b13dd4d
|
|||
|
ec8538a6ed
|
|||
|
c19f66319d
|
|||
|
7a71c4e27a
|
|||
|
3e440a1f0f
|
|||
|
2c35919528
|
|||
|
64499c02f5
|
|||
|
e9dee013ee
|
|||
|
9b68f61a43
|
|||
|
74e504164a
|
|||
|
900e7a0902
|
|||
|
73578d777e
|
|||
|
02425e4b31
|
|||
|
4a679a222f
|
|||
|
026c6af8df
|
|||
|
48ce7c2328
|
|||
|
615204c0b9
|
|||
|
571a94d7e8
|
|||
|
cca580000c
|
|||
|
5248d0c60c
|
|||
|
a2898a9be0
|
|||
|
776432110a
|
|||
|
923ce8afa8
|
|||
|
d33b0bff4d
|
|||
|
e01edb4bee
|
|||
|
929415d37f
|
|||
|
1d63afbe2e
|
|||
|
e13765da6b
|
|||
|
ca212c9a27
|
|||
|
ce19ab9311
|
|||
|
62b295ba79
|
|||
|
bad373d0ea
|
|||
|
fe25a4ebd6
|
|||
|
ab291828e8
|
|||
|
7ef1d52bf8
|
|||
|
298dc531db
|
|||
|
91e2e53335
|
|||
|
e5b336da1b
|
|||
|
117054ed5b
|
|||
|
07489889ab
|
|||
|
640a4ee1cc
|
|||
|
cc6a47ebc0
|
|||
|
403ff69cd6
|
|||
|
f627bac5e7
|
|||
|
5b0484daeb
|
|||
|
e917ac59fb
|
|||
|
61599102dd
|
|||
|
b390b484ac
|
|||
|
f18d76eb2a
|
|||
|
347b8a774c
|
|||
|
1a9c0041dc
|
|||
|
9753e4f73c
|
|||
|
6b351d0675
|
|||
|
3e4a00dc55
|
|||
|
36bd43bde9
|
|||
|
a959c7070a
|
|||
|
b59a5a6d0c
|
|||
|
4a025f0151
|
|||
|
0252979034
|
|||
|
314ba8493e
|
|||
|
f8d9fa9c99
|
|||
|
2a866d7520
|
|||
|
343ae97968
|
|||
|
f343e06ce5
|
|||
|
26983d4f01
|
|||
|
7abe899a9a
|
|||
|
debdfa0b14
|
|||
|
5888af923b
|
|||
|
c6bdf8edda
|
|||
|
f58c14c406
|
|||
|
44056d4e76
|
|||
|
52670eff77
|
|||
|
3c663234e6
|
|||
|
d652d0dece
|
|||
|
be06208118
|
|||
|
887f7a0b14
|
|||
|
b69b15a786
|
|||
|
1a903aeb8d
|
|||
|
b37a98a7aa
|
|||
|
daed41deee
|
|||
|
ba12db9b14
|
|||
|
f7a82f9c1c
|
|||
|
dd4756f631
|
|||
|
2351f5e93b
|
|||
|
121e623694
|
|||
|
1a8047c60d
|
|||
|
2db18b0a1a
|
|||
|
cecf412388
|
|||
|
d79429f1ed
|
|||
|
cfb73eade8
|
|||
|
299206355c
|
|||
|
d97d4206d7
|
|||
|
80ca95ade9
|
|||
|
3cb59698cf
|
|||
|
9ea13fade8
|
|||
|
cbcab8cbf9
|
|||
|
d909b17de7
|
|||
|
6bda13c9dc
|
|||
|
258f350255
|
|||
|
e3ef7631ef
|
|||
|
ea1dfd791b
|
|||
|
d568ab64ac
|
|||
|
29902eeb7b
|
|||
|
30f79c7245
|
|||
|
c8ed90bf60
|
|||
|
36c89e2383
|
|||
|
baea8a673a
|
|||
|
d98ad001a2
|
@@ -21,7 +21,7 @@ usage() {
|
|||||||
clear
|
clear
|
||||||
cat << EOF
|
cat << EOF
|
||||||
$(echo -e "\e[92mCISS.debian.live.builder\e[0m")
|
$(echo -e "\e[92mCISS.debian.live.builder\e[0m")
|
||||||
$(echo -e "\e[92mMaster V8.13.142.2025.10.14\e[0m")
|
$(echo -e "\e[92mMaster V8.13.294.2025.10.28\e[0m")
|
||||||
$(echo -e "\e[92mA lightweight Shell Wrapper for building a hardened Debian Live ISO Image.\e[0m")
|
$(echo -e "\e[92mA lightweight Shell Wrapper for building a hardened Debian Live ISO Image.\e[0m")
|
||||||
|
|
||||||
$(echo -e "\e[97m(c) Marc S. Weidner, 2018 - 2025\e[0m")
|
$(echo -e "\e[97m(c) Marc S. Weidner, 2018 - 2025\e[0m")
|
||||||
|
|||||||
455
.archive/generate_PRIVATE_trixie_1.yaml
Normal file
455
.archive/generate_PRIVATE_trixie_1.yaml
Normal file
@@ -0,0 +1,455 @@
|
|||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-08-22; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
|
# Version Master V8.13.294.2025.10.28
|
||||||
|
|
||||||
|
name: 🔐 Generating a Private Live ISO TRIXIE.
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
paths:
|
||||||
|
- '.gitea/trigger/t_generate_PRIVATE_trixie_1.yaml'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
generate-private-cdlb-trixie:
|
||||||
|
name: 🔐 Generating a Private Live ISO TRIXIE.
|
||||||
|
runs-on: cdlb.trixie
|
||||||
|
|
||||||
|
container:
|
||||||
|
image: debian:trixie
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: 🛠️ Basic Image Setup.
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
apt-get update -qq
|
||||||
|
apt-get upgrade -y
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
apt-utils \
|
||||||
|
bash \
|
||||||
|
ca-certificates \
|
||||||
|
curl \
|
||||||
|
git \
|
||||||
|
gnupg \
|
||||||
|
openssh-client \
|
||||||
|
openssl \
|
||||||
|
perl \
|
||||||
|
sudo \
|
||||||
|
util-linux
|
||||||
|
|
||||||
|
- name: ⚙️ Check GnuPG Version.
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
gpg --version
|
||||||
|
|
||||||
|
- name: ⚙️ Preparing SSH Setup, SSH Deploy Key, Known Hosts, .config.
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
var_wait=$(( RANDOM % 33 ))
|
||||||
|
printf "⏳ Waiting %s seconds to desynchronize parallel workflows...\n" "${var_wait}"
|
||||||
|
sleep "${var_wait}"
|
||||||
|
|
||||||
|
rm -rf ~/.ssh && mkdir -m700 ~/.ssh
|
||||||
|
|
||||||
|
### Private Key
|
||||||
|
echo "${{ secrets.SSH_MSW_DEPLOY_CORESECRET_DEV }}" >| ~/.ssh/id_ed25519
|
||||||
|
chmod 600 ~/.ssh/id_ed25519
|
||||||
|
|
||||||
|
### Scan git.coresecret.dev to fill ~/.ssh/known_hosts
|
||||||
|
ssh-keyscan -p 42842 git.coresecret.dev >| ~/.ssh/known_hosts
|
||||||
|
chmod 600 ~/.ssh/known_hosts
|
||||||
|
|
||||||
|
### Generate SSH Config for git.coresecret.dev Custom-Port
|
||||||
|
cat <<EOF >| ~/.ssh/config
|
||||||
|
Host git.coresecret.dev
|
||||||
|
HostName git.coresecret.dev
|
||||||
|
Port 42842
|
||||||
|
IdentityFile ~/.ssh/id_ed25519
|
||||||
|
StrictHostKeyChecking yes
|
||||||
|
UserKnownHostsFile ~/.ssh/known_hosts
|
||||||
|
EOF
|
||||||
|
chmod 600 ~/.ssh/config
|
||||||
|
|
||||||
|
### https://github.com/actions/checkout/issues/1843
|
||||||
|
- name: 🛠️ Using manual clone via SSH to circumvent Gitea SHA-256 object issues.
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
### GITHUB_REF_NAME contains the branch name from the push event.
|
||||||
|
GITHUB_REF_NAME: ${{ github.ref_name }}
|
||||||
|
run: |
|
||||||
|
git clone --branch "${GITHUB_REF_NAME}" ssh://git@git.coresecret.dev:42842/msw/CISS.debian.live.builder.git .
|
||||||
|
git fetch --unshallow || echo "Nothing to fetch - already full clone."
|
||||||
|
|
||||||
|
- name: 🛠️ Cleaning the workspace.
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
git reset --hard
|
||||||
|
git clean -fd
|
||||||
|
|
||||||
|
- name: ⚙️ Importing the 'CI PGP DEPLOY ONLY' key.
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
### GPG-Home relative to the Runner Workspace to avoid changing global files.
|
||||||
|
export GNUPGHOME="$(pwd)/.gnupg"
|
||||||
|
mkdir -m 700 "${GNUPGHOME}"
|
||||||
|
echo "${{ secrets.PGP_PUBKEY_CENTURION_ROOT_2025_X448 }}" >| centurion-root.PUB.asc
|
||||||
|
gpg --batch --import centurion-root.PUB.asc
|
||||||
|
echo "${{ secrets.PGP_MSW_DEPLOY_CORESECRET_DEV }}" >| ci-bot.sec.asc
|
||||||
|
gpg --batch --import ci-bot.sec.asc
|
||||||
|
### Trust the key automatically
|
||||||
|
KEY_ID=$(gpg --list-keys --with-colons | awk -F: '/^pub:/ {print $5}')
|
||||||
|
echo "trust-model always" >| "${GNUPGHOME}/gpg.conf"
|
||||||
|
|
||||||
|
- name: ⚙️ Configuring Git for signed CI/DEPLOY commits.
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
export GNUPGHOME="$(pwd)/.gnupg"
|
||||||
|
git config user.name "Marc S. Weidner BOT"
|
||||||
|
git config user.email "msw+bot@coresecret.dev"
|
||||||
|
git config commit.gpgsign true
|
||||||
|
git config gpg.program gpg
|
||||||
|
git config gpg.format openpgp
|
||||||
|
|
||||||
|
- name: ⚙️ Preparing the build environment.
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
mkdir -p /opt/config
|
||||||
|
mkdir -p /opt/livebuild
|
||||||
|
touch /opt/config/password.txt && chmod 0600 /opt/config/password.txt
|
||||||
|
touch /opt/config/authorized_keys && chmod 0600 /opt/config/authorized_keys
|
||||||
|
echo "${{ secrets.CISS_DLB_ROOT_PWD_1 }}" >| /opt/config/password.txt
|
||||||
|
echo "${{ secrets.CISS_DLB_ROOT_SSH_PUBKEY_1 }}" >| /opt/config/authorized_keys
|
||||||
|
|
||||||
|
- name: 🔧 Render live hook with secrets.
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{ github.workspace }}
|
||||||
|
env:
|
||||||
|
ED25519_PRIV: ${{ secrets.CISS_DLB_SSH_HOST_ED25519_KEY }}
|
||||||
|
ED25519_PUB: ${{ secrets.CISS_DLB_SSH_HOST_ED25519_KEY_PUB }}
|
||||||
|
RSA_PRIV: ${{ secrets.CISS_DLB_SSH_HOST_RSA_KEY }}
|
||||||
|
RSA_PUB: ${{ secrets.CISS_DLB_SSH_HOST_RSA_KEY_PUB }}
|
||||||
|
CISS_PRIMORDIAL: ${{ secrets.CISS_PRIMORDIAL_PRIVATE }}
|
||||||
|
CISS_PRIMORDIAL_PUB: ${{ secrets.CISS_PRIMORDIAL_PUBLIC }}
|
||||||
|
CISS_PHYS_AGE: ${{ secrets.CISS_PHYS_AGE }}
|
||||||
|
run: |
|
||||||
|
set -Ceuo pipefail
|
||||||
|
umask 077
|
||||||
|
|
||||||
|
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd -P)"
|
||||||
|
|
||||||
|
TPL="${REPO_ROOT}/config/hooks/live/9935_hardening_ssh.chroot.tmpl"
|
||||||
|
OUT="${REPO_ROOT}/config/hooks/live/9935_hardening_ssh.chroot"
|
||||||
|
ID_OUT="${REPO_ROOT}/config/includes.chroot/root/.ssh/id_2025_ed25519_ciss_primordial"
|
||||||
|
ID_OUT_PUB="${REPO_ROOT}/config/includes.chroot/root/.ssh/id_2025_ed25519_ciss_primordial.pub"
|
||||||
|
SOPS="${REPO_ROOT}/config/hooks/live/0860_sops.chroot"
|
||||||
|
|
||||||
|
if [[ ! -f "${TPL}" ]]; then
|
||||||
|
echo "Template not found: ${TPL}"
|
||||||
|
echo "::group::Tree of config/hooks/live"
|
||||||
|
ls -la "${REPO_ROOT}/config/hooks/live" || true
|
||||||
|
echo "::endgroup::"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
export ED25519_PRIV="${ED25519_PRIV//$'\r'/}"
|
||||||
|
export ED25519_PUB="${ED25519_PUB//$'\r'/}"
|
||||||
|
export RSA_PRIV="${RSA_PRIV//$'\r'/}"
|
||||||
|
export RSA_PUB="${RSA_PUB//$'\r'/}"
|
||||||
|
export CISS_PRIMORDIAL="${CISS_PRIMORDIAL//$'\r'/}"
|
||||||
|
export CISS_PRIMORDIAL_PUB="${CISS_PRIMORDIAL_PUB//$'\r'/}"
|
||||||
|
export CISS_PHYS_AGE="${CISS_PHYS_AGE//$'\r'/}"
|
||||||
|
|
||||||
|
(
|
||||||
|
cat << EOF >| "${ID_OUT}"
|
||||||
|
${CISS_PRIMORDIAL}
|
||||||
|
EOF
|
||||||
|
) && chmod 0600 "${ID_OUT}"
|
||||||
|
if [[ -f "${ID_OUT}" ]]; then
|
||||||
|
echo "Written: ${ID_OUT}"
|
||||||
|
else
|
||||||
|
echo "Error: ${ID_OUT} not written."
|
||||||
|
fi
|
||||||
|
|
||||||
|
(
|
||||||
|
cat << EOF >| "${ID_OUT_PUB}"
|
||||||
|
${CISS_PRIMORDIAL_PUB}
|
||||||
|
EOF
|
||||||
|
) && chmod 0600 "${ID_OUT_PUB}"
|
||||||
|
if [[ -f "${ID_OUT_PUB}" ]]; then
|
||||||
|
echo "Written: ${ID_OUT_PUB}"
|
||||||
|
else
|
||||||
|
echo "Error: ${ID_OUT_PUB} not written."
|
||||||
|
fi
|
||||||
|
|
||||||
|
perl -0777 -pe '
|
||||||
|
BEGIN{
|
||||||
|
$ed=$ENV{ED25519_PRIV}; $edpub=$ENV{ED25519_PUB};
|
||||||
|
$rsa=$ENV{RSA_PRIV}; $rsapub=$ENV{RSA_PUB};
|
||||||
|
}
|
||||||
|
s/\{\{\s*secrets\.CISS_DLB_SSH_HOST_ED25519_KEY\s*\}\}/$ed/g;
|
||||||
|
s/\{\{\s*secrets\.CISS_DLB_SSH_HOST_ED25519_KEY_PUB\s*\}\}/$edpub/g;
|
||||||
|
s/\{\{\s*secrets\.CISS_DLB_SSH_HOST_RSA_KEY\s*\}\}/$rsa/g;
|
||||||
|
s/\{\{\s*secrets\.CISS_DLB_SSH_HOST_RSA_KEY_PUB\s*\}\}/$rsapub/g;
|
||||||
|
' "${TPL}" > "${OUT}"
|
||||||
|
|
||||||
|
chmod 0755 "${OUT}"
|
||||||
|
|
||||||
|
#perl -0777 -i -pe '
|
||||||
|
# BEGIN {
|
||||||
|
# our $age = $ENV{CISS_PHYS_AGE} // q{};
|
||||||
|
# }
|
||||||
|
# s/\{\{\s*secrets\.CISS_PHYS_AGE\s*\}\}/$age/g;
|
||||||
|
#' -- "${SOPS}"
|
||||||
|
#chmod 0755 "${SOPS}"
|
||||||
|
|
||||||
|
echo "Hook rendered: ${OUT}"
|
||||||
|
|
||||||
|
- name: 🛠️ Starting CISS.debian.live.builder. This may take a while ...
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{ github.workspace }}
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
chmod 0755 ciss_live_builder.sh
|
||||||
|
timestamp=$(date -u +"%Y_%m_%dT%H_%M_%SZ")
|
||||||
|
### Change "--autobuild=" to the specific kernel version you need: '6.16.3+deb13-amd64'.
|
||||||
|
./ciss_live_builder.sh \
|
||||||
|
--autobuild=6.16.3+deb13-amd64 \
|
||||||
|
--architecture amd64 \
|
||||||
|
--build-directory /opt/livebuild \
|
||||||
|
--cdi \
|
||||||
|
--control "${timestamp}" \
|
||||||
|
--jump-host ${{ secrets.CISS_DLB_JUMP_HOSTS_1 }} \
|
||||||
|
--root-password-file /opt/config/password.txt \
|
||||||
|
--ssh-port ${{ secrets.CISS_DLB_SSH_PORT_1 }} \
|
||||||
|
--ssh-pubkey /opt/config \
|
||||||
|
--trixie
|
||||||
|
|
||||||
|
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd -P)"
|
||||||
|
OUT="$REPO_ROOT/config/hooks/live/9935_hardening_ssh.chroot"
|
||||||
|
rm -f "$OUT"
|
||||||
|
echo "Hook removed: $OUT"
|
||||||
|
|
||||||
|
- name: 📥 Checking Centurion Cloud for existing LIVE ISOs.
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
NC_BASE: "https://cloud.e2ee.li"
|
||||||
|
SHARE_TOKEN: "${{ secrets.CENTURION_CLOUD_UL_USER_1 }}"
|
||||||
|
SHARE_PASS: "${{ secrets.CENTURION_CLOUD_UL_PASSWD_1 }}"
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
SHARE_SUBDIR=""
|
||||||
|
|
||||||
|
echo "📥 Get directory listing via PROPFIND ..."
|
||||||
|
curl -s \
|
||||||
|
--user "${SHARE_TOKEN}:${SHARE_PASS}" \
|
||||||
|
-X PROPFIND \
|
||||||
|
-H "Depth: 1" \
|
||||||
|
"${NC_BASE}/public.php/webdav/${SHARE_SUBDIR}" \
|
||||||
|
-o propfind_public.xml
|
||||||
|
|
||||||
|
echo "📥 Filter .iso files from the PROPFIND response ..."
|
||||||
|
grep -oP '(?<=<d:href>)[^<]+\.iso(?=</d:href>)' propfind_public.xml >| public_iso_list.txt || true
|
||||||
|
|
||||||
|
if [[ -f public_iso_list.txt && -s public_iso_list.txt ]]; then
|
||||||
|
echo "💡 Old ISO files found and deleted :"
|
||||||
|
while IFS= read -r href; do
|
||||||
|
FILE_URL="${NC_BASE}${href}"
|
||||||
|
echo " Delete: ${FILE_URL}"
|
||||||
|
if curl -s \
|
||||||
|
--user "${SHARE_TOKEN}:${SHARE_PASS}" \
|
||||||
|
-X DELETE "${FILE_URL}"; then
|
||||||
|
echo " ✅ Successfully deleted: $(basename "${href}")"
|
||||||
|
else
|
||||||
|
echo " ❌ Error: $(basename "${href}") could not be deleted"
|
||||||
|
fi
|
||||||
|
done < public_iso_list.txt
|
||||||
|
else
|
||||||
|
echo "💡 No old ISO files found to delete."
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: 🛠️ Upload the ISO file to the Centurion Cloud (cloud.e2ee.li) via WebDAV.
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
NC_BASE: "https://cloud.e2ee.li"
|
||||||
|
SHARE_TOKEN: "${{ secrets.CENTURION_CLOUD_UL_USER_1 }}"
|
||||||
|
SHARE_PASS: "${{ secrets.CENTURION_CLOUD_UL_PASSWD_1 }}"
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
if [[ $(ls /opt/livebuild/*.iso 2>/dev/null | wc -l) -ne 1 ]]; then
|
||||||
|
echo "❌ There must be exactly one .iso file in the directory!"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
VAR_ISO_FILE_PATH=$(ls /opt/livebuild/*.iso)
|
||||||
|
VAR_ISO_FILE_NAME=$(basename "${VAR_ISO_FILE_PATH}")
|
||||||
|
echo "✅ ISO file found: ${VAR_ISO_FILE_NAME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AUTH="${SHARE_TOKEN}:${SHARE_PASS}"
|
||||||
|
if curl --retry 2 "${NC_BASE}"/public.php/webdav/"${VAR_ISO_FILE_NAME}" \
|
||||||
|
--upload-file "${VAR_ISO_FILE_PATH}" --user "${AUTH}" > /dev/null 2>&1; then
|
||||||
|
echo "✅ New ISO successfully uploaded."
|
||||||
|
else
|
||||||
|
echo "❌ Uploading the new ISO failed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: 🔑 Generating a sha512 Hash of ISO, signing with the 'CI PGP DEPLOY ONLY' key, generate a success message file.
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [[ $(ls /opt/livebuild/*.iso 2>/dev/null | wc -l) -ne 1 ]]; then
|
||||||
|
echo "❌ There must be exactly one .iso file in the directory!"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
VAR_ISO_FILE_PATH=$(ls /opt/livebuild/*.iso)
|
||||||
|
VAR_ISO_FILE_NAME=$(basename "${VAR_ISO_FILE_PATH}")
|
||||||
|
echo "✅ ISO file found: ${VAR_ISO_FILE_NAME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
VAR_ISO_FILE_SHA512="${VAR_ISO_FILE_NAME}.sha512"
|
||||||
|
touch "${VAR_ISO_FILE_SHA512}"
|
||||||
|
sha512sum "${VAR_ISO_FILE_PATH}" | awk '{print $1}' >| "${VAR_ISO_FILE_SHA512}"
|
||||||
|
SIGNATURE_FILE="${VAR_ISO_FILE_SHA512}.sign"
|
||||||
|
touch "${SIGNATURE_FILE}"
|
||||||
|
export GNUPGHOME="$(pwd)/.gnupg"
|
||||||
|
gpg --batch --yes --armor --detach-sign --output "${SIGNATURE_FILE}" "${VAR_ISO_FILE_SHA512}"
|
||||||
|
|
||||||
|
timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
||||||
|
VAR_DATE="$(date +%F)"
|
||||||
|
PRIVATE_FILE="LIVE_ISO_TRIXIE_1.private"
|
||||||
|
touch "${PRIVATE_FILE}"
|
||||||
|
cat << EOF >| "${PRIVATE_FILE}"
|
||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: ${VAR_DATE}; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
|
This file was automatically generated by the DEPLOY BOT on: "${timestamp}"
|
||||||
|
|
||||||
|
CISS.debian.live.builder ISO :
|
||||||
|
"${VAR_ISO_FILE_NAME}"
|
||||||
|
CISS.debian.live.builder ISO sha512 :
|
||||||
|
$(< "${VAR_ISO_FILE_SHA512}")
|
||||||
|
CISS.debian.live.builder ISO sha512 sign :
|
||||||
|
$(< "${SIGNATURE_FILE}")
|
||||||
|
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=text
|
||||||
|
EOF
|
||||||
|
|
||||||
|
- name: 🚧 Stash local changes (including untracked).
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
GIT_SSH_COMMAND: "ssh -p 42842"
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
### Temporarily store any local modifications or untracked files.
|
||||||
|
git stash push --include-untracked -m "ci-temp" || echo "✔️ Nothing to stash."
|
||||||
|
|
||||||
|
- name: 🔄 Sync with remote before commit using merge strategy.
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
GIT_SSH_COMMAND: "ssh -p 42842"
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
export GNUPGHOME="$(pwd)/.gnupg"
|
||||||
|
|
||||||
|
echo "🔄 Fetching origin/master ..."
|
||||||
|
git fetch origin master
|
||||||
|
|
||||||
|
echo "🔁 Merging origin/master into current branch ..."
|
||||||
|
git merge --no-edit origin/master || echo "✔️ Already up to date or fast-forward."
|
||||||
|
|
||||||
|
echo "📋 Post-merge status :"
|
||||||
|
git status
|
||||||
|
git log --oneline -n 5
|
||||||
|
|
||||||
|
- name: 🛠️ Restore stashed changes.
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
GIT_SSH_COMMAND: "ssh -p 42842"
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
### Apply previously stashed changes.
|
||||||
|
git stash pop || echo "✔️ Nothing to pop."
|
||||||
|
|
||||||
|
- name: 📦 Stage generated files.
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
GIT_SSH_COMMAND: "ssh -p 42842"
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
PRIVATE_FILE="LIVE_ISO_TRIXIE_1.private"
|
||||||
|
git add "${PRIVATE_FILE}" || echo "✔️ Nothing to add."
|
||||||
|
|
||||||
|
- name: 🔑 Commit and sign changes with CI metadata.
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
GIT_SSH_COMMAND: "ssh -p 42842"
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
export GNUPGHOME="$(pwd)/.gnupg"
|
||||||
|
|
||||||
|
if git diff --cached --quiet; then
|
||||||
|
echo "✔️ No staged changes to commit."
|
||||||
|
else
|
||||||
|
echo "📝 Committing changes with GPG signature ..."
|
||||||
|
|
||||||
|
### CI Metadata
|
||||||
|
TIMESTAMP_UTC="$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
|
||||||
|
HOSTNAME="$(hostname -f || hostname)"
|
||||||
|
GIT_SHA="$(git rev-parse --short HEAD)"
|
||||||
|
GIT_REF="$(git symbolic-ref --short HEAD || echo detached)"
|
||||||
|
WORKFLOW_ID="${GITHUB_WORKFLOW:-render-md-to-html.yaml}"
|
||||||
|
CI_HEADER="X-CI-Metadata: ${GIT_REF}@${GIT_SHA} at ${TIMESTAMP_UTC} on ${HOSTNAME}"
|
||||||
|
|
||||||
|
COMMIT_MSG="DEPLOY BOT : 🔐 Auto-Generate PRIVATE LIVE ISO TRIXIE 1 [skip ci]
|
||||||
|
|
||||||
|
${CI_HEADER}
|
||||||
|
|
||||||
|
Generated at : ${TIMESTAMP_UTC}
|
||||||
|
Runner Host : ${HOSTNAME}
|
||||||
|
Workflow ID : ${WORKFLOW_ID}
|
||||||
|
Git Commit : ${GIT_SHA} HEAD -> ${GIT_REF}
|
||||||
|
"
|
||||||
|
|
||||||
|
echo "🔏 Commit message :"
|
||||||
|
echo "${COMMIT_MSG}"
|
||||||
|
git commit -S -m "${COMMIT_MSG}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: 🔁 Push back to repository.
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
GIT_SSH_COMMAND: "ssh -p 42842"
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
echo "📤 Pushing changes to ${GITHUB_REF_NAME} ..."
|
||||||
|
git push origin HEAD:${GITHUB_REF_NAME}
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=yaml
|
||||||
@@ -25,7 +25,7 @@ body:
|
|||||||
attributes:
|
attributes:
|
||||||
label: "Version"
|
label: "Version"
|
||||||
description: "Which version are you running? Use `./ciss_live_builder.sh -v`."
|
description: "Which version are you running? Use `./ciss_live_builder.sh -v`."
|
||||||
placeholder: "e.g., Master V8.13.142.2025.10.14"
|
placeholder: "e.g., Master V8.13.294.2025.10.28"
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# Version Master V8.13.142.2025.10.14
|
# Version Master V8.13.294.2025.10.28
|
||||||
|
|
||||||
FROM debian:bookworm
|
FROM debian:bookworm
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# Version Master V8.13.142.2025.10.14
|
# Version Master V8.13.294.2025.10.28
|
||||||
|
|
||||||
name: 🔁 Render README.md to README.html.
|
name: 🔁 Render README.md to README.html.
|
||||||
|
|
||||||
|
|||||||
@@ -11,5 +11,5 @@
|
|||||||
|
|
||||||
build:
|
build:
|
||||||
counter: 1023
|
counter: 1023
|
||||||
version: V8.13.142.2025.10.14
|
version: V8.13.294.2025.10.28
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=yaml
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=yaml
|
||||||
|
|||||||
@@ -10,6 +10,6 @@
|
|||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
build:
|
build:
|
||||||
counter: 1023
|
counter: 1024
|
||||||
version: V8.13.142.2025.10.14
|
version: V8.13.294.2025.10.28
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=yaml
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=yaml
|
||||||
|
|||||||
@@ -11,5 +11,5 @@
|
|||||||
|
|
||||||
build:
|
build:
|
||||||
counter: 1023
|
counter: 1023
|
||||||
version: V8.13.142.2025.10.14
|
version: V8.13.294.2025.10.28
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=yaml
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=yaml
|
||||||
|
|||||||
@@ -11,5 +11,5 @@
|
|||||||
|
|
||||||
build:
|
build:
|
||||||
counter: 1023
|
counter: 1023
|
||||||
version: V8.13.142.2025.10.14
|
version: V8.13.294.2025.10.28
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=yaml
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=yaml
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# Version Master V8.13.142.2025.10.14
|
# Version Master V8.13.294.2025.10.28
|
||||||
|
|
||||||
name: 🔐 Generating a Private Live ISO TRIXIE.
|
name: 🔐 Generating a Private Live ISO TRIXIE.
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
apt-get update
|
apt-get update -qq
|
||||||
apt-get upgrade -y
|
apt-get upgrade -y
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
apt-utils \
|
apt-utils \
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# Version Master V8.13.142.2025.10.14
|
# Version Master V8.13.294.2025.10.28
|
||||||
|
|
||||||
name: 🔐 Generating a Private Live ISO TRIXIE.
|
name: 🔐 Generating a Private Live ISO TRIXIE.
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
apt-get update
|
apt-get update -qq
|
||||||
apt-get upgrade -y
|
apt-get upgrade -y
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
apt-utils \
|
apt-utils \
|
||||||
@@ -152,6 +152,7 @@ jobs:
|
|||||||
RSA_PUB: ${{ secrets.CISS_DLB_SSH_HOST_RSA_KEY_PUB }}
|
RSA_PUB: ${{ secrets.CISS_DLB_SSH_HOST_RSA_KEY_PUB }}
|
||||||
CISS_PRIMORDIAL: ${{ secrets.CISS_PRIMORDIAL_PRIVATE }}
|
CISS_PRIMORDIAL: ${{ secrets.CISS_PRIMORDIAL_PRIVATE }}
|
||||||
CISS_PRIMORDIAL_PUB: ${{ secrets.CISS_PRIMORDIAL_PUBLIC }}
|
CISS_PRIMORDIAL_PUB: ${{ secrets.CISS_PRIMORDIAL_PUBLIC }}
|
||||||
|
CISS_PHYS_AGE: ${{ secrets.CISS_PHYS_AGE }}
|
||||||
run: |
|
run: |
|
||||||
set -Ceuo pipefail
|
set -Ceuo pipefail
|
||||||
umask 077
|
umask 077
|
||||||
@@ -162,6 +163,7 @@ jobs:
|
|||||||
OUT="${REPO_ROOT}/config/hooks/live/9935_hardening_ssh.chroot"
|
OUT="${REPO_ROOT}/config/hooks/live/9935_hardening_ssh.chroot"
|
||||||
ID_OUT="${REPO_ROOT}/config/includes.chroot/root/.ssh/id_2025_ed25519_ciss_primordial"
|
ID_OUT="${REPO_ROOT}/config/includes.chroot/root/.ssh/id_2025_ed25519_ciss_primordial"
|
||||||
ID_OUT_PUB="${REPO_ROOT}/config/includes.chroot/root/.ssh/id_2025_ed25519_ciss_primordial.pub"
|
ID_OUT_PUB="${REPO_ROOT}/config/includes.chroot/root/.ssh/id_2025_ed25519_ciss_primordial.pub"
|
||||||
|
SOPS="${REPO_ROOT}/config/hooks/live/0860_sops.chroot"
|
||||||
|
|
||||||
if [[ ! -f "${TPL}" ]]; then
|
if [[ ! -f "${TPL}" ]]; then
|
||||||
echo "Template not found: ${TPL}"
|
echo "Template not found: ${TPL}"
|
||||||
@@ -177,6 +179,7 @@ jobs:
|
|||||||
export RSA_PUB="${RSA_PUB//$'\r'/}"
|
export RSA_PUB="${RSA_PUB//$'\r'/}"
|
||||||
export CISS_PRIMORDIAL="${CISS_PRIMORDIAL//$'\r'/}"
|
export CISS_PRIMORDIAL="${CISS_PRIMORDIAL//$'\r'/}"
|
||||||
export CISS_PRIMORDIAL_PUB="${CISS_PRIMORDIAL_PUB//$'\r'/}"
|
export CISS_PRIMORDIAL_PUB="${CISS_PRIMORDIAL_PUB//$'\r'/}"
|
||||||
|
export CISS_PHYS_AGE="${CISS_PHYS_AGE//$'\r'/}"
|
||||||
|
|
||||||
(
|
(
|
||||||
cat << EOF >| "${ID_OUT}"
|
cat << EOF >| "${ID_OUT}"
|
||||||
@@ -212,6 +215,15 @@ jobs:
|
|||||||
' "${TPL}" > "${OUT}"
|
' "${TPL}" > "${OUT}"
|
||||||
|
|
||||||
chmod 0755 "${OUT}"
|
chmod 0755 "${OUT}"
|
||||||
|
|
||||||
|
perl -0777 -i -pe '
|
||||||
|
BEGIN {
|
||||||
|
our $age = $ENV{CISS_PHYS_AGE} // q{};
|
||||||
|
}
|
||||||
|
s/\{\{\s*secrets\.CISS_PHYS_AGE\s*\}\}/$age/g;
|
||||||
|
' -- "${SOPS}"
|
||||||
|
chmod 0755 "${SOPS}"
|
||||||
|
|
||||||
echo "Hook rendered: ${OUT}"
|
echo "Hook rendered: ${OUT}"
|
||||||
|
|
||||||
- name: 🛠️ Starting CISS.debian.live.builder. This may take a while ...
|
- name: 🛠️ Starting CISS.debian.live.builder. This may take a while ...
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# Version Master V8.13.142.2025.10.14
|
# Version Master V8.13.294.2025.10.28
|
||||||
|
|
||||||
name: 💙 Generating a PUBLIC Live ISO.
|
name: 💙 Generating a PUBLIC Live ISO.
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
apt-get update
|
apt-get update -qq
|
||||||
apt-get upgrade -y
|
apt-get upgrade -y
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
apt-utils \
|
apt-utils \
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# Version Master V8.13.142.2025.10.14
|
# Version Master V8.13.294.2025.10.28
|
||||||
|
|
||||||
# Gitea Workflow: Shell-Script Linting
|
# Gitea Workflow: Shell-Script Linting
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# Version Master V8.13.142.2025.10.14
|
# Version Master V8.13.294.2025.10.28
|
||||||
|
|
||||||
name: 🛡️ Retrieve DNSSEC status of coresecret.dev.
|
name: 🛡️ Retrieve DNSSEC status of coresecret.dev.
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# Version Master V8.13.142.2025.10.14
|
# Version Master V8.13.294.2025.10.28
|
||||||
|
|
||||||
name: 🔁 Render Graphviz Diagrams.
|
name: 🔁 Render Graphviz Diagrams.
|
||||||
|
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -10,7 +10,6 @@
|
|||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
.checklist/
|
.checklist/
|
||||||
.idea/
|
.idea/
|
||||||
build/
|
|
||||||
out/
|
out/
|
||||||
target/
|
target/
|
||||||
*.DS_Store
|
*.DS_Store
|
||||||
|
|||||||
@@ -15,5 +15,5 @@ properties_SPDX-License-Identifier="EUPL-1.2 OR LicenseRef-CCLA-1.0"
|
|||||||
properties_SPDX-LicenseComment="This file is part of the CISS.debian.installer.secure framework."
|
properties_SPDX-LicenseComment="This file is part of the CISS.debian.installer.secure framework."
|
||||||
properties_SPDX-PackageName="CISS.debian.live.builder"
|
properties_SPDX-PackageName="CISS.debian.live.builder"
|
||||||
properties_SPDX-Security-Contact="security@coresecret.eu"
|
properties_SPDX-Security-Contact="security@coresecret.eu"
|
||||||
properties_version="V8.13.142.2025.10.14"
|
properties_version="V8.13.294.2025.10.28"
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=conf
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=conf
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ Creator: Person: Marc S. Weidner (Centurion Intelligence Consulting Agency)
|
|||||||
Created: 2025-05-07T12:00:00Z
|
Created: 2025-05-07T12:00:00Z
|
||||||
Package: CISS.debian.live.builder
|
Package: CISS.debian.live.builder
|
||||||
PackageName: CISS.debian.live.builder
|
PackageName: CISS.debian.live.builder
|
||||||
PackageVersion: Master V8.13.142.2025.10.14
|
PackageVersion: Master V8.13.294.2025.10.28
|
||||||
PackageSupplier: Organization: Centurion Intelligence Consulting Agency
|
PackageSupplier: Organization: Centurion Intelligence Consulting Agency
|
||||||
PackageDownloadLocation: https://git.coresecret.dev/msw/CISS.debian.live.builder
|
PackageDownloadLocation: https://git.coresecret.dev/msw/CISS.debian.live.builder
|
||||||
PackageHomePage: https://git.coresecret.dev/msw/CISS.debian.live.builder
|
PackageHomePage: https://git.coresecret.dev/msw/CISS.debian.live.builder
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# SPDX-Version: 3.0
|
# SPDX-Version: 3.0
|
||||||
# SPDX-CreationInfo: 2025-10-14; WEIDNER, Marc S.; <msw@coresecret.dev>
|
# SPDX-CreationInfo: 2025-10-28; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.git
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.git
|
||||||
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
||||||
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <msw@coresecret.dev>
|
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
@@ -9,8 +9,8 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
This file was automatically generated by the DEPLOY BOT on: "2025-10-14T19:37:03Z"
|
This file was automatically generated by the DEPLOY BOT on: "2025-10-28T18:49:03Z"
|
||||||
|
|
||||||
⚠️ The last linter check was NOT successful. ⚠️
|
✅ The last linter check was successful. ✅
|
||||||
|
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=text
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=text
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# SPDX-Version: 3.0
|
# SPDX-Version: 3.0
|
||||||
# SPDX-CreationInfo: 2025-10-14; WEIDNER, Marc S.; <msw@coresecret.dev>
|
# SPDX-CreationInfo: 2025-10-24; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.git
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.git
|
||||||
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
||||||
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <msw@coresecret.dev>
|
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
@@ -9,19 +9,19 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
This file was automatically generated by the DEPLOY BOT on: "2025-10-14T22:23:27Z"
|
This file was automatically generated by the DEPLOY BOT on: "2025-10-24T14:50:31Z"
|
||||||
|
|
||||||
CISS.debian.live.builder ISO :
|
CISS.debian.live.builder ISO :
|
||||||
"ciss-debian-live-2025_10_14T21_30_07Z-amd64.hybrid.iso"
|
"ciss-debian-live-2025_10_24T13_56_21Z-amd64.hybrid.iso"
|
||||||
CISS.debian.live.builder ISO sha512 :
|
CISS.debian.live.builder ISO sha512 :
|
||||||
442037d11eb48f4adbd1a3da17cf36062ec6be816627c38fe814458840020f212c551b96d5e785c4372fa09fc11fd9529f34166530b1e1f5ce9335abadb5f771
|
036a1004fee05962610c6e604510bc5293aecf56ddca6cde311179f4b437f6d1d474c6deaca0189de5bea80186068ac82de17b9814fbd6ab2e9ed54e47f3de8f
|
||||||
CISS.debian.live.builder ISO sha512 sign :
|
CISS.debian.live.builder ISO sha512 sign :
|
||||||
-----BEGIN PGP SIGNATURE-----
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
iHUEABYKAB0WIQSqYnPMNKGz69afyHA85KY4hzOwIQUCaO7NXwAKCRA85KY4hzOw
|
iHQEABYKAB0WIQSqYnPMNKGz69afyHA85KY4hzOwIQUCaPuSNwAKCRA85KY4hzOw
|
||||||
IT3LAP4uP8glLMDEpUntKJQTiPqSYjGUyIFoKmsgALGPJcnnoQD/fcz4Mq12mF32
|
IXoDAP9cfoBONoT0ckPEZS7Ny/4l3hLGW4hKcJYz/bTJLy9MkAD468vyMLOwI9yM
|
||||||
jf4ETKQBqlxuQyLTPvPFhLsrBbDD0AI=
|
ipWXHva/2ghh0CqBXzuR+QfSRToABg==
|
||||||
=/UNR
|
=8+N2
|
||||||
-----END PGP SIGNATURE-----
|
-----END PGP SIGNATURE-----
|
||||||
|
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=text
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=text
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# SPDX-Version: 3.0
|
# SPDX-Version: 3.0
|
||||||
# SPDX-CreationInfo: 2025-10-14; WEIDNER, Marc S.; <msw@coresecret.dev>
|
# SPDX-CreationInfo: 2025-10-28; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.git
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.git
|
||||||
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
||||||
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <msw@coresecret.dev>
|
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
@@ -9,19 +9,19 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
This file was automatically generated by the DEPLOY BOT on: "2025-10-14T20:32:28Z"
|
This file was automatically generated by the DEPLOY BOT on: "2025-10-28T09:52:35Z"
|
||||||
|
|
||||||
CISS.debian.live.builder ISO :
|
CISS.debian.live.builder ISO :
|
||||||
"ciss-debian-live-2025_10_14T19_36_59Z-amd64.hybrid.iso"
|
"ciss-debian-live-2025_10_28T08_58_22Z-amd64.hybrid.iso"
|
||||||
CISS.debian.live.builder ISO sha512 :
|
CISS.debian.live.builder ISO sha512 :
|
||||||
57559f9b9c5e50dad6a5b2023d992c26b8f4d25dd0d45ffa5cfd479ee623287e2c2eead70016267b848c5910db5ba5c4e2dfeeb12cca6f59fe455dad886c51d9
|
098af6c0d36b41bfe7c03d978eefa721bd39ba4ed4ba26c422fb589a635522369d0f8ef2ca48248cf6f0e11dda55ef748247822f05c6291fd0aca3763ea1abf2
|
||||||
CISS.debian.live.builder ISO sha512 sign :
|
CISS.debian.live.builder ISO sha512 sign :
|
||||||
-----BEGIN PGP SIGNATURE-----
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
iHUEABYKAB0WIQSqYnPMNKGz69afyHA85KY4hzOwIQUCaO6zXAAKCRA85KY4hzOw
|
iHUEABYKAB0WIQSqYnPMNKGz69afyHA85KY4hzOwIQUCaQCSYwAKCRA85KY4hzOw
|
||||||
Idq2AQDRmgHRGnX1bn+cNV5JirecSke0IAwlAjEXOl4tFoQlewEA0s2R1A3OQjIq
|
Ic8eAP98y67arFZCGX/ooghY/eMGbcxWnhJSgfB5uVCgJcBu5wD+ObnpugIPVv/l
|
||||||
fAhdl2wltVNT5+jUg6EUj3FE3kVPaQo=
|
OplWsbTlCPA1gMtuJHflKypwlIKQGQU=
|
||||||
=fmxg
|
=Aehw
|
||||||
-----END PGP SIGNATURE-----
|
-----END PGP SIGNATURE-----
|
||||||
|
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=text
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=text
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# SPDX-Version: 3.0
|
# SPDX-Version: 3.0
|
||||||
# SPDX-CreationInfo: 2025-10-14; WEIDNER, Marc S.; <msw@coresecret.dev>
|
# SPDX-CreationInfo: 2025-10-28; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.git
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.git
|
||||||
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
||||||
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <msw@coresecret.dev>
|
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
@@ -9,19 +9,19 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
This file was automatically generated by the DEPLOY BOT on: "2025-10-14T21:28:34Z"
|
This file was automatically generated by the DEPLOY BOT on: "2025-10-28T19:43:00Z"
|
||||||
|
|
||||||
CISS.debian.live.builder ISO :
|
CISS.debian.live.builder ISO :
|
||||||
"ciss-debian-live-2025_10_14T20_33_51Z-amd64.hybrid.iso"
|
"ciss-debian-live-2025_10_28T18_48_33Z-amd64.hybrid.iso"
|
||||||
CISS.debian.live.builder ISO sha512 :
|
CISS.debian.live.builder ISO sha512 :
|
||||||
4a47a1ed0986b67774047b2bfc6fdd53753fa8f301f8376b23ccde1f5187aeffbca7fce3194a3d7b61278630291a1d2d954a289da712c064326eb6b7020c228c
|
54765612eabb3cf442f4ecc172aab818d3a39ac6d686741f5c92523e83b297dcd67c290427f0965bced7df466f0b46e59cd81c5123d29044c5b9d07ee13ee82a
|
||||||
CISS.debian.live.builder ISO sha512 sign :
|
CISS.debian.live.builder ISO sha512 sign :
|
||||||
-----BEGIN PGP SIGNATURE-----
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
iHUEABYKAB0WIQSqYnPMNKGz69afyHA85KY4hzOwIQUCaO7AggAKCRA85KY4hzOw
|
iHUEABYKAB0WIQSqYnPMNKGz69afyHA85KY4hzOwIQUCaQEcxAAKCRA85KY4hzOw
|
||||||
IWpdAP4xCxUP4V0lOBE1u7+wEOoEmXiRC10Va4Hf2UXjH1BSVwEAsz/cMaGt+rJT
|
ITCiAP9e2/bxJ7t8abtVImKGLnuEUJl82LYGlHi5JLEcdZMXYAEAsI93ja0t7G2m
|
||||||
q0i+5EftPavvIst48aXQsp7QKjyNewM=
|
eMb/3bex3UnB6xwpd9tceBZBK8UDbAQ=
|
||||||
=x3/T
|
=/fm8
|
||||||
-----END PGP SIGNATURE-----
|
-----END PGP SIGNATURE-----
|
||||||
|
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=text
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=text
|
||||||
|
|||||||
12
README.md
12
README.md
@@ -2,7 +2,7 @@
|
|||||||
gitea: none
|
gitea: none
|
||||||
include_toc: true
|
include_toc: true
|
||||||
---
|
---
|
||||||
[](https://git.coresecret.dev/msw/CISS.debian.live.builder)
|
[](https://git.coresecret.dev/msw/CISS.debian.live.builder)
|
||||||
|
|
||||||
[](https://eupl.eu/1.2/en/)
|
[](https://eupl.eu/1.2/en/)
|
||||||
[](https://opensource.org/license/eupl-1-2)
|
[](https://opensource.org/license/eupl-1-2)
|
||||||
@@ -11,8 +11,8 @@ include_toc: true
|
|||||||
[](https://github.com/mvdan/sh)
|
[](https://github.com/mvdan/sh)
|
||||||
[](https://google.github.io/styleguide/shellguide.html)
|
[](https://google.github.io/styleguide/shellguide.html)
|
||||||
|
|
||||||
[](https://docs.gitea.com/)
|
[](https://docs.gitea.com/)
|
||||||
[](https://www.jetbrains.com/store/?section=personal&billing=yearly)
|
[](https://www.jetbrains.com/store/?section=personal&billing=yearly)
|
||||||
[](https://keepassxc.org/)
|
[](https://keepassxc.org/)
|
||||||
[](https://www.netcup.com/de)
|
[](https://www.netcup.com/de)
|
||||||
[](https://coresecret.eu/)
|
[](https://coresecret.eu/)
|
||||||
@@ -26,7 +26,7 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
This shell wrapper automates the creation of a Debian Bookworm live ISO hardened according to the latest best practices in server
|
This shell wrapper automates the creation of a Debian Bookworm live ISO hardened according to the latest best practices in server
|
||||||
and service security. It integrates into your build pipeline to deliver an isolated, robust environment suitable for
|
and service security. It integrates into your build pipeline to deliver an isolated, robust environment suitable for
|
||||||
@@ -151,7 +151,7 @@ This means function status of the **CISS.2025.debian.live.builder** ISO after d-
|
|||||||
|
|
||||||
This project adheres strictly to a structured versioning scheme following the pattern x.y.z-Date.
|
This project adheres strictly to a structured versioning scheme following the pattern x.y.z-Date.
|
||||||
|
|
||||||
Example: `V8.13.142.2025.10.14`
|
Example: `V8.13.294.2025.10.28`
|
||||||
|
|
||||||
`x.y.z` represents major (x), minor (y), and patch (z) version increments.
|
`x.y.z` represents major (x), minor (y), and patch (z) version increments.
|
||||||
|
|
||||||
@@ -290,7 +290,7 @@ apply or revert these controls.
|
|||||||
* **Description**: The SSH tunnel and access are secured through multiple layers of defense:
|
* **Description**: The SSH tunnel and access are secured through multiple layers of defense:
|
||||||
* **Firewall Restriction**: ufw allows connections only from defined jump host or VPN exit node IPs.
|
* **Firewall Restriction**: ufw allows connections only from defined jump host or VPN exit node IPs.
|
||||||
* **TCP Wrappers**: `/etc/hosts.allow` and `/etc/hosts.deny` enforce an `ALL: ALL` deny policy, permitting only specified hosts.
|
* **TCP Wrappers**: `/etc/hosts.allow` and `/etc/hosts.deny` enforce an `ALL: ALL` deny policy, permitting only specified hosts.
|
||||||
* **One-Hit Ban**: A custom Fail2Ban rule `/etc/fail2ban/jail.d/centurion-default.conf` immediately bans any host
|
* **One-Hit Ban**: A custom Fail2Ban rule `/etc/fail2ban/jail.d/ciss-default.conf` immediately bans any host
|
||||||
that touches closed ports.
|
that touches closed ports.
|
||||||
* Additionally, the `fail2ban` service is hardened as well according to:
|
* Additionally, the `fail2ban` service is hardened as well according to:
|
||||||
[Arch Linux Wiki Fail2ban Hardening](https://wiki.archlinux.org/title/fail2ban#Service_hardening)
|
[Arch Linux Wiki Fail2ban Hardening](https://wiki.archlinux.org/title/fail2ban#Service_hardening)
|
||||||
|
|||||||
@@ -8,13 +8,13 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2.1. Repository Structure
|
# 2.1. Repository Structure
|
||||||
|
|
||||||
**Project:** Centurion Intelligence Consulting Agency Information Security Standard (CISS) — Debian Live Builder
|
**Project:** Centurion Intelligence Consulting Agency Information Security Standard (CISS) — Debian Live Builder
|
||||||
**Branch:** `master`
|
**Branch:** `master`
|
||||||
**Repository State:** Master Version **8.13**, Build **V8.13.142.2025.10.14** (as of 2025-10-11)
|
**Repository State:** Master Version **8.13**, Build **V8.13.294.2025.10.28** (as of 2025-10-11)
|
||||||
|
|
||||||
## 2.2. Top-Level Layout
|
## 2.2. Top-Level Layout
|
||||||
|
|
||||||
@@ -69,7 +69,7 @@ CISS.debian.live.builder/
|
|||||||
|
|
||||||
### 2.3.2. `config/` — Live-Build Configuration
|
### 2.3.2. `config/` — Live-Build Configuration
|
||||||
- **`bootloaders/`**: Boot assets for GRUB in EFI and PC modes, incl. a branded splash image.
|
- **`bootloaders/`**: Boot assets for GRUB in EFI and PC modes, incl. a branded splash image.
|
||||||
- **`hooks/live/`**: **Ordered** `*.chroot` hooks implementing system configuration and hardening during image creation; the numeric prefixes dictate execution (e.g., `0000_basic_chroot_setup.chroot`, `0810_chrony_setup.chroot`, `0900_ufw_setup.chroot`, `9930_hardening_ssh.chroot`, `9950_fail2ban_hardening.chroot`).
|
- **`hooks/live/`**: **Ordered** `*.chroot` hooks implementing system configuration and hardening during image creation; the numeric prefixes dictate execution (e.g., `0000_basic_chroot_setup.chroot`, `0810_chrony_setup.chroot`, `0900_ufw_setup.chroot`, `9930_hardening_ssh.chroot`, `9950_hardening_fail2ban.chroot`).
|
||||||
- **`includes.binary/boot/grub/`**: Static GRUB configuration embedded in the binary image (`config.cfg`).
|
- **`includes.binary/boot/grub/`**: Static GRUB configuration embedded in the binary image (`config.cfg`).
|
||||||
- **`includes.chroot/`**: Files copied into the live system’s root:
|
- **`includes.chroot/`**: Files copied into the live system’s root:
|
||||||
- `etc/` (APT configuration, `live/`, `modprobe.d/`, network, SSH, `sysctl.d/`, systemd drop-ins, banners),
|
- `etc/` (APT configuration, `live/`, `modprobe.d/`, network, SSH, `sysctl.d/`, systemd drop-ins, banners),
|
||||||
|
|||||||
@@ -132,6 +132,7 @@ declare -gx VAR_SETUP="true"
|
|||||||
source_guard "./lib/lib_check_provider.sh"
|
source_guard "./lib/lib_check_provider.sh"
|
||||||
source_guard "./lib/lib_check_stats.sh"
|
source_guard "./lib/lib_check_stats.sh"
|
||||||
source_guard "./lib/lib_check_var.sh"
|
source_guard "./lib/lib_check_var.sh"
|
||||||
|
source_guard "./lib/lib_ciss_upgrades.sh"
|
||||||
source_guard "./lib/lib_clean_screen.sh"
|
source_guard "./lib/lib_clean_screen.sh"
|
||||||
source_guard "./lib/lib_clean_up.sh"
|
source_guard "./lib/lib_clean_up.sh"
|
||||||
source_guard "./lib/lib_copy_integrity.sh"
|
source_guard "./lib/lib_copy_integrity.sh"
|
||||||
@@ -149,6 +150,7 @@ declare -gx VAR_SETUP="true"
|
|||||||
source_guard "./lib/lib_sanitizer.sh"
|
source_guard "./lib/lib_sanitizer.sh"
|
||||||
source_guard "./lib/lib_trap_on_err.sh"
|
source_guard "./lib/lib_trap_on_err.sh"
|
||||||
source_guard "./lib/lib_trap_on_exit.sh"
|
source_guard "./lib/lib_trap_on_exit.sh"
|
||||||
|
source_guard "./lib/lib_update_microcode.sh"
|
||||||
source_guard "./lib/lib_usage.sh"
|
source_guard "./lib/lib_usage.sh"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,6 +220,7 @@ fi
|
|||||||
|
|
||||||
check_hooks
|
check_hooks
|
||||||
hardening_ssh
|
hardening_ssh
|
||||||
|
ciss_upgrades
|
||||||
lb_config_start
|
lb_config_start
|
||||||
|
|
||||||
if [[ "${VAR_SUITE}" == "bookworm" ]]; then
|
if [[ "${VAR_SUITE}" == "bookworm" ]]; then
|
||||||
@@ -244,6 +247,7 @@ check_dhcp
|
|||||||
cdi
|
cdi
|
||||||
provider_netcup
|
provider_netcup
|
||||||
note_target
|
note_target
|
||||||
|
update_microcode
|
||||||
|
|
||||||
### Start the build process
|
### Start the build process
|
||||||
set +o errtrace
|
set +o errtrace
|
||||||
|
|||||||
10
config/hooks/.keep
Normal file
10
config/hooks/.keep
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-10-26; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
@@ -13,8 +13,199 @@ set -Ceuo pipefail
|
|||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Generates '/etc/default/ciss-xdg-profile'
|
||||||
|
# Globals:
|
||||||
|
# None
|
||||||
|
# Arguments:
|
||||||
|
# None
|
||||||
|
# Returns:
|
||||||
|
# 0: on success
|
||||||
|
#######################################
|
||||||
|
generate_ciss_xdg_profile() {
|
||||||
|
cat << 'EOF' >> /etc/default/ciss-xdg-profile
|
||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-10-11; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
|
# Default toggles for ciss-xdg-profile
|
||||||
|
# 1 = enable, 0 = disable
|
||||||
|
|
||||||
|
ENABLE_XDG_BASH_HISTORY=1
|
||||||
|
ENABLE_XDG_LESS_HISTORY=1
|
||||||
|
ENABLE_XDG_ZSH_HISTORY=1
|
||||||
|
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=conf
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod 0644 /etc/default/ciss-xdg-profile
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
### Prevents accidental 'unset -f'.
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
readonly -f generate_ciss_xdg_profile
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Generates '/etc/profile.d/ciss-xdg.sh'
|
||||||
|
# Globals:
|
||||||
|
# None
|
||||||
|
# Arguments:
|
||||||
|
# None
|
||||||
|
# Returns:
|
||||||
|
# 0: on success
|
||||||
|
#######################################
|
||||||
|
generate_ciss_xdg_sh() {
|
||||||
|
cat << 'EOF' >> /etc/profile.d/ciss-xdg.sh
|
||||||
|
#!/bin/sh
|
||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-10-11; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
|
# shellcheck shell=sh
|
||||||
|
|
||||||
|
# This file is sourced by login shells via '/etc/profile'. Keep POSIX sh compatible.
|
||||||
|
|
||||||
|
### XDG variables (do not override if already set).
|
||||||
|
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-${HOME}/.config}"
|
||||||
|
export XDG_DATA_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}"
|
||||||
|
export XDG_CACHE_HOME="${XDG_CACHE_HOME:-${HOME}/.cache}"
|
||||||
|
export XDG_STATE_HOME="${XDG_STATE_HOME:-${HOME}/.local/state}"
|
||||||
|
export XDG_CONFIG_DIRS="${XDG_CONFIG_DIRS:-/etc/xdg}"
|
||||||
|
export XDG_DATA_DIRS="${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
|
||||||
|
|
||||||
|
### XDG_RUNTIME_DIR is provided by systemd-logind; do not set a persistent path.
|
||||||
|
# shellcheck disable=SC2312
|
||||||
|
if [ -z "${XDG_RUNTIME_DIR:-}" ] && [ -d "/run/user/$(id -u)" ]; then
|
||||||
|
# shellcheck disable=SC2155
|
||||||
|
export XDG_RUNTIME_DIR="/run/user/$(id -u)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
### Create canonical directories idempotently with 0700.
|
||||||
|
_xdg_umask="$(umask)"
|
||||||
|
umask 077
|
||||||
|
[ -d "${XDG_CONFIG_HOME}" ] || install -d -m 0700 -- "${XDG_CONFIG_HOME}"
|
||||||
|
[ -d "${XDG_DATA_HOME}" ] || install -d -m 0700 -- "${XDG_DATA_HOME}"
|
||||||
|
[ -d "${XDG_CACHE_HOME}" ] || install -d -m 0700 -- "${XDG_CACHE_HOME}"
|
||||||
|
[ -d "${XDG_STATE_HOME}" ] || install -d -m 0700 -- "${XDG_STATE_HOME}"
|
||||||
|
umask "${_xdg_umask}"
|
||||||
|
unset _xdg_umask
|
||||||
|
|
||||||
|
### Optional migrations (controlled via /'etc/default/ciss-xdg-profile').
|
||||||
|
[ -f /etc/default/ciss-xdg-profile ] && . /etc/default/ciss-xdg-profile
|
||||||
|
|
||||||
|
### Bash history -> XDG_STATE_HOME (only if running bash).
|
||||||
|
if [ "${ENABLE_XDG_BASH_HISTORY:-1}" = "1" ] && [ -n "${BASH_VERSION:-}" ]; then
|
||||||
|
[ -d "${XDG_STATE_HOME}/bash" ] || install -d -m 0700 -- "${XDG_STATE_HOME}/bash"
|
||||||
|
export HISTFILE="${XDG_STATE_HOME}/bash/history"
|
||||||
|
fi
|
||||||
|
|
||||||
|
### Less history -> XDG_STATE_HOME
|
||||||
|
if [ "${ENABLE_XDG_LESS_HISTORY:-1}" = "1" ]; then
|
||||||
|
[ -d "${XDG_STATE_HOME}/less" ] || install -d -m 0700 -- "${XDG_STATE_HOME}/less"
|
||||||
|
export LESSHISTFILE="${XDG_STATE_HOME}/less/history"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod 0755 /etc/profile.d/ciss-xdg.sh
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
### Prevents accidental 'unset -f'.
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
readonly -f generate_ciss_xdg_sh
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Generates '/root/ciss_xdg_tmp.sh'
|
||||||
|
# Globals:
|
||||||
|
# None
|
||||||
|
# Arguments:
|
||||||
|
# None
|
||||||
|
# Returns:
|
||||||
|
# 0: on success
|
||||||
|
#######################################
|
||||||
|
generate_ciss_xdg_tmp_sh() {
|
||||||
|
cat << 'EOF' >> /root/ciss_xdg_tmp.sh
|
||||||
|
#!/bin/bash
|
||||||
|
# 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
|
||||||
|
|
||||||
|
### XDG variables (do not override if already set).
|
||||||
|
|
||||||
|
set -a
|
||||||
|
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-${HOME}/.config}"
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
XDG_DATA_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}"
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
XDG_CACHE_HOME="${XDG_CACHE_HOME:-${HOME}/.cache}"
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
XDG_STATE_HOME="${XDG_STATE_HOME:-${HOME}/.local/state}"
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
XDG_CONFIG_DIRS="${XDG_CONFIG_DIRS:-/etc/xdg}"
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
XDG_DATA_DIRS="${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
|
||||||
|
|
||||||
|
### Optional migrations (controlled via /etc/default/ciss-xdg-profile).
|
||||||
|
[[ -f /etc/default/ciss-xdg-profile ]] && . /etc/default/ciss-xdg-profile
|
||||||
|
|
||||||
|
### Bash history -> XDG_STATE_HOME (only if running bash).
|
||||||
|
if [[ "${ENABLE_XDG_BASH_HISTORY:-1}" = "1" ]] && [[ -n "${BASH_VERSION:-}" ]]; then
|
||||||
|
HISTFILE="${XDG_STATE_HOME}/bash/history"
|
||||||
|
fi
|
||||||
|
|
||||||
|
set +a
|
||||||
|
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
|
EOF
|
||||||
|
chmod 0700 /root/ciss_xdg_tmp.sh
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
### Prevents accidental 'unset -f'.
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
readonly -f generate_ciss_xdg_tmp_sh
|
||||||
|
|
||||||
|
generate_ciss_xdg_profile
|
||||||
|
generate_ciss_xdg_sh
|
||||||
|
generate_ciss_xdg_tmp_sh
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
export DEBIAN_FRONTEND="noninteractive"
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
apt-get update -qq
|
apt-get update -qq
|
||||||
|
apt-get install -y --no-install-suggests libpam-systemd
|
||||||
|
|
||||||
|
if [[ -f /root/.architecture ]]; then
|
||||||
|
|
||||||
|
apt-get install -y --no-install-suggests amd64-microcode intel-microcode
|
||||||
|
rm -f /root/.architecture
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
mkdir -p /root/.ciss/dlb/{backup,log}
|
mkdir -p /root/.ciss/dlb/{backup,log}
|
||||||
chmod 0700 /root/.ciss/dlb/{backup,log}
|
chmod 0700 /root/.ciss/dlb/{backup,log}
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ grep_nic_driver_modules() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
export DEBIAN_FRONTEND="noninteractive"
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
apt-get install -y intel-microcode amd64-microcode
|
apt-get install -y intel-microcode amd64-microcode
|
||||||
|
|
||||||
@@ -82,19 +83,10 @@ cat << EOF >| /etc/initramfs-tools/modules
|
|||||||
# raid1
|
# raid1
|
||||||
# sd_mod
|
# sd_mod
|
||||||
|
|
||||||
### Load AppArmor early:
|
### AppArmor -------------------------------------------------------------------------------------------------------------------
|
||||||
apparmor
|
apparmor
|
||||||
|
|
||||||
### Entropy source for '/dev/random':
|
### btrfs ----------------------------------------------------------------------------------------------------------------------
|
||||||
jitterentropy_rng
|
|
||||||
rng_core
|
|
||||||
|
|
||||||
### Live-ISO-Stack:
|
|
||||||
loop
|
|
||||||
squashfs
|
|
||||||
overlay
|
|
||||||
|
|
||||||
### Main btrfs-Stack:
|
|
||||||
btrfs
|
btrfs
|
||||||
lzo
|
lzo
|
||||||
xor
|
xor
|
||||||
@@ -102,28 +94,7 @@ xxhash
|
|||||||
zstd
|
zstd
|
||||||
zstd_compress
|
zstd_compress
|
||||||
|
|
||||||
### Main ext4-Stack:
|
### cryptography ---------------------------------------------------------------------------------------------------------------
|
||||||
ext4
|
|
||||||
jbd2
|
|
||||||
libcrc32c
|
|
||||||
|
|
||||||
### Main VFAT/ESP/FAT/UEFI-Stack:
|
|
||||||
exfat
|
|
||||||
fat
|
|
||||||
nls_ascii
|
|
||||||
nls_cp437
|
|
||||||
nls_iso8859-1
|
|
||||||
nls_iso8859-15
|
|
||||||
nls_utf8
|
|
||||||
vfat
|
|
||||||
|
|
||||||
### Device mapper, encryption & integrity:
|
|
||||||
dm_mod
|
|
||||||
dm_crypt
|
|
||||||
dm_integrity
|
|
||||||
dm_verity
|
|
||||||
|
|
||||||
### Main cryptography-Stack:
|
|
||||||
aes_generic
|
aes_generic
|
||||||
blake2b_generic
|
blake2b_generic
|
||||||
crc32c_generic
|
crc32c_generic
|
||||||
@@ -133,47 +104,99 @@ sha256_generic
|
|||||||
sha512_generic
|
sha512_generic
|
||||||
xts
|
xts
|
||||||
|
|
||||||
### QEMU Bochs-compatible virtual machine support:
|
### cryptsetup -----------------------------------------------------------------------------------------------------------------
|
||||||
bochs
|
dm_crypt
|
||||||
|
dm_integrity
|
||||||
|
dm_mod
|
||||||
|
dm_verity
|
||||||
|
|
||||||
### RAID6 parity generation module:
|
### Entropy --------------------------------------------------------------------------------------------------------------------
|
||||||
raid6_pq
|
jitterentropy_rng
|
||||||
|
rng_core
|
||||||
|
|
||||||
### Combined RAID4/5/6 support module:
|
### ESP/FAT/UEFI ---------------------------------------------------------------------------------------------------------------
|
||||||
raid456
|
exfat
|
||||||
|
fat
|
||||||
|
nls_ascii
|
||||||
|
nls_cp437
|
||||||
|
nls_iso8859-1
|
||||||
|
nls_iso8859-15
|
||||||
|
nls_utf8
|
||||||
|
vfat
|
||||||
|
|
||||||
### SCSI/SATA-Stack:
|
### ext4 -----------------------------------------------------------------------------------------------------------------------
|
||||||
sd_mod
|
ext4
|
||||||
sr_mod
|
jbd2
|
||||||
sg
|
libcrc32c
|
||||||
ahci
|
|
||||||
libahci
|
|
||||||
ata_generic
|
|
||||||
libata
|
|
||||||
scsi_mod
|
|
||||||
scsi_dh_alua
|
|
||||||
|
|
||||||
### NVMe-Stack:
|
### Live-ISO -------------------------------------------------------------------------------------------------------------------
|
||||||
|
loop
|
||||||
|
squashfs
|
||||||
|
overlay
|
||||||
|
|
||||||
|
#### nftables ------------------------------------------------------------------------------------------------------------------
|
||||||
|
#nf_log_common # built-in
|
||||||
|
#nft_counter # built-in
|
||||||
|
#nft_icmp # built-in
|
||||||
|
#nft_icmpv6 # built-in
|
||||||
|
#nft_meta # built-in
|
||||||
|
#nft_set_hash # built-in
|
||||||
|
#nft_set_rbtree # built-in
|
||||||
|
#nft_tcp # built-in
|
||||||
|
#nft_udp # built-in
|
||||||
|
nf_conntrack
|
||||||
|
nf_nat
|
||||||
|
nf_reject_ipv4
|
||||||
|
nf_reject_ipv6
|
||||||
|
nf_tables
|
||||||
|
nfnetlink
|
||||||
|
nfnetlink_log
|
||||||
|
nft_ct
|
||||||
|
nft_limit
|
||||||
|
nft_log
|
||||||
|
nft_masq
|
||||||
|
nft_nat
|
||||||
|
nft_reject_inet
|
||||||
|
|
||||||
|
### NVMe -----------------------------------------------------------------------------------------------------------------------
|
||||||
nvme
|
nvme
|
||||||
nvme_core
|
nvme_core
|
||||||
|
|
||||||
### USB-Stack:
|
### QEMU -----------------------------------------------------------------------------------------------------------------------
|
||||||
xhci_pci
|
bochs
|
||||||
xhci_hcd
|
|
||||||
|
### RAID -----------------------------------------------------------------------------------------------------------------------
|
||||||
|
raid456
|
||||||
|
raid6_pq
|
||||||
|
|
||||||
|
### SCSI/SATA ------------------------------------------------------------------------------------------------------------------
|
||||||
|
ahci
|
||||||
|
ata_generic
|
||||||
|
libahci
|
||||||
|
libata
|
||||||
|
scsi_dh_alua
|
||||||
|
scsi_mod
|
||||||
|
sd_mod
|
||||||
|
sg
|
||||||
|
sr_mod
|
||||||
|
|
||||||
|
### USB ------------------------------------------------------------------------------------------------------------------------
|
||||||
ehci_pci
|
ehci_pci
|
||||||
ohci_pci
|
ohci_pci
|
||||||
|
uas
|
||||||
uhci_hcd
|
uhci_hcd
|
||||||
usb_storage
|
usb_storage
|
||||||
uas
|
xhci_hcd
|
||||||
|
xhci_pci
|
||||||
|
|
||||||
### Virtual-Machines-Stack:
|
### Virtual --------------------------------------------------------------------------------------------------------------------
|
||||||
virtio_pci
|
|
||||||
virtio_blk
|
virtio_blk
|
||||||
virtio_scsi
|
|
||||||
virtio_rng
|
|
||||||
virtio_console
|
virtio_console
|
||||||
|
virtio_pci
|
||||||
|
virtio_rng
|
||||||
|
virtio_scsi
|
||||||
|
|
||||||
### Network Driver Host-machine:
|
### Network Driver Host-machine ------------------------------------------------------------------------------------------------
|
||||||
"${nic_driver}"
|
"${nic_driver}"
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
@@ -201,7 +224,7 @@ cat << 'EOF' >| /etc/initramfs-tools/update-initramfs.conf
|
|||||||
# If set to all update-initramfs will update all initramfs
|
# If set to all update-initramfs will update all initramfs
|
||||||
# If set to no disables any update to initramfs besides kernel upgrade
|
# If set to no disables any update to initramfs besides kernel upgrade
|
||||||
|
|
||||||
update_initramfs=yes
|
update_initramfs=all
|
||||||
|
|
||||||
#
|
#
|
||||||
# backup_initramfs [ yes | no ]
|
# backup_initramfs [ yes | no ]
|
||||||
@@ -277,10 +300,10 @@ COMPRESS=zstd
|
|||||||
# Defaults vary by compressor.
|
# Defaults vary by compressor.
|
||||||
#
|
#
|
||||||
# Valid values are:
|
# Valid values are:
|
||||||
# 1-9 for gzip|bzip2|lzma|lzop
|
# 1...9 for gzip|bzip2|lzma|lzop
|
||||||
# 0-9 for lz4|xz
|
# 0...9 for lz4|xz
|
||||||
# 0-19 for zstd
|
# 0...19 for zstd
|
||||||
# COMPRESSLEVEL=3
|
COMPRESSLEVEL=16
|
||||||
|
|
||||||
#
|
#
|
||||||
# DEVICE: ...
|
# DEVICE: ...
|
||||||
@@ -332,24 +355,95 @@ cat << 'EOF' >> /etc/initramfs-tools/hooks/ciss_debian_live_builder
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
printf "\e[95mStarting: [0001_initramfs_modules.chroot] \n\e[0m"
|
||||||
|
|
||||||
PREREQ=""
|
PREREQ=""
|
||||||
prereqs() { echo "$PREREQ"; }
|
prereqs() { echo "${PREREQ}"; }
|
||||||
case $1 in
|
# shellcheck disable=SC2249
|
||||||
|
case "${1}" in
|
||||||
prereqs) prereqs; exit 0 ;;
|
prereqs) prereqs; exit 0 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
. /usr/share/initramfs-tools/hook-functions
|
. /usr/share/initramfs-tools/hook-functions
|
||||||
|
|
||||||
mkdir -p "${DESTDIR}/bin" "${DESTDIR}/usr/bin" "${DESTDIR}/usr/local/bin"
|
|
||||||
|
|
||||||
# Include Bash
|
### Ensure directory structure in initramfs
|
||||||
copy_exec /usr/bin/bash /usr/bin
|
mkdir -p "${DESTDIR}/usr/bin"
|
||||||
|
mkdir -p "${DESTDIR}/etc/keys"
|
||||||
|
mkdir -p "${DESTDIR}/usr/local/bin"
|
||||||
|
mkdir -p "${DESTDIR}/etc/initramfs-tools/conf.d"
|
||||||
|
mkdir -p "${DESTDIR}/etc/initramfs-tools/scripts/init-premount"
|
||||||
|
mkdir -p "${DESTDIR}/usr/sbin"
|
||||||
|
|
||||||
# Include lsblk (block device information tool)
|
|
||||||
copy_exec /usr/bin/lsblk /usr/bin
|
|
||||||
|
|
||||||
# Include udevadm (udev management tool)
|
### Include bash
|
||||||
copy_exec /usr/bin/udevadm /usr/bin
|
copy_exec /usr/bin/bash /usr/bin/bash
|
||||||
|
printf "\e[92mSuccessfully executed: [copy_exec /usr/bin/bash /usr/bin/bash] \n\e[0m"
|
||||||
|
|
||||||
|
|
||||||
|
### Include blkid
|
||||||
|
copy_exec /usr/sbin/blkid /usr/sbin/blkid
|
||||||
|
printf "\e[92mSuccessfully executed: [copy_exec /usr/sbin/blkid /usr/sbin/blkid] \n\e[0m"
|
||||||
|
|
||||||
|
|
||||||
|
### Include busybox
|
||||||
|
copy_exec /usr/bin/busybox /usr/busybox
|
||||||
|
printf "\e[92mSuccessfully executed: [copy_exec /usr/bin/busybox /usr/busybox] \n\e[0m"
|
||||||
|
|
||||||
|
|
||||||
|
### Include GNU coreutils 'sort' (has -V)
|
||||||
|
copy_exec /usr/bin/sort /usr/bin/sort
|
||||||
|
printf "\e[92mSuccessfully executed: [copy_exec /usr/bin/sort /usr/bin/sort] \n\e[0m"
|
||||||
|
|
||||||
|
|
||||||
|
### Include gpgv
|
||||||
|
copy_exec /usr/bin/gpgv /usr/bin/gpgv
|
||||||
|
printf "\e[92mSuccessfully executed: [copy_exec /usr/bin/gpgv /usr/bin/gpgv] \n\e[0m"
|
||||||
|
|
||||||
|
|
||||||
|
### Include lsblk
|
||||||
|
copy_exec /usr/bin/lsblk /usr/bin/lsblk
|
||||||
|
printf "\e[92mSuccessfully executed: [copy_exec /usr/bin/lsblk /usr/bin/lsblk] \n\e[0m"
|
||||||
|
|
||||||
|
|
||||||
|
### Include mkpasswd
|
||||||
|
copy_exec /usr/bin/mkpasswd /usr/mkpasswd
|
||||||
|
printf "\e[92mSuccessfully executed: [copy_exec /usr/bin/mkpasswd /usr/mkpasswd] \n\e[0m"
|
||||||
|
copy_exec /usr/bin/mkpasswd /usr/bin/mkpasswd
|
||||||
|
printf "\e[92mSuccessfully executed: [copy_exec /usr/bin/mkpasswd /usr/bin/mkpasswd] \n\e[0m"
|
||||||
|
|
||||||
|
|
||||||
|
### Include udevadm (udev management tool)
|
||||||
|
copy_exec /usr/bin/udevadm /usr/bin/udevadm
|
||||||
|
printf "\e[92mSuccessfully executed: [copy_exec /usr/bin/udevadm /usr/bin/udevadm] \n\e[0m"
|
||||||
|
|
||||||
|
|
||||||
|
### Include sha384sum, sha512sum
|
||||||
|
copy_exec /usr/bin/sha384sum /usr/bin/sha384sum
|
||||||
|
printf "\e[92mSuccessfully executed: [copy_exec /usr/bin/sha384sum /usr/bin/sha384sum ] \n\e[0m"
|
||||||
|
copy_exec /usr/bin/sha512sum /usr/bin/sha512sum
|
||||||
|
printf "\e[92mSuccessfully executed: [copy_exec /usr/bin/sha512sum /usr/bin/sha512sum] \n\e[0m"
|
||||||
|
|
||||||
|
|
||||||
|
### Include tree
|
||||||
|
copy_exec /usr/bin/tree /usr/bin/tree
|
||||||
|
printf "\e[92mSuccessfully executed: [copy_exec /usr/bin/tree /usr/bin/tree] \n\e[0m"
|
||||||
|
|
||||||
|
|
||||||
|
### Include whois
|
||||||
|
copy_exec /usr/bin/whois /usr/bin/whois
|
||||||
|
printf "\e[92mSuccessfully executed: [copy_exec /usr/bin/whois /usr/bin/whois] \n\e[0m"
|
||||||
|
|
||||||
|
|
||||||
|
### Link busybox applets for compatibility
|
||||||
|
for dir in bin usr/bin; do
|
||||||
|
ln -sf busybox "${DESTDIR}/${dir}/cat"
|
||||||
|
ln -sf busybox "${DESTDIR}/${dir}/sleep"
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "\e[92mSuccessfully executed: [0001_initramfs_modules.chroot] \n\e[0m"
|
||||||
|
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
chmod 0755 /etc/initramfs-tools/hooks/ciss_debian_live_builder
|
chmod 0755 /etc/initramfs-tools/hooks/ciss_debian_live_builder
|
||||||
|
|||||||
@@ -22,24 +22,25 @@ fi
|
|||||||
|
|
||||||
cat << 'EOF' >| "${src}"
|
cat << 'EOF' >| "${src}"
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# bashsupport disable=BP5007
|
||||||
|
|
||||||
# SPDX-Version: 3.0
|
# SPDX-Version: 3.0
|
||||||
# SPDX-CreationInfo: 2025-10-11; WEIDNER, Marc S.; <msw@coresecret.dev>
|
# SPDX-CreationInfo: 2025-10-28; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.git
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.git
|
||||||
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
||||||
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <msw@coresecret.dev>
|
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
# SPDX-FileType: SOURCE
|
# SPDX-FileType: SOURCE
|
||||||
# SPDX-License-Identifier: EUPL-1.2 OR LicenseRef-CCLA-1.0
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
# SPDX-LicenseComment: This file is part of the CISS.debian.installer.secure framework.
|
# SPDX-LicenseComment: This file is part of the CISS.debian.installer.secure framework.
|
||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
### Changed version of https://salsa.debian.org/live-team/live-boot 'components/0030-verify-checksums'
|
### Modified Version of the original file:
|
||||||
### In case of successful verification of the offered checksums, proceed with booting, else panic.
|
### https://salsa.debian.org/live-team/live-boot 'components/0030-verify-checksums'
|
||||||
|
### In case of successful verification of one of the offered checksums, proceed with booting, else panic.
|
||||||
### Inside 0002_verify_checksums.chroot ###
|
|
||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
# Live build ISO with the modified checksum verification script for continuing the boot process.
|
# Modified checksum-verification script for continuing the boot process.
|
||||||
# Globals:
|
# Globals:
|
||||||
# LIVE_BOOT_CMDLINE
|
# LIVE_BOOT_CMDLINE
|
||||||
# LIVE_VERIFY_CHECKSUMS
|
# LIVE_VERIFY_CHECKSUMS
|
||||||
@@ -52,30 +53,40 @@ cat << 'EOF' >| "${src}"
|
|||||||
# _RETURN
|
# _RETURN
|
||||||
# _TTY
|
# _TTY
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# $1: ${_PARAMETER}
|
# 1: ${_PARAMETER}
|
||||||
# Returns:
|
# Returns:
|
||||||
# 0 : Successful Verification
|
# 0 : Successful Verification
|
||||||
#######################################
|
#######################################
|
||||||
Verify_checksums() {
|
Verify_checksums() {
|
||||||
for _PARAMETER in ${LIVE_BOOT_CMDLINE}; do
|
for _PARAMETER in ${LIVE_BOOT_CMDLINE}; do
|
||||||
|
|
||||||
case "${_PARAMETER}" in
|
case "${_PARAMETER}" in
|
||||||
|
|
||||||
live-boot.verify-checksums=* | verify-checksums=*)
|
live-boot.verify-checksums=* | verify-checksums=*)
|
||||||
|
|
||||||
LIVE_VERIFY_CHECKSUMS="true"
|
LIVE_VERIFY_CHECKSUMS="true"
|
||||||
LIVE_VERIFY_CHECKSUMS_DIGESTS="${_PARAMETER#*verify-checksums=}"
|
LIVE_VERIFY_CHECKSUMS_DIGESTS="${_PARAMETER#*verify-checksums=}"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
live-boot.verify-checksums | verify-checksums)
|
live-boot.verify-checksums | verify-checksums)
|
||||||
|
|
||||||
LIVE_VERIFY_CHECKSUMS="true"
|
LIVE_VERIFY_CHECKSUMS="true"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
case "${LIVE_VERIFY_CHECKSUMS}" in
|
case "${LIVE_VERIFY_CHECKSUMS}" in
|
||||||
true) ;;
|
|
||||||
|
true)
|
||||||
|
:
|
||||||
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
_MOUNTPOINT="${1}"
|
_MOUNTPOINT="${1}"
|
||||||
@@ -84,46 +95,65 @@ Verify_checksums() {
|
|||||||
_TTY="/dev/tty8"
|
_TTY="/dev/tty8"
|
||||||
|
|
||||||
log_begin_msg "Verifying checksums"
|
log_begin_msg "Verifying checksums"
|
||||||
|
printf "\n"
|
||||||
|
|
||||||
# shellcheck disable=SC2164
|
# shellcheck disable=SC2164
|
||||||
cd "${_MOUNTPOINT}"
|
cd "${_MOUNTPOINT}"
|
||||||
|
|
||||||
|
# shellcheck disable=SC2001
|
||||||
for _DIGEST in $(echo "${LIVE_VERIFY_CHECKSUMS_DIGESTS}" | sed -e 's|,| |g'); do
|
for _DIGEST in $(echo "${LIVE_VERIFY_CHECKSUMS_DIGESTS}" | sed -e 's|,| |g'); do
|
||||||
|
|
||||||
# shellcheck disable=SC2060
|
# shellcheck disable=SC2060
|
||||||
_CHECKSUMS="$(echo "${_DIGEST}" | tr [a-z] [A-Z])SUMS ${_DIGEST}sum.txt"
|
_CHECKSUMS="$(echo "${_DIGEST}" | tr [a-z] [A-Z])SUMS ${_DIGEST}sum.txt"
|
||||||
|
|
||||||
for _CHECKSUM in ${_CHECKSUMS}; do
|
for _CHECKSUM in ${_CHECKSUMS}; do
|
||||||
|
|
||||||
|
# shellcheck disable=SC2292
|
||||||
if [ -e "${_CHECKSUM}" ]; then
|
if [ -e "${_CHECKSUM}" ]; then
|
||||||
echo "Found ${_CHECKSUM}..." > "${_TTY}"
|
|
||||||
|
#echo "Found ${_CHECKSUM}..." > "${_TTY}"
|
||||||
|
printf "Found %s...\n" "${_CHECKSUM}"
|
||||||
|
|
||||||
if [ -e "/bin/${_DIGEST}sum" ]; then
|
if [ -e "/bin/${_DIGEST}sum" ]; then
|
||||||
echo "Checking ${_CHECKSUM}..." > "${_TTY}"
|
|
||||||
|
#echo "Checking ${_CHECKSUM}..." > "${_TTY}"
|
||||||
|
printf "Checking %s...\n" "${_CHECKSUM}"
|
||||||
|
|
||||||
# Verify checksums
|
# Verify checksums
|
||||||
|
# shellcheck disable=SC2312
|
||||||
grep -v '^#' "${_CHECKSUM}" | /bin/"${_DIGEST}"sum -c > "${_TTY}"
|
grep -v '^#' "${_CHECKSUM}" | /bin/"${_DIGEST}"sum -c > "${_TTY}"
|
||||||
_RETURN="${?}"
|
_RETURN="${?}"
|
||||||
|
|
||||||
# Stop after the first verification
|
# Stop after the first verification
|
||||||
# break 2
|
# break 2
|
||||||
|
|
||||||
else
|
else
|
||||||
echo "Not found /bin/${_DIGEST}sum..." > "${_TTY}"
|
|
||||||
|
#echo "Not found /bin/${_DIGEST}sum..." > "${_TTY}"
|
||||||
|
printf "Not found /bin/%ssum....\n" "${_DIGEST}"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
log_end_msg
|
log_end_msg
|
||||||
|
|
||||||
case "${_RETURN}" in
|
case "${_RETURN}" in
|
||||||
|
|
||||||
0)
|
0)
|
||||||
log_success_msg "Verification sha512 sha384 sha256 successful, continuing booting in 10 seconds."
|
log_success_msg "Verification of checksums successful; continuing booting in 8 seconds."
|
||||||
sleep 10
|
sleep 8
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
panic "Verification failed, $(basename ${_TTY}) for more information."
|
panic "Verification failed, $(basename "${_TTY}") for more information."
|
||||||
;;
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
# 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
|
||||||
|
|||||||
52
config/hooks/live/0003_cdi_autostart.chroot
Normal file
52
config/hooks/live/0003_cdi_autostart.chroot
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-10-11; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
set -Ceuo pipefail
|
||||||
|
|
||||||
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
if [[ -f /root/.cdi ]]; then
|
||||||
|
|
||||||
|
cat << EOF >| /etc/systemd/system/cdi-starter.service
|
||||||
|
[Unit]
|
||||||
|
Description=CISS CDI post-boot starter
|
||||||
|
Documentation=https://git.coresecret.dev/msw/CISS.debian.live.builder.git
|
||||||
|
ConditionPathIsExecutable=/usr/local/sbin/9999-cdi-starter.sh
|
||||||
|
After=live-config.service systemd-user-sessions.service getty.target
|
||||||
|
After=network-online.target NetworkManager-wait-online.service systemd-networkd-wait-online.service
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=idle
|
||||||
|
ExecStart=/usr/local/sbin/9999-cdi-starter.sh
|
||||||
|
TimeoutStartSec=1min
|
||||||
|
Nice=5
|
||||||
|
IOSchedulingClass=best-effort
|
||||||
|
Environment=LANG=C.UTF-8
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod 0644 /etc/systemd/system/cdi-starter.service
|
||||||
|
|
||||||
|
systemctl enable cdi-starter.service
|
||||||
|
|
||||||
|
rm -f /root/.cdi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
77
config/hooks/live/0007_update_logrotate.chroot
Normal file
77
config/hooks/live/0007_update_logrotate.chroot
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-10-11; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
set -Ceuo pipefail
|
||||||
|
|
||||||
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
|
|
||||||
|
rm -f "/etc/logrotate.conf"
|
||||||
|
cat << EOF >| "/etc/logrotate.conf"
|
||||||
|
# See "man logrotate" for details. Global options do not affect preceding include directives.
|
||||||
|
|
||||||
|
# Rotate log files daily
|
||||||
|
daily
|
||||||
|
|
||||||
|
# Keep 384 daily worth of backlogs.
|
||||||
|
rotate 90
|
||||||
|
|
||||||
|
# Hard cap: delete rotated logs older than 384 days.
|
||||||
|
maxage 90
|
||||||
|
|
||||||
|
# Do not rotate the log if it is empty (this overrides the ifempty option).
|
||||||
|
notifempty
|
||||||
|
|
||||||
|
# Create new (empty) log files after rotating old ones.
|
||||||
|
create
|
||||||
|
|
||||||
|
# Use date as a suffix of the rotated file.
|
||||||
|
dateext
|
||||||
|
|
||||||
|
# Use yesterday's instead of today's date to create the dateext extension, so that the rotated log file has a date in its name
|
||||||
|
# that is the same as the timestamps within it.
|
||||||
|
dateyesterday
|
||||||
|
|
||||||
|
# Enable compression
|
||||||
|
compress
|
||||||
|
|
||||||
|
# Use zstd instead of gzip.
|
||||||
|
compresscmd /usr/bin/zstd
|
||||||
|
|
||||||
|
# File extension for compressed logs.
|
||||||
|
compressext .zst
|
||||||
|
|
||||||
|
# Set zstd level 3 (default).
|
||||||
|
compressoptions -20
|
||||||
|
|
||||||
|
# How to decompress for 'logrotate -d' or similar.
|
||||||
|
uncompresscmd /usr/bin/unzstd
|
||||||
|
|
||||||
|
# Keep the most recent rotation uncompressed for one cycle.
|
||||||
|
delaycompress
|
||||||
|
|
||||||
|
# Delete log files using shred -u instead of unlink().
|
||||||
|
shred
|
||||||
|
|
||||||
|
# packages drop log rotation information into this directory
|
||||||
|
include /etc/logrotate.d
|
||||||
|
|
||||||
|
# system-specific logs may also be configured here.
|
||||||
|
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=conf
|
||||||
|
EOF
|
||||||
|
|
||||||
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
@@ -13,6 +13,7 @@ set -Ceuo pipefail
|
|||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
export DEBIAN_FRONTEND="noninteractive"
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
apt-get install -y --no-install-recommends apparmor apparmor-utils apparmor-profiles apparmor-profiles-extra
|
apt-get install -y --no-install-recommends apparmor apparmor-utils apparmor-profiles apparmor-profiles-extra
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ XKBOPTIONS=""
|
|||||||
BACKSPACE="guess"
|
BACKSPACE="guess"
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
dpkg-reconfigure -f noninteractive keyboard-configuration
|
dpkg-reconfigure -f noninteractive keyboard-configuration
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
|
|||||||
33
config/hooks/live/0090_jitterentropy.chroot
Normal file
33
config/hooks/live/0090_jitterentropy.chroot
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-10-11; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
set -Ceuo pipefail
|
||||||
|
|
||||||
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
|
apt-get install -y --no-install-recommends jitterentropy-rngd
|
||||||
|
|
||||||
|
cd /root
|
||||||
|
|
||||||
|
mkdir -p /etc/systemd/system/jitterentropy-rngd.service.d
|
||||||
|
|
||||||
|
cat << 'EOF' >> /etc/systemd/system/jitterentropy-rngd.service.d/override.conf
|
||||||
|
[Service]
|
||||||
|
ExecStart=
|
||||||
|
ExecStart=/usr/sbin/jitterentropy-rngd --osr=2
|
||||||
|
EOF
|
||||||
|
|
||||||
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
@@ -12,7 +12,6 @@
|
|||||||
set -Ceuo pipefail
|
set -Ceuo pipefail
|
||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
# sleep 1
|
|
||||||
|
|
||||||
mv /etc/hostname /root/.ciss/dlb/backup/hostname.bak
|
mv /etc/hostname /root/.ciss/dlb/backup/hostname.bak
|
||||||
mv /etc/mailname /root/.ciss/dlb/backup/mailname.bak
|
mv /etc/mailname /root/.ciss/dlb/backup/mailname.bak
|
||||||
@@ -28,7 +27,6 @@ localhost.local
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
# sleep 1
|
|
||||||
|
|
||||||
exit 0
|
exit 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
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
set -Ceuo pipefail
|
set -Ceuo pipefail
|
||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
# sleep 1
|
|
||||||
|
|
||||||
cd /root
|
cd /root
|
||||||
if [[ -f /var/lib/dbus/machine-id ]]; then
|
if [[ -f /var/lib/dbus/machine-id ]]; then
|
||||||
@@ -22,7 +21,7 @@ fi
|
|||||||
cat << 'EOF' >| /var/lib/dbus/machine-id
|
cat << 'EOF' >| /var/lib/dbus/machine-id
|
||||||
b08dfa6083e7567a1921a715000001fb
|
b08dfa6083e7567a1921a715000001fb
|
||||||
EOF
|
EOF
|
||||||
chmod 644 /var/lib/dbus/machine-id
|
chmod 0644 /var/lib/dbus/machine-id
|
||||||
|
|
||||||
if [[ -f /etc/machine-id ]]; then
|
if [[ -f /etc/machine-id ]]; then
|
||||||
rm /etc/machine-id
|
rm /etc/machine-id
|
||||||
@@ -34,7 +33,6 @@ EOF
|
|||||||
chmod 644 /etc/machine-id
|
chmod 644 /etc/machine-id
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
# sleep 1
|
|
||||||
|
|
||||||
exit 0
|
exit 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
|
||||||
|
|||||||
@@ -23,8 +23,9 @@ wget -qO- https://raw.githubusercontent.com/eza-community/eza/main/deb.asc | gpg
|
|||||||
echo "deb [signed-by=/etc/apt/keyrings/gierens.gpg] http://deb.gierens.de stable main" | tee /etc/apt/sources.list.d/gierens.list
|
echo "deb [signed-by=/etc/apt/keyrings/gierens.gpg] http://deb.gierens.de stable main" | tee /etc/apt/sources.list.d/gierens.list
|
||||||
chmod 644 /etc/apt/keyrings/gierens.gpg /etc/apt/sources.list.d/gierens.list
|
chmod 644 /etc/apt/keyrings/gierens.gpg /etc/apt/sources.list.d/gierens.list
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
export DEBIAN_FRONTEND="noninteractive"
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
apt-get update
|
apt-get update -qq
|
||||||
apt-get install -y eza
|
apt-get install -y eza
|
||||||
|
|
||||||
git clone https://github.com/eza-community/eza-themes.git
|
git clone https://github.com/eza-community/eza-themes.git
|
||||||
|
|||||||
@@ -16,8 +16,9 @@ printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "
|
|||||||
curl -fsSL https://packages.cisofy.com/keys/cisofy-software-public.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/cisofy-software-public.gpg
|
curl -fsSL https://packages.cisofy.com/keys/cisofy-software-public.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/cisofy-software-public.gpg
|
||||||
echo "deb [arch=amd64,arm64 signed-by=/etc/apt/trusted.gpg.d/cisofy-software-public.gpg] https://packages.cisofy.com/community/lynis/deb/ stable main" | tee /etc/apt/sources.list.d/cisofy-lynis.list
|
echo "deb [arch=amd64,arm64 signed-by=/etc/apt/trusted.gpg.d/cisofy-software-public.gpg] https://packages.cisofy.com/community/lynis/deb/ stable main" | tee /etc/apt/sources.list.d/cisofy-lynis.list
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
export DEBIAN_FRONTEND="noninteractive"
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
apt-get update
|
apt-get update -qq
|
||||||
apt-get install -y lynis
|
apt-get install -y lynis
|
||||||
lynis show version
|
lynis show version
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "
|
|||||||
|
|
||||||
mkdir -p /var/log/chrony
|
mkdir -p /var/log/chrony
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
export DEBIAN_FRONTEND="noninteractive"
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
export TZ="Etc/UTC"
|
export TZ="Etc/UTC"
|
||||||
|
|
||||||
@@ -50,13 +51,13 @@ log tracking measurements statistics
|
|||||||
|
|
||||||
authselectmode require
|
authselectmode require
|
||||||
|
|
||||||
server ntp.ripe.net iburst nts minpoll 5 maxpoll 9
|
# server ntp.ripe.net iburst nts minpoll 5 maxpoll 9
|
||||||
server ptbtime3.ptb.de iburst nts minpoll 5 maxpoll 9
|
server ptbtime3.ptb.de iburst nts minpoll 5 maxpoll 9
|
||||||
server ptbtime2.ptb.de iburst nts minpoll 5 maxpoll 9
|
server ptbtime2.ptb.de iburst nts minpoll 5 maxpoll 9
|
||||||
server ptbtime1.ptb.de iburst nts minpoll 5 maxpoll 9
|
server ptbtime1.ptb.de iburst nts minpoll 5 maxpoll 9
|
||||||
server ntp13.metas.ch iburst nts minpoll 5 maxpoll 9
|
# server ntp13.metas.ch iburst nts minpoll 5 maxpoll 9
|
||||||
server time-c-b.nist.gov iburst nts minpoll 5 maxpoll 9
|
# server time-c-b.nist.gov iburst nts minpoll 5 maxpoll 9
|
||||||
server sth1.ntp.se iburst nts minpoll 5 maxpoll 9
|
# server sth1.ntp.se iburst nts minpoll 5 maxpoll 9
|
||||||
server ntp0.fau.de iburst nts minpoll 5 maxpoll 9
|
server ntp0.fau.de iburst nts minpoll 5 maxpoll 9
|
||||||
|
|
||||||
leapsectz right/UTC
|
leapsectz right/UTC
|
||||||
@@ -110,6 +111,8 @@ if [[ -e /usr/share/zoneinfo/right/UTC ]]; then
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
chronyd -Q -f /etc/chrony/chrony.conf 2>&1
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ cat << 'EOF' >| "${target_script}"
|
|||||||
@reboot root /usr/local/bin/restart-ssh.sh
|
@reboot root /usr/local/bin/restart-ssh.sh
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
chmod 0644 "${target_script}"
|
chmod 0444 "${target_script}"
|
||||||
|
|
||||||
cat << 'EOF' >| /usr/local/bin/restart-ssh.sh
|
cat << 'EOF' >| /usr/local/bin/restart-ssh.sh
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ set -Ceuo pipefail
|
|||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
export DEBIAN_FRONTEND="noninteractive"
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && \
|
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && \
|
||||||
apt-get install -y nodejs
|
apt-get install -y nodejs
|
||||||
|
|||||||
@@ -12,13 +12,11 @@
|
|||||||
set -Ceuo pipefail
|
set -Ceuo pipefail
|
||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
# sleep 1
|
|
||||||
|
|
||||||
cd /root/git
|
cd /root/git
|
||||||
git clone https://github.com/hardenedlinux/harbian-audit.git
|
git clone https://github.com/hardenedlinux/harbian-audit.git
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
# sleep 1
|
|
||||||
|
|
||||||
exit 0
|
exit 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
|
||||||
|
|||||||
@@ -12,13 +12,11 @@
|
|||||||
set -Ceuo pipefail
|
set -Ceuo pipefail
|
||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
# sleep 1
|
|
||||||
|
|
||||||
cd /root/git
|
cd /root/git
|
||||||
git clone https://github.com/jtesta/ssh-audit.git
|
git clone https://github.com/jtesta/ssh-audit.git
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
sleep 1
|
|
||||||
|
|
||||||
exit 0
|
exit 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
|
||||||
|
|||||||
@@ -12,13 +12,11 @@
|
|||||||
set -Ceuo pipefail
|
set -Ceuo pipefail
|
||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
# sleep 1
|
|
||||||
|
|
||||||
cd /root/git
|
cd /root/git
|
||||||
git clone https://github.com/dnsviz/dnsviz.git
|
git clone https://github.com/dnsviz/dnsviz.git
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
sleep 1
|
|
||||||
|
|
||||||
exit 0
|
exit 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
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ set -Ceuo pipefail
|
|||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
|
|
||||||
SOPS_VER="v3.11.0"
|
SOPS_VER="v3.11.0"
|
||||||
ARCH="$(dpkg --print-architecture)"
|
ARCH="$(dpkg --print-architecture)"
|
||||||
@@ -47,6 +48,16 @@ rm -f "/tmp/sops-${SOPS_VER}.checksums.txt"
|
|||||||
rm -f "/tmp/sops-${SOPS_VER}.checksums.pem"
|
rm -f "/tmp/sops-${SOPS_VER}.checksums.pem"
|
||||||
rm -f "/tmp/sops-${SOPS_VER}.checksums.sig"
|
rm -f "/tmp/sops-${SOPS_VER}.checksums.sig"
|
||||||
|
|
||||||
|
umask 0077
|
||||||
|
|
||||||
|
mkdir -p /root/.config/sops/age
|
||||||
|
|
||||||
|
cat << 'EOF' >| /root/.config/sops/age/keys.txt
|
||||||
|
{{ secrets.CISS_PHYS_AGE }}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod 0400 /root/.config/sops/age/keys.txt
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -13,17 +13,12 @@ set -Ceuo pipefail
|
|||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
export DEBIAN_FRONTEND="noninteractive"
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
apt-get install -y --no-install-recommends haveged
|
|
||||||
|
|
||||||
cd /root
|
wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/local/bin/yq && chmod +x /usr/local/bin/yq
|
||||||
cat << 'EOF' >| /etc/default/haveged
|
|
||||||
# Configuration file for haveged
|
|
||||||
|
|
||||||
# Options to pass to haveged:
|
|
||||||
DAEMON_ARGS="-w 2048 -v 1"
|
|
||||||
EOF
|
|
||||||
|
|
||||||
|
yq --version
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
|
|
||||||
@@ -12,10 +12,9 @@
|
|||||||
set -Ceuo pipefail
|
set -Ceuo pipefail
|
||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
# sleep 1
|
|
||||||
|
|
||||||
declare -r UFW_OUT_POLICY="deny"
|
declare -r UFW_OUT_POLICY="deny"
|
||||||
declare -r SSHPORT="MUST_BE_SET"
|
declare -r SSHPORT="SSHPORT_MUST_BE_SET"
|
||||||
|
|
||||||
ufw --force reset
|
ufw --force reset
|
||||||
|
|
||||||
@@ -51,6 +50,7 @@ if [[ ${UFW_OUT_POLICY,,} == "deny" ]]; then
|
|||||||
ufw allow out 853/udp comment 'Outgoing DoQ'
|
ufw allow out 853/udp comment 'Outgoing DoQ'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
### Allowing ICMP IPv4 outgoing per default.
|
||||||
sed -i "/# ok icmp code for FORWARD/i \# ok icmp codes for OUTPUT" /etc/ufw/before.rules
|
sed -i "/# ok icmp code for FORWARD/i \# ok icmp codes for OUTPUT" /etc/ufw/before.rules
|
||||||
sed -i "/# ok icmp code for FORWARD/i \-A ufw-before-output -p icmp --icmp-type destination-unreachable -j ACCEPT" /etc/ufw/before.rules
|
sed -i "/# ok icmp code for FORWARD/i \-A ufw-before-output -p icmp --icmp-type destination-unreachable -j ACCEPT" /etc/ufw/before.rules
|
||||||
sed -i "/# ok icmp code for FORWARD/i \-A ufw-before-output -p icmp --icmp-type time-exceeded -j ACCEPT" /etc/ufw/before.rules
|
sed -i "/# ok icmp code for FORWARD/i \-A ufw-before-output -p icmp --icmp-type time-exceeded -j ACCEPT" /etc/ufw/before.rules
|
||||||
@@ -61,7 +61,6 @@ sed -i 's/^ENABLED=no/ENABLED=yes/' /etc/ufw/ufw.conf
|
|||||||
ln -sf /lib/systemd/system/ufw.service /etc/systemd/system/multi-user.target.wants/ufw.service
|
ln -sf /lib/systemd/system/ufw.service /etc/systemd/system/multi-user.target.wants/ufw.service
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
# sleep 1
|
|
||||||
|
|
||||||
exit 0
|
exit 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
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ set -Ceuo pipefail
|
|||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
export DEBIAN_FRONTEND="noninteractive"
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
apt-get install -y acct
|
apt-get install -y acct
|
||||||
|
|
||||||
|
|||||||
@@ -1,146 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# SPDX-Version: 3.0
|
|
||||||
# SPDX-CreationInfo: 2025-10-11; WEIDNER, Marc S.; <msw@coresecret.dev>
|
|
||||||
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
|
||||||
set -Ceuo pipefail
|
|
||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
|
||||||
|
|
||||||
cd /root
|
|
||||||
|
|
||||||
cp -u /etc/fail2ban/fail2ban.conf /root/.ciss/dlb/backup/fail2ban.conf.bak
|
|
||||||
chmod 0644 /root/.ciss/dlb/backup/fail2ban.conf.bak
|
|
||||||
|
|
||||||
### https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1024305
|
|
||||||
sed -i 's/#allowipv6 = auto/allowipv6 = auto/1' /etc/fail2ban/fail2ban.conf
|
|
||||||
|
|
||||||
mv /etc/fail2ban/jail.d/defaults-debian.conf /root/.ciss/dlb/backup/defaults-debian.conf.bak
|
|
||||||
chmod 0644 /root/.ciss/dlb/backup/defaults-debian.conf.bak
|
|
||||||
|
|
||||||
cat << 'EOF' >| /etc/fail2ban/jail.d/centurion-default.conf
|
|
||||||
# SPDX-Version: 3.0
|
|
||||||
# SPDX-CreationInfo: 2025-05-05; WEIDNER, Marc S.; <cendev@coresecret.eu>
|
|
||||||
# SPDX-ExternalRef: GIT https://cendev.eu/marc.weidner/CISS.2025.debian.live.builder.git
|
|
||||||
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
|
||||||
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <cendev@coresecret.eu>
|
|
||||||
# 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.live.builder
|
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
|
||||||
|
|
||||||
[DEFAULT]
|
|
||||||
usedns = yes
|
|
||||||
# local | vpn
|
|
||||||
ignoreip = 127.0.0.0/8 ::1 MUST_BE_SET
|
|
||||||
maxretry = 8
|
|
||||||
findtime = 24h
|
|
||||||
bantime = 24h
|
|
||||||
|
|
||||||
### SSH Handling: Foreign IP (not in /etc/hosts.allow): refused to connect: immediate ban [sshd-refused]
|
|
||||||
### Jump host mistyped 1-3 times: no ban, only after four attempts [sshd]
|
|
||||||
|
|
||||||
[sshd]
|
|
||||||
enabled = true
|
|
||||||
backend = systemd
|
|
||||||
filter = sshd
|
|
||||||
mode = normal
|
|
||||||
port = MUST_BE_SET
|
|
||||||
protocol = tcp
|
|
||||||
logpath = /var/log/auth.log
|
|
||||||
maxretry = 4
|
|
||||||
findtime = 24h
|
|
||||||
bantime = 24h
|
|
||||||
|
|
||||||
[sshd-refused]
|
|
||||||
enabled = true
|
|
||||||
filter = sshd-refused
|
|
||||||
port = MUST_BE_SET
|
|
||||||
protocol = tcp
|
|
||||||
logpath = /var/log/auth.log
|
|
||||||
maxretry = 1
|
|
||||||
findtime = 24h
|
|
||||||
bantime = 24h
|
|
||||||
|
|
||||||
# ufw aggressive approach:
|
|
||||||
# Any valid client communicating with our server should be going directly to the service ports opened in ufw (ssh, 80, 443, ...).
|
|
||||||
# Any client touching other ports is treated as malicious and therefore should be blocked access to ALL ports after one attempt.
|
|
||||||
|
|
||||||
[ufw]
|
|
||||||
enabled = true
|
|
||||||
filter = ufw.aggressive
|
|
||||||
action = iptables-allports
|
|
||||||
logpath = /var/log/ufw.log
|
|
||||||
maxretry = 1
|
|
||||||
findtime = 24h
|
|
||||||
bantime = 24h
|
|
||||||
protocol = tcp,udp
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat << EOF >| /etc/fail2ban/filter.d/ufw.aggressive.conf
|
|
||||||
[Definition]
|
|
||||||
failregex = ^.*UFW BLOCK.* SRC=<HOST> .*DPT=\d+ .*
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat << EOF >| /etc/fail2ban/filter.d/sshd-refused.conf
|
|
||||||
[Definition]
|
|
||||||
failregex = ^refused connect from \S+ \(<HOST>\)
|
|
||||||
EOF
|
|
||||||
|
|
||||||
###########################################################################################
|
|
||||||
# Remarks: hardening of fail2ban systemd #
|
|
||||||
###########################################################################################
|
|
||||||
# https://wiki.archlinux.org/title/fail2ban#Service_hardening #
|
|
||||||
# The CapabilityBoundingSet parameters CAP_DAC_READ_SEARCH will allow Fail2ban full read #
|
|
||||||
# access to every directory and file. CAP_NET_ADMIN and CAP_NET_RAW allow Fail2ban to #
|
|
||||||
# operate # on any firewall that has a command-line shell interface. By using #
|
|
||||||
# ProtectSystem=strict the filesystem hierarchy will only be read-only; ReadWritePaths #
|
|
||||||
# allows Fail2ban to have write access on required paths. #
|
|
||||||
###########################################################################################
|
|
||||||
mkdir -p /etc/systemd/system/fail2ban.service.d
|
|
||||||
mkdir /var/log/fail2ban
|
|
||||||
|
|
||||||
cat << 'EOF' >| /etc/systemd/system/fail2ban.service.d/override.conf
|
|
||||||
[Service]
|
|
||||||
PrivateDevices=yes
|
|
||||||
PrivateTmp=yes
|
|
||||||
ProtectHome=read-only
|
|
||||||
ProtectSystem=strict
|
|
||||||
ReadWritePaths=-/var/run/fail2ban
|
|
||||||
ReadWritePaths=-/var/lib/fail2ban
|
|
||||||
ReadWritePaths=-/var/log/fail2ban
|
|
||||||
ReadWritePaths=-/var/spool/postfix/maildrop
|
|
||||||
ReadWritePaths=-/run/xtables.lock
|
|
||||||
CapabilityBoundingSet=CAP_AUDIT_READ CAP_DAC_READ_SEARCH CAP_NET_ADMIN CAP_NET_RAW
|
|
||||||
|
|
||||||
### Added by CISS.debian.live.builder
|
|
||||||
ProtectClock=true
|
|
||||||
ProtectHostname=true
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat << 'EOF' >> /etc/fail2ban/fail2ban.local
|
|
||||||
[Definition]
|
|
||||||
logtarget = /var/log/fail2ban/fail2ban.log
|
|
||||||
EOF
|
|
||||||
|
|
||||||
###########################################################################################
|
|
||||||
# Remarks: Logrotate must be updated either #
|
|
||||||
###########################################################################################
|
|
||||||
cp -a /etc/logrotate.d/fail2ban /root/.ciss/dlb/backup/fail2ban_logrotate.bak
|
|
||||||
sed -i 's/\/var\/log\/fail2ban.log/\/var\/log\/fail2ban\/fail2ban.log/1' /etc/logrotate.d/fail2ban
|
|
||||||
touch /var/log/fail2ban/fail2ban.log
|
|
||||||
chmod 640 /var/log/fail2ban/fail2ban.log
|
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
|
||||||
241
config/hooks/live/9950_hardening_fail2ban.chroot
Normal file
241
config/hooks/live/9950_hardening_fail2ban.chroot
Normal file
@@ -0,0 +1,241 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-10-11; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
set -Ceuo pipefail
|
||||||
|
|
||||||
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
cd /root
|
||||||
|
|
||||||
|
cp -u /etc/fail2ban/fail2ban.conf /root/.ciss/dlb/backup/fail2ban.conf.bak
|
||||||
|
chmod 0400 /root/.ciss/dlb/backup/fail2ban.conf.bak
|
||||||
|
|
||||||
|
### https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1024305
|
||||||
|
sed -i 's/#allowipv6 = auto/allowipv6 = auto/1' /etc/fail2ban/fail2ban.conf
|
||||||
|
|
||||||
|
mv /etc/fail2ban/jail.d/defaults-debian.conf /root/.ciss/dlb/backup/defaults-debian.conf.bak
|
||||||
|
chmod 0400 /root/.ciss/dlb/backup/defaults-debian.conf.bak
|
||||||
|
|
||||||
|
cat << EOF >| /etc/fail2ban/jail.d/ciss-default.conf
|
||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-05-05; WEIDNER, Marc S.; <cendev@coresecret.eu>
|
||||||
|
# SPDX-ExternalRef: GIT https://cendev.eu/marc.weidner/CISS.2025.debian.live.builder.git
|
||||||
|
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
||||||
|
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <cendev@coresecret.eu>
|
||||||
|
# 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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
|
[DEFAULT]
|
||||||
|
banaction = nftables-multiport
|
||||||
|
banaction_allports = nftables-allports
|
||||||
|
dbpurgeage = 384d
|
||||||
|
# 127.0.0.1/8 - IPv4 loopback range (local host)
|
||||||
|
# ::1/128 - IPv6 loopback
|
||||||
|
# fe80::/10 - IPv6 link-local (on-link only; NDP/RA/DAD)
|
||||||
|
# ff00::/8 - IPv6 multicast (not an unicast host)
|
||||||
|
# ::/128 - IPv6 unspecified (all zeros; never a real peer)
|
||||||
|
ignoreip = 127.0.0.1/8 ::1/128 fe80::/10 ff00::/8 ::/128 IGNORE_IP_MUST_BE_SET
|
||||||
|
usedns = yes
|
||||||
|
|
||||||
|
[recidive]
|
||||||
|
enabled = true
|
||||||
|
banaction = nftables[type=custom, family=inet, table=f2b-table, chain=f2b-chain, blocktype=drop]
|
||||||
|
bantime = 8d
|
||||||
|
bantime.increment = true
|
||||||
|
bantime.factor = 1
|
||||||
|
bantime.maxtime = 128d
|
||||||
|
bantime.multipliers = 1 2 4 8 16
|
||||||
|
bantime.overalljails = true
|
||||||
|
bantime.rndtime = 877s
|
||||||
|
filter = recidive
|
||||||
|
findtime = 16d
|
||||||
|
logpath = /var/log/fail2ban/fail2ban.log*
|
||||||
|
maxretry = 3
|
||||||
|
|
||||||
|
### SSH Handling: Foreign IP (not in /etc/hosts.allow): refused to connect: immediate ban [sshd-refused]
|
||||||
|
### Jump host mistyped 1-3 times: no ban, only after four attempts [sshd]
|
||||||
|
|
||||||
|
[sshd]
|
||||||
|
enabled = true
|
||||||
|
backend = systemd
|
||||||
|
bantime = 1h
|
||||||
|
bantime.increment = true
|
||||||
|
bantime.factor = 1
|
||||||
|
bantime.maxtime = 16d
|
||||||
|
bantime.multipliers = 1 2 4 8 16 32 64 128 256 384
|
||||||
|
bantime.overalljails = true
|
||||||
|
bantime.rndtime = 877s
|
||||||
|
filter = sshd
|
||||||
|
findtime = 16m
|
||||||
|
maxretry = 4
|
||||||
|
mode = aggressive
|
||||||
|
port = PORT_MUST_BE_SET
|
||||||
|
protocol = tcp
|
||||||
|
|
||||||
|
[sshd-refused]
|
||||||
|
enabled = true
|
||||||
|
bantime = 1h
|
||||||
|
bantime.increment = true
|
||||||
|
bantime.factor = 1
|
||||||
|
bantime.maxtime = 16d
|
||||||
|
bantime.multipliers = 1 2 4 8 16 32 64 128 256 384
|
||||||
|
bantime.overalljails = true
|
||||||
|
bantime.rndtime = 877s
|
||||||
|
filter = ciss-sshd-refused
|
||||||
|
findtime = 16m
|
||||||
|
logpath = /var/log/auth.log
|
||||||
|
maxretry = 1
|
||||||
|
port = PORT_MUST_BE_SET
|
||||||
|
protocol = tcp
|
||||||
|
|
||||||
|
#
|
||||||
|
# CISS aggressive approach:
|
||||||
|
# Any valid client communicating with our server should be going directly to the service ports opened in ufw (ssh, 80, ...).
|
||||||
|
# Any client touching other ports is treated as malicious and therefore should be blocked access to ALL ports after 1 attempt.
|
||||||
|
#
|
||||||
|
|
||||||
|
[ufw]
|
||||||
|
enabled = true
|
||||||
|
banaction = nftables[type=custom, family=inet, table=f2b-table, chain=f2b-chain, blocktype=drop]
|
||||||
|
bantime = 1h
|
||||||
|
bantime.increment = true
|
||||||
|
bantime.factor = 1
|
||||||
|
bantime.maxtime = 16d
|
||||||
|
bantime.multipliers = 1 2 4 8 16 32 64 128 256 384
|
||||||
|
bantime.overalljails = true
|
||||||
|
bantime.rndtime = 877s
|
||||||
|
filter = ciss-ufw
|
||||||
|
findtime = 16m
|
||||||
|
logpath = /var/log/ufw.log
|
||||||
|
maxretry = 1
|
||||||
|
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=conf
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat << EOF >| /etc/fail2ban/filter.d/ciss-ufw.conf
|
||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-10-18; WEIDNER, Marc S.; <cendev@coresecret.eu>
|
||||||
|
# SPDX-ExternalRef: GIT https://cendev.eu/marc.weidner/CISS.2025.debian.live.builder.git
|
||||||
|
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
||||||
|
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <cendev@coresecret.eu>
|
||||||
|
# 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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
|
[Definition]
|
||||||
|
# Match UFW BLOCK/REJECT with a source IP and *any* port field (SPT or DPT), protocol may be missing.
|
||||||
|
failregex = ^.*UFW (?:BLOCK|REJECT).*?\bSRC=<HOST>\b.*?(?:\bDPT=\d+\b|\bSPT=\d+\b).*$
|
||||||
|
ignoreregex =
|
||||||
|
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=conf
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat << 'EOF' >| /etc/fail2ban/filter.d/ciss-sshd-refused.conf
|
||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-10-18; WEIDNER, Marc S.; <cendev@coresecret.eu>
|
||||||
|
# SPDX-ExternalRef: GIT https://cendev.eu/marc.weidner/CISS.2025.debian.live.builder.git
|
||||||
|
# SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency
|
||||||
|
# SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; <cendev@coresecret.eu>
|
||||||
|
# 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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
|
[Definition]
|
||||||
|
failregex = ^refused connect from \S+ \(<HOST>\)
|
||||||
|
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=conf
|
||||||
|
EOF
|
||||||
|
|
||||||
|
###########################################################################################
|
||||||
|
# Remarks: hardening of fail2ban systemd #
|
||||||
|
###########################################################################################
|
||||||
|
# https://wiki.archlinux.org/title/fail2ban#Service_hardening #
|
||||||
|
# The CapabilityBoundingSet parameters CAP_DAC_READ_SEARCH will allow Fail2ban full read #
|
||||||
|
# access to every directory and file. CAP_NET_ADMIN and CAP_NET_RAW allow Fail2ban to #
|
||||||
|
# operate # on any firewall that has a command-line shell interface. By using #
|
||||||
|
# ProtectSystem=strict the filesystem hierarchy will only be read-only; ReadWritePaths #
|
||||||
|
# allows Fail2ban to have write access on required paths. #
|
||||||
|
###########################################################################################
|
||||||
|
mkdir -p /etc/systemd/system/fail2ban.service.d
|
||||||
|
mkdir -p /var/log/fail2ban
|
||||||
|
|
||||||
|
cat << 'EOF' >| /etc/systemd/system/fail2ban.service.d/override.conf
|
||||||
|
[Service]
|
||||||
|
PrivateDevices=yes
|
||||||
|
PrivateTmp=yes
|
||||||
|
ProtectHome=read-only
|
||||||
|
ProtectSystem=strict
|
||||||
|
ReadWritePaths=-/var/run/fail2ban
|
||||||
|
ReadWritePaths=-/var/lib/fail2ban
|
||||||
|
ReadWritePaths=-/var/log/fail2ban
|
||||||
|
ReadWritePaths=-/var/spool/postfix/maildrop
|
||||||
|
ReadWritePaths=-/run/xtables.lock
|
||||||
|
CapabilityBoundingSet=CAP_AUDIT_READ CAP_DAC_READ_SEARCH CAP_NET_ADMIN CAP_NET_RAW
|
||||||
|
|
||||||
|
### Added by CISS.debian.live.builder
|
||||||
|
ProtectClock=true
|
||||||
|
ProtectHostname=true
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat << 'EOF' >> /etc/fail2ban/fail2ban.local
|
||||||
|
[Definition]
|
||||||
|
logtarget = /var/log/fail2ban/fail2ban.log
|
||||||
|
|
||||||
|
[Database]
|
||||||
|
# Keep entries for at least 384 days to cover recidive findtime.
|
||||||
|
dbpurgeage = 384d
|
||||||
|
EOF
|
||||||
|
|
||||||
|
###########################################################################################
|
||||||
|
# Remarks: Logrotate must be updated either #
|
||||||
|
###########################################################################################
|
||||||
|
cp -a /etc/logrotate.d/fail2ban /root/.ciss/dlb/backup/fail2ban_logrotate.bak
|
||||||
|
cat << EOF >| /etc/logrotate.d/fail2ban
|
||||||
|
/var/log/fail2ban/fail2ban.log {
|
||||||
|
daily
|
||||||
|
rotate 384
|
||||||
|
maxage 384
|
||||||
|
notifempty
|
||||||
|
dateext
|
||||||
|
dateyesterday
|
||||||
|
compress
|
||||||
|
compresscmd /usr/bin/zstd
|
||||||
|
compressext .zst
|
||||||
|
compressoptions -20
|
||||||
|
uncompresscmd /usr/bin/unzstd
|
||||||
|
delaycompress
|
||||||
|
shred
|
||||||
|
missingok
|
||||||
|
postrotate
|
||||||
|
fail2ban-client flushlogs 1>/dev/null
|
||||||
|
endscript
|
||||||
|
# If fail2ban runs as non-root it still needs to have write access
|
||||||
|
# to logfiles.
|
||||||
|
# create 640 fail2ban adm
|
||||||
|
create 640 root adm
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
touch /var/log/fail2ban/fail2ban.log
|
||||||
|
chmod 0640 /var/log/fail2ban/fail2ban.log
|
||||||
|
|
||||||
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
@@ -13,16 +13,19 @@ set -Ceuo pipefail
|
|||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
|
|
||||||
cd /etc
|
cd /etc
|
||||||
|
|
||||||
apt-get purge exim4 exim4-base exim4-config -y
|
apt-get purge exim4 exim4-base exim4-config -y
|
||||||
apt-get autoremove -y
|
apt-get autoremove -y
|
||||||
apt-get autoclean -y
|
apt-get autoclean -y
|
||||||
apt-get autopurge -y
|
apt-get autopurge -y
|
||||||
|
|
||||||
apt-mark hold exim4 exim4-daemon-light exim4-base exim4-config
|
apt-mark hold exim4 exim4-daemon-light exim4-base exim4-config
|
||||||
|
|
||||||
apt-get update
|
apt-get update -qq
|
||||||
apt-get upgrade -y
|
apt-get upgrade -y
|
||||||
|
|
||||||
if [[ -d /etc/exim4 ]]; then
|
if [[ -d /etc/exim4 ]]; then
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ set -Ceuo pipefail
|
|||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
export DEBIAN_FRONTEND="noninteractive"
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
apt-get install -y usbguard
|
apt-get install -y usbguard
|
||||||
|
|
||||||
|
|||||||
@@ -13,13 +13,15 @@ set -Ceuo pipefail
|
|||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
|
|
||||||
export DEBIAN_FRONTEND="noninteractive"
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
|
|
||||||
apt-get update -qq
|
apt-get update -qq
|
||||||
|
|
||||||
apt-get purge -y exim4 exim4-daemon-light exim4-base exim4-config qemu-guest-agent rmail
|
apt-get purge -y exim4 exim4-daemon-light exim4-base exim4-config postfix-mta-sts-resolver postfix qemu-guest-agent rmail
|
||||||
|
|
||||||
apt-mark hold exim4 exim4-daemon-light exim4-base exim4-config qemu-guest-agent rmail
|
apt-mark hold exim4 exim4-daemon-light exim4-base exim4-config postfix-mta-sts-resolver postfix qemu-guest-agent rmail
|
||||||
|
|
||||||
dpkg --get-selections | grep deinstall >| /tmp/deinstall.log || true
|
dpkg --get-selections | grep deinstall >| /tmp/deinstall.log || true
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ set -Ceuo pipefail
|
|||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
export DEBIAN_FRONTEND="noninteractive"
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
apt-get install -y aide > /dev/null 2>&1
|
apt-get install -y aide > /dev/null 2>&1
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "
|
|||||||
|
|
||||||
cd /root
|
cd /root
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
export DEBIAN_FRONTEND="noninteractive"
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
apt-get install -y auditd
|
apt-get install -y auditd
|
||||||
|
|
||||||
@@ -33,22 +34,39 @@ cp -u /etc/audit/auditd.conf /root/.ciss/dlb/backup/auditd.conf.bak
|
|||||||
cp -u /etc/audit/rules.d/audit.rules /root/.ciss/dlb/backup/rules_d_audit.rules.bak
|
cp -u /etc/audit/rules.d/audit.rules /root/.ciss/dlb/backup/rules_d_audit.rules.bak
|
||||||
rm -rf /etc/audit/rules.d/audit.rules
|
rm -rf /etc/audit/rules.d/audit.rules
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/10-base-config.rules
|
############################################################### /etc/audit/rules.d/00-base-config.rules
|
||||||
cat << EOF >| /etc/audit/rules.d/10-base-config.rules
|
cat << EOF >| /etc/audit/rules.d/00-base-config.rules
|
||||||
## First rule - delete all
|
## First rule - delete all
|
||||||
-D
|
-D
|
||||||
|
|
||||||
## Increase the buffers to survive stress events.
|
## Increase the buffers to survive stress events.
|
||||||
## Make this bigger for busy systems
|
## Make this bigger for busy systems.
|
||||||
-b 8192
|
-b 16384
|
||||||
|
|
||||||
## This determine how long to wait in burst of events
|
## Rate Limit. Cap kernel->userspace message rate (0 = unlimited).
|
||||||
--backlog_wait_time 60000
|
-r 200
|
||||||
|
|
||||||
## Set failure mode to syslog
|
## This determine how long to wait in burst of events. How long to wait in bursts (us).
|
||||||
|
--backlog_wait_time 1024
|
||||||
|
|
||||||
|
## Set failure mode to syslog.
|
||||||
-f 1
|
-f 1
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
############################################################### /etc/audit/rules.d/10-ciss-noise-floor.rules
|
||||||
|
cat << EOF >| /etc/audit/rules.d/10-ciss-noise-floor.rules
|
||||||
|
## Ignore kernel/daemon noise without a loginuid (unset = 4294967295).
|
||||||
|
-a never,exit -F auid=4294967295
|
||||||
|
|
||||||
|
## Make privileged exec tracing user-initiated only (no boot-time daemons).
|
||||||
|
-a always,exit -F arch=b64 -S execve -F euid=0 -F auid>=1000 -F auid!=-1 -k exec_root
|
||||||
|
-a always,exit -F arch=b32 -S execve -F euid=0 -F auid>=1000 -F auid!=-1 -k exec_root
|
||||||
|
|
||||||
|
## (Optional, same principle for suid/sgid transitions).
|
||||||
|
-a always,exit -F arch=b64 -S execve -C uid!=euid -F auid>=1000 -F auid!=-1 -k exec_suid_sgid
|
||||||
|
-a always,exit -F arch=b32 -S execve -C uid!=euid -F auid>=1000 -F auid!=-1 -k exec_suid_sgid
|
||||||
|
EOF
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/11-loginuid.rules
|
############################################################### /etc/audit/rules.d/11-loginuid.rules
|
||||||
cat << EOF >| /etc/audit/rules.d/11-loginuid.rules
|
cat << EOF >| /etc/audit/rules.d/11-loginuid.rules
|
||||||
--loginuid-immutable
|
--loginuid-immutable
|
||||||
@@ -91,6 +109,17 @@ cat << EOF >| /etc/audit/rules.d/22-ignore-chrony.rules
|
|||||||
-a never,exit -F arch=b32 -S adjtimex -F auid=unset -F uid=_chrony
|
-a never,exit -F arch=b32 -S adjtimex -F auid=unset -F uid=_chrony
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
############################################################### /etc/audit/rules.d/25-ciss-exec.rules
|
||||||
|
cat << EOF >| /etc/audit/rules.d/25-ciss-exec.rules
|
||||||
|
## Focus on privileged exec, not every user command
|
||||||
|
-a always,exit -F arch=b64 -S execve -F euid=0 -k exec_root
|
||||||
|
-a always,exit -F arch=b32 -S execve -F euid=0 -k exec_root
|
||||||
|
-a always,exit -F arch=b64 -S execve -F exe=/usr/bin/sudo -k exec_sudo
|
||||||
|
-a always,exit -F arch=b32 -S execve -F exe=/usr/bin/sudo -k exec_sudo
|
||||||
|
-a always,exit -F arch=b64 -S execve -C uid!=euid -k exec_suid_sgid
|
||||||
|
-a always,exit -F arch=b32 -S execve -C uid!=euid -k exec_suid_sgid
|
||||||
|
EOF
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/30-ospp-v42-1-create-failed.rules
|
############################################################### /etc/audit/rules.d/30-ospp-v42-1-create-failed.rules
|
||||||
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-1-create-failed.rules
|
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-1-create-failed.rules
|
||||||
## Unsuccessful file creation (open with O_CREAT)
|
## Unsuccessful file creation (open with O_CREAT)
|
||||||
@@ -108,17 +137,6 @@ cat << EOF >| /etc/audit/rules.d/30-ospp-v42-1-create-failed.rules
|
|||||||
-a always,exit -F arch=b64 -S creat -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-create
|
-a always,exit -F arch=b64 -S creat -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-create
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/30-ospp-v42-1-create-success.rules
|
|
||||||
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-1-create-success.rules
|
|
||||||
## Successful file creation (open with O_CREAT)
|
|
||||||
-a always,exit -F arch=b32 -S openat,open_by_handle_at -F a2&0100 -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-create
|
|
||||||
-a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&0100 -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-create
|
|
||||||
-a always,exit -F arch=b32 -S open -F a1&0100 -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-create
|
|
||||||
-a always,exit -F arch=b64 -S open -F a1&0100 -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-create
|
|
||||||
-a always,exit -F arch=b32 -S creat -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-create
|
|
||||||
-a always,exit -F arch=b64 -S creat -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-create
|
|
||||||
EOF
|
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/30-ospp-v42-2-modify-failed.rules
|
############################################################### /etc/audit/rules.d/30-ospp-v42-2-modify-failed.rules
|
||||||
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-2-modify-failed.rules
|
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-2-modify-failed.rules
|
||||||
## Unsuccessful file modifications (open for write or truncate)
|
## Unsuccessful file modifications (open for write or truncate)
|
||||||
@@ -136,17 +154,6 @@ cat << EOF >| /etc/audit/rules.d/30-ospp-v42-2-modify-failed.rules
|
|||||||
-a always,exit -F arch=b64 -S truncate,ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-modification
|
-a always,exit -F arch=b64 -S truncate,ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-modification
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/30-ospp-v42-2-modify-success.rules
|
|
||||||
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-2-modify-success.rules
|
|
||||||
## Successful file modifications (open for write or truncate)
|
|
||||||
-a always,exit -F arch=b32 -S openat,open_by_handle_at -F a2&01003 -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-modification
|
|
||||||
-a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&01003 -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-modification
|
|
||||||
-a always,exit -F arch=b32 -S open -F a1&01003 -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-modification
|
|
||||||
-a always,exit -F arch=b64 -S open -F a1&01003 -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-modification
|
|
||||||
-a always,exit -F arch=b32 -S truncate,ftruncate -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-modification
|
|
||||||
-a always,exit -F arch=b64 -S truncate,ftruncate -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-modification
|
|
||||||
EOF
|
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/30-ospp-v42-3-access-failed.rules
|
############################################################### /etc/audit/rules.d/30-ospp-v42-3-access-failed.rules
|
||||||
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-3-access-failed.rules
|
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-3-access-failed.rules
|
||||||
## Unsuccessful file access (any other opens) This has to go last.
|
## Unsuccessful file access (any other opens) This has to go last.
|
||||||
@@ -156,14 +163,6 @@ cat << EOF >| /etc/audit/rules.d/30-ospp-v42-3-access-failed.rules
|
|||||||
-a always,exit -F arch=b64 -S open,openat,openat2,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-access
|
-a always,exit -F arch=b64 -S open,openat,openat2,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-access
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/30-ospp-v42-3-access-success.rules
|
|
||||||
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-3-access-success.rules
|
|
||||||
## Successful file access (any other opens) This has to go last.
|
|
||||||
## These next two are likely to result in a whole lot of events
|
|
||||||
-a always,exit -F arch=b32 -S open,openat,openat2,open_by_handle_at -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-access
|
|
||||||
-a always,exit -F arch=b64 -S open,openat,openat2,open_by_handle_at -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-access
|
|
||||||
EOF
|
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/30-ospp-v42-4-delete-failed.rules
|
############################################################### /etc/audit/rules.d/30-ospp-v42-4-delete-failed.rules
|
||||||
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-4-delete-failed.rules
|
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-4-delete-failed.rules
|
||||||
## Unsuccessful file delete
|
## Unsuccessful file delete
|
||||||
@@ -173,13 +172,6 @@ cat << EOF >| /etc/audit/rules.d/30-ospp-v42-4-delete-failed.rules
|
|||||||
-a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-delete
|
-a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-delete
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/30-ospp-v42-4-delete-success.rules
|
|
||||||
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-4-delete-success.rules
|
|
||||||
## Successful file delete
|
|
||||||
-a always,exit -F arch=b32 -S unlink,unlinkat,rename,renameat -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-delete
|
|
||||||
-a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-delete
|
|
||||||
EOF
|
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/30-ospp-v42-5-perm-change-failed.rules
|
############################################################### /etc/audit/rules.d/30-ospp-v42-5-perm-change-failed.rules
|
||||||
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-5-perm-change-failed.rules
|
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-5-perm-change-failed.rules
|
||||||
## Unsuccessful permission change
|
## Unsuccessful permission change
|
||||||
@@ -189,13 +181,6 @@ cat << EOF >| /etc/audit/rules.d/30-ospp-v42-5-perm-change-failed.rules
|
|||||||
-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat,setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-perm-change
|
-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat,setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-perm-change
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/30-ospp-v42-5-perm-change-success.rules
|
|
||||||
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-5-perm-change-success.rules
|
|
||||||
## Successful permission change
|
|
||||||
-a always,exit -F arch=b32 -S chmod,fchmod,fchmodat,setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-perm-change
|
|
||||||
-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat,setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-perm-change
|
|
||||||
EOF
|
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/30-ospp-v42-6-owner-change-failed.rules
|
############################################################### /etc/audit/rules.d/30-ospp-v42-6-owner-change-failed.rules
|
||||||
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-6-owner-change-failed.rules
|
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-6-owner-change-failed.rules
|
||||||
## Unsuccessful ownership change
|
## Unsuccessful ownership change
|
||||||
@@ -205,13 +190,6 @@ cat << EOF >| /etc/audit/rules.d/30-ospp-v42-6-owner-change-failed.rules
|
|||||||
-a always,exit -F arch=b64 -S lchown,fchown,chown,fchownat -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-owner-change
|
-a always,exit -F arch=b64 -S lchown,fchown,chown,fchownat -F exit=-EPERM -F auid>=1000 -F auid!=unset -F key=unsuccessful-owner-change
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/30-ospp-v42-6-owner-change-success.rules
|
|
||||||
cat << EOF >| /etc/audit/rules.d/30-ospp-v42-6-owner-change-success.rules
|
|
||||||
## Successful ownership change
|
|
||||||
-a always,exit -F arch=b32 -S lchown,fchown,chown,fchownat -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-owner-change
|
|
||||||
-a always,exit -F arch=b64 -S lchown,fchown,chown,fchownat -F success=1 -F auid>=1000 -F auid!=unset -F key=successful-owner-change
|
|
||||||
EOF
|
|
||||||
|
|
||||||
############################################################### /etc/audit/rules.d/30-ospp-v42.rules
|
############################################################### /etc/audit/rules.d/30-ospp-v42.rules
|
||||||
cat << EOF >| /etc/audit/rules.d/30-ospp-v42.rules
|
cat << EOF >| /etc/audit/rules.d/30-ospp-v42.rules
|
||||||
## The purpose of these rules is to meet the requirements for Operating
|
## The purpose of these rules is to meet the requirements for Operating
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "
|
|||||||
|
|
||||||
cd /root
|
cd /root
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
export DEBIAN_FRONTEND="noninteractive"
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
apt-get install -y --no-install-recommends debsums
|
apt-get install -y --no-install-recommends debsums
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ deb-src https://deb.debian.org/debian/ bookworm-backports main contrib non-free
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
# sleep 1
|
|
||||||
|
|
||||||
exit 0
|
exit 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
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ set -Ceuo pipefail
|
|||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
|
|
||||||
# shellcheck disable=SC2155
|
# shellcheck disable=SC2155
|
||||||
declare -r VAR_DATE="$(date +%F)"
|
declare -r VAR_DATE="$(date +%F)"
|
||||||
|
|
||||||
@@ -121,6 +124,11 @@ Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
|||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
apt-get update -qq
|
||||||
|
apt-get dist-upgrade -y # (= apt full-upgrade) allow installs/replacements/removals.
|
||||||
|
apt-get autoremove --purge -y # 'autopurge' == 'autoremove --purge'.
|
||||||
|
apt-get clean -y # Stronger than autoclean: removes the entire '.deb'-cache.
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
66
config/hooks/live/9999_yyyy_logrotate.chroot
Normal file
66
config/hooks/live/9999_yyyy_logrotate.chroot
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-10-11; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
set -Ceuo pipefail
|
||||||
|
|
||||||
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
### Declare Arrays, HashMaps, and Variables.
|
||||||
|
declare -ar ary_logrotate=(
|
||||||
|
"alternatives"
|
||||||
|
"apt"
|
||||||
|
"btmp"
|
||||||
|
"chrony"
|
||||||
|
"clamav-daemon"
|
||||||
|
"clamav-freshclam"
|
||||||
|
"dpkg"
|
||||||
|
"fail2ban"
|
||||||
|
"rkhunter"
|
||||||
|
"rsnapshot"
|
||||||
|
"rsyslog"
|
||||||
|
"ufw"
|
||||||
|
"unattended-upgrades"
|
||||||
|
"usbguard"
|
||||||
|
"wtmp"
|
||||||
|
)
|
||||||
|
|
||||||
|
declare var_file="" var_log=""
|
||||||
|
[[ -r /root/ciss_xdg_tmp.sh ]] && . /root/ciss_xdg_tmp.sh
|
||||||
|
export DEBIAN_FRONTEND="noninteractive"
|
||||||
|
|
||||||
|
for var_log in "${ary_logrotate[@]}"; do
|
||||||
|
|
||||||
|
var_file="/etc/logrotate.d/${var_log}"
|
||||||
|
|
||||||
|
[[ -e "${var_file}" ]] || continue
|
||||||
|
|
||||||
|
### Replace leading 'monthly'/'weekly' directives with 'daily', preserving indentation and trailing comments.
|
||||||
|
sed -E -i \
|
||||||
|
-e 's/^([[:space:]]*)(monthly|weekly)([[:space:]]*)(#.*)?$/\1daily\3\4/' \
|
||||||
|
-e 's/^([[:space:]]*)rotate([[:space:]]+[0-9]+)?([[:space:]]*)(#.*)?$/\1rotate 90\3\4/' \
|
||||||
|
"${var_file}"
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
if ! logrotate -d /etc/logrotate.conf; then
|
||||||
|
|
||||||
|
printf "\e[91m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ 'logrotate -d /etc/logrotate.conf' failed. \e[0m\n"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ 'logrotate -d /etc/logrotate.conf' successful. \e[0m\n"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
81
config/hooks/live/9999_zzzz.chroot
Normal file
81
config/hooks/live/9999_zzzz.chroot
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-10-11; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
set -Ceuo pipefail
|
||||||
|
|
||||||
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 '%s' starting ... \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
declare var_dm="" var_unit_dir="" var_link="/etc/systemd/system/default.target"
|
||||||
|
|
||||||
|
### Determine the canonical systemd unit dir inside chroot.
|
||||||
|
if [[ -d /lib/systemd/system ]]; then
|
||||||
|
|
||||||
|
var_unit_dir=/lib/systemd/system
|
||||||
|
|
||||||
|
elif [[ -d /usr/lib/systemd/system ]]; then
|
||||||
|
|
||||||
|
var_unit_dir=/usr/lib/systemd/system
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
### Enforce 'default.target' -> 'multi-user.target' as a symlink.
|
||||||
|
if [[ -e "${var_link}" ]] && [[ ! -L "${var_link}" ]]; then
|
||||||
|
|
||||||
|
### A regular file here is wrong; we remove it to avoid vendor fallback to graphical.
|
||||||
|
rm -f -- "${var_link}"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -L "${var_link}" ]]; then
|
||||||
|
|
||||||
|
ln -s "${var_unit_dir}/multi-user.target" "${var_link}"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
### Ensure it points to multi-user.
|
||||||
|
# shellcheck disable=SC2312
|
||||||
|
if [[ "$(readlink -f "${var_link}")" != "${var_unit_dir}/multi-user.target" ]]; then
|
||||||
|
|
||||||
|
rm -f -- "${var_link}"
|
||||||
|
ln -s "${var_unit_dir}/multi-user.target" "${var_link}"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
### Hard-block any display manager (mask via /dev/null symlink). Include common DMs, and the generic alias:
|
||||||
|
ary_dm_units=(
|
||||||
|
"display-manager.service"
|
||||||
|
"gdm.service"
|
||||||
|
"gdm3.service"
|
||||||
|
"sddm.service"
|
||||||
|
"lightdm.service"
|
||||||
|
"xdm.service"
|
||||||
|
"lxdm.service"
|
||||||
|
"slim.service"
|
||||||
|
)
|
||||||
|
|
||||||
|
for var_dm in "${ary_dm_units[@]}"; do
|
||||||
|
|
||||||
|
if [[ ! -L "/etc/systemd/system/${var_dm}" ]]; then
|
||||||
|
|
||||||
|
ln -s /dev/null "/etc/systemd/system/${var_dm}"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -f /root/ciss_xdg_tmp.sh
|
||||||
|
|
||||||
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ '%s' applied successfully. \e[0m\n" "${0}"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
10
config/hooks/normal/.keep
Normal file
10
config/hooks/normal/.keep
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-10-26; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
@@ -93,6 +93,7 @@ TTYPERM 0600
|
|||||||
#
|
#
|
||||||
ERASECHAR 0177
|
ERASECHAR 0177
|
||||||
KILLCHAR 025
|
KILLCHAR 025
|
||||||
|
UMASK 077
|
||||||
|
|
||||||
# HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new
|
# HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new
|
||||||
# home directories.
|
# home directories.
|
||||||
@@ -203,7 +204,9 @@ NONEXISTENT /nonexistent
|
|||||||
USERGROUPS_ENAB yes
|
USERGROUPS_ENAB yes
|
||||||
|
|
||||||
#
|
#
|
||||||
# Added by CISS.debian.live.builder for redundance
|
# Added by CISS.debian.live.builder for redundancy
|
||||||
UMASK 077
|
UMASK 027
|
||||||
|
SHA_CRYPT_MIN_ROUNDS 8388608
|
||||||
|
SHA_CRYPT_MAX_ROUNDS 8388608
|
||||||
|
|
||||||
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=conf
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=conf
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# Version Master V8.13.142.2025.10.14
|
# Version Master V8.13.294.2025.10.28
|
||||||
|
|
||||||
[git.coresecret.dev]:42842 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGQA107AVmg1D/jnyXiqbPf38zQRl8s3c+PM1zbfpeQl
|
[git.coresecret.dev]:42842 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGQA107AVmg1D/jnyXiqbPf38zQRl8s3c+PM1zbfpeQl
|
||||||
[git.coresecret.dev]:42842 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDYD9ysmMWZlejUnxu0qOzeWcIYezoFLbYdo6ffGUL5kqOBAYb+5CF4bJLUpA93XFYVF+TbrcMV1yJh6JaHFL0VU5CvgAzruCeedx0c4qUV6lWcJUGNk5K0yb9n2Wosdy6F/zTOxL9KXBt/TV+cscsen2Dahvx0ctMKgNbu+vvUcWxHf9lOkbYoF/uA/nW5CVXy5XUPVUDFUhEeKXL85+6gid5AEMfYT8aRl5YDGvo1iMBmBYOljN4S7MnRe14qbAZG0GDGvF22eHbSU2pILcFIjc2Lo/S5Ox/MJpbLAqpFlLPTKgr6F7yVwfNMSNwl05ysUOZfrQKSXzCU6+lfqKYCwemLALyG/n1ernpp7/8W/2RYoz3fd+TQyfhW++rx3yUHpYCkTv9A4LRYZYGSAWKMHSBEYq3EcATQUxQi0xpwmcR+u0uC9F9eta5Bim+sBZD6F2hgPJ5xgYT8LFm880g1YadAwBoD4TAkqSvl+jYW0VA2GH9CknKHJ36gc/X4eeUHDC1Hf/E8M5RBj4D6NuHfeVRik/ahHmoCqKQUW7VU/EBsWFsngDiLEHcV71iMtWiUddWOHwoAPHIzn6p9HTeLCxTwsPMG5UDGK/S9HUozqDXxexRtqbcFa7DWuzRvZ1bcZ2VQsaafuzKCkkc4NjC7h1wssel7q9aeYPFg+1vS6Q==
|
[git.coresecret.dev]:42842 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDYD9ysmMWZlejUnxu0qOzeWcIYezoFLbYdo6ffGUL5kqOBAYb+5CF4bJLUpA93XFYVF+TbrcMV1yJh6JaHFL0VU5CvgAzruCeedx0c4qUV6lWcJUGNk5K0yb9n2Wosdy6F/zTOxL9KXBt/TV+cscsen2Dahvx0ctMKgNbu+vvUcWxHf9lOkbYoF/uA/nW5CVXy5XUPVUDFUhEeKXL85+6gid5AEMfYT8aRl5YDGvo1iMBmBYOljN4S7MnRe14qbAZG0GDGvF22eHbSU2pILcFIjc2Lo/S5Ox/MJpbLAqpFlLPTKgr6F7yVwfNMSNwl05ysUOZfrQKSXzCU6+lfqKYCwemLALyG/n1ernpp7/8W/2RYoz3fd+TQyfhW++rx3yUHpYCkTv9A4LRYZYGSAWKMHSBEYq3EcATQUxQi0xpwmcR+u0uC9F9eta5Bim+sBZD6F2hgPJ5xgYT8LFm880g1YadAwBoD4TAkqSvl+jYW0VA2GH9CknKHJ36gc/X4eeUHDC1Hf/E8M5RBj4D6NuHfeVRik/ahHmoCqKQUW7VU/EBsWFsngDiLEHcV71iMtWiUddWOHwoAPHIzn6p9HTeLCxTwsPMG5UDGK/S9HUozqDXxexRtqbcFa7DWuzRvZ1bcZ2VQsaafuzKCkkc4NjC7h1wssel7q9aeYPFg+1vS6Q==
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# Version Master V8.13.142.2025.10.14
|
# Version Master V8.13.294.2025.10.28
|
||||||
|
|
||||||
### 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
|
||||||
@@ -28,7 +28,7 @@ LogLevel VERBOSE
|
|||||||
AddressFamily any
|
AddressFamily any
|
||||||
ListenAddress 0.0.0.0
|
ListenAddress 0.0.0.0
|
||||||
ListenAddress ::
|
ListenAddress ::
|
||||||
Port MUST_BE_CHANGED
|
PORT_MUST_BE_CHANGED
|
||||||
AllowUsers root
|
AllowUsers root
|
||||||
UseDNS no
|
UseDNS no
|
||||||
### Force a key exchange after transferring 1 GiB of data or 1 hour of session time, whichever occurs first.
|
### Force a key exchange after transferring 1 GiB of data or 1 hour of session time, whichever occurs first.
|
||||||
@@ -46,9 +46,9 @@ StrictModes yes
|
|||||||
LoginGraceTime 2m
|
LoginGraceTime 2m
|
||||||
MaxAuthTries 3
|
MaxAuthTries 3
|
||||||
MaxSessions 2
|
MaxSessions 2
|
||||||
### Begin randomly dropping new unauthenticated connections after the 8th attempt,
|
### Begin randomly dropping new unauthenticated connections after the 2nd attempt,
|
||||||
### with a 64% chance to drop each additional connection, up to a hard limit of 16.
|
### with a 64% chance to drop each additional connection, up to a hard limit of 08.
|
||||||
MaxStartups 08:64:16
|
MaxStartups 02:64:08
|
||||||
### Restrict each individual source IP to only 4 unauthenticated connection slot
|
### Restrict each individual source IP to only 4 unauthenticated connection slot
|
||||||
### in the concurrent MaxStartups pool, preventing one IP from monopolizing slots.
|
### in the concurrent MaxStartups pool, preventing one IP from monopolizing slots.
|
||||||
PerSourceMaxStartups 8
|
PerSourceMaxStartups 8
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
# Version Master V8.13.142.2025.10.14
|
# Version Master V8.13.294.2025.10.28
|
||||||
|
|
||||||
### https://docs.kernel.org/
|
### https://docs.kernel.org/
|
||||||
### https://github.com/a13xp0p0v/kernel-hardening-checker/
|
### https://github.com/a13xp0p0v/kernel-hardening-checker/
|
||||||
@@ -280,15 +280,6 @@ net.ipv4.conf.all.forwarding=0
|
|||||||
net.ipv6.conf.all.accept_ra=0
|
net.ipv6.conf.all.accept_ra=0
|
||||||
net.ipv6.conf.default.accept_ra=0
|
net.ipv6.conf.default.accept_ra=0
|
||||||
|
|
||||||
###########################################################################################
|
|
||||||
# These parameters relate to secure ICMP redirects. ICMP redirects are messages that a
|
|
||||||
# router sends to a device to inform it that there is a better route for the data traffic.
|
|
||||||
# This setting prevents the system from responding to redirects that have been spoofed by
|
|
||||||
# potential attackers to redirect traffic (e.g., for man-in-the-middle attacks).
|
|
||||||
###########################################################################################
|
|
||||||
net.ipv4.conf.all.secure_redirects=1
|
|
||||||
net.ipv4.conf.default.secure_redirects=1
|
|
||||||
|
|
||||||
###########################################################################################
|
###########################################################################################
|
||||||
# This setting prevents the disclosure of TCP timestamps that can be used for system
|
# This setting prevents the disclosure of TCP timestamps that can be used for system
|
||||||
# fingerprinting:
|
# fingerprinting:
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
declare -gr VERSION="Master V8.13.142.2025.10.14"
|
declare -gr VERSION="Master V8.13.294.2025.10.28"
|
||||||
|
|
||||||
### VERY EARLY CHECK FOR DEBUGGING
|
### VERY EARLY CHECK FOR DEBUGGING
|
||||||
if [[ $* == *" --debug "* ]]; then
|
if [[ $* == *" --debug "* ]]; then
|
||||||
|
|||||||
@@ -112,4 +112,4 @@ d-i preseed/late_command string sh /preseed/.ash/3_di_preseed_late_command.sh
|
|||||||
|
|
||||||
# Please consider donating to my work at: https://coresecret.eu/spenden/
|
# Please consider donating to my work at: https://coresecret.eu/spenden/
|
||||||
###########################################################################################
|
###########################################################################################
|
||||||
# Written by: ./preseed_hash_generator.sh Version: Master V8.13.142.2025.10.14 at: 10:18:37.9542
|
# Written by: ./preseed_hash_generator.sh Version: Master V8.13.294.2025.10.28 at: 10:18:37.9542
|
||||||
|
|||||||
@@ -14,21 +14,45 @@
|
|||||||
### Never use 'errexit' | 'nounset' | 'pipefail' in interactive shells.
|
### Never use 'errexit' | 'nounset' | 'pipefail' in interactive shells.
|
||||||
set +o errexit +o nounset +o pipefail
|
set +o errexit +o nounset +o pipefail
|
||||||
|
|
||||||
|
# shellcheck disable=SC2312
|
||||||
|
if [[ "$(id -u)" -eq 0 ]]; then
|
||||||
|
umask 0022
|
||||||
|
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
|
else
|
||||||
|
umask 0077
|
||||||
|
PATH="/usr/local/bin:/usr/bin:/bin"
|
||||||
|
fi
|
||||||
|
export PATH
|
||||||
|
|
||||||
trap ' "${SHELL}" /root/.ciss/clean_logout.sh ' EXIT
|
trap ' "${SHELL}" /root/.ciss/clean_logout.sh ' EXIT
|
||||||
source /root/.ciss/alias
|
source /root/.ciss/alias
|
||||||
source /root/.ciss/f2bchk.sh
|
source /root/.ciss/f2bchk.sh
|
||||||
source /root/.ciss/shortcuts
|
source /root/.ciss/shortcuts
|
||||||
source /root/.ciss/scan_libwrap
|
source /root/.ciss/scan_libwrap
|
||||||
|
|
||||||
### History
|
### Preferred editor for local and remote sessions.
|
||||||
touch /tmp/.bash_history
|
export EDITOR="nano"
|
||||||
chmod 0660 /tmp/.bash_history
|
|
||||||
chown root:root /tmp/.bash_history
|
### History-Settings
|
||||||
export HISTFILE=/tmp/.bash_history
|
# The name of the file in which command history is saved. The default value is ~/.bash_history. If unset, the command history
|
||||||
|
# is not saved when a shell exits.
|
||||||
|
export HISTFILE="${XDG_STATE_HOME}/bash/history"
|
||||||
|
|
||||||
|
touch "${HISTFILE}"
|
||||||
|
chmod 0660 "${HISTFILE}"
|
||||||
|
chown root:root "${HISTFILE}"
|
||||||
|
|
||||||
export HISTSIZE=2048
|
export HISTSIZE=2048
|
||||||
export HISTFILESIZE=2048
|
export HISTFILESIZE=2048
|
||||||
shopt -s histappend
|
shopt -s histappend
|
||||||
|
|
||||||
|
# Optional, cautious filters (avoids trivial leaks, but not foolproof). Caution: HISTIGNORE is coarse-grained, don't overdo it.
|
||||||
|
export HISTIGNORE='*PASS*:*pass*:*secret*:*token*:*API_KEY*'
|
||||||
|
|
||||||
|
# -'ignoreboth' Do not put duplicate lines or lines starting with space in the history.
|
||||||
|
# -'erasedups' Causes all previous lines matching the current line to be removed from the history before that line is saved.
|
||||||
|
export HISTCONTROL='ignoreboth:erasedups'
|
||||||
|
|
||||||
### Define colors for bash prompt
|
### Define colors for bash prompt
|
||||||
export CRED='\033[1;91m'
|
export CRED='\033[1;91m'
|
||||||
export CGRE='\033[1;92m'
|
export CGRE='\033[1;92m'
|
||||||
|
|||||||
@@ -10,9 +10,6 @@
|
|||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
########################################################################################### Alpha
|
|
||||||
alias genkeyfile='haveged -n 1048576 >| /tmp/secure_keyfile_$(date +%s)'
|
|
||||||
|
|
||||||
########################################################################################### Bash
|
########################################################################################### Bash
|
||||||
alias clear="printf '\033c'"
|
alias clear="printf '\033c'"
|
||||||
alias c='clear'
|
alias c='clear'
|
||||||
@@ -239,7 +236,31 @@ sysp() {
|
|||||||
#######################################
|
#######################################
|
||||||
trel() {
|
trel() {
|
||||||
declare depth=${1:-3}
|
declare depth=${1:-3}
|
||||||
tree -C -h --dirsfirst -L "${depth}"
|
|
||||||
|
if ! [[ "${depth}" =~ ^[0-9]+$ ]]; then
|
||||||
|
echo "Error: '${depth}' is not a valid depth. Please provide a positive integer." >&2
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v eza >/dev/null 2>&1; then
|
||||||
|
echo "Error: 'eza' is not installed." >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
(( $# > 0 )) && shift
|
||||||
|
|
||||||
|
eza --tree \
|
||||||
|
--level="${depth}" \
|
||||||
|
--group-directories-first \
|
||||||
|
--icons=auto \
|
||||||
|
--color=always \
|
||||||
|
--long \
|
||||||
|
--no-permissions \
|
||||||
|
--no-user \
|
||||||
|
--no-time \
|
||||||
|
"$@"
|
||||||
|
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ set -Ceuo pipefail
|
|||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
# Minimal leap-second probe for Debian/chrony systems.
|
# Minimal leap-second probe for Debian/chrony systems.
|
||||||
# - Prints kernel leap flags & TAI offset (ΔAT).
|
# - Prints kernel leap flags & TAI offset (delta AT).
|
||||||
# - Reads tzdata's leap-seconds list (authoritative TAI-UTC).
|
# - Reads tzdata's leap-seconds list (authoritative TAI-UTC).
|
||||||
# - Shows chrony tracking summary (incl. leap status).
|
# - Shows chrony tracking summary (incl. leap status).
|
||||||
# - Demonstrates 23:59:60 rendering via TZ=right/UTC.
|
# - Demonstrates 23:59:60 rendering via TZ=right/UTC.
|
||||||
@@ -38,7 +38,7 @@ main() {
|
|||||||
tz_tai="$(awk '{print $2}' <<<"${tz_leap_line}")"
|
tz_tai="$(awk '{print $2}' <<<"${tz_leap_line}")"
|
||||||
ts_human="$(awk -F'#' '{gsub(/^[[:space:]]+/, "", $2); print $2}' <<<"${tz_leap_line}")"
|
ts_human="$(awk -F'#' '{gsub(/^[[:space:]]+/, "", $2); print $2}' <<<"${tz_leap_line}")"
|
||||||
|
|
||||||
printf "tzdata ΔAT (TAI-UTC): %s s [last change at: %s; NTP ts: %s]\n\n" "${tz_tai:-?}" "${ts_human:-?}" "${tz_ntp:-?}"
|
printf "tzdata delta AT (TAI-UTC): %s s [last change at: %s; NTP ts: %s]\n\n" "${tz_tai:-?}" "${ts_human:-?}" "${tz_ntp:-?}"
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ main() {
|
|||||||
|
|
||||||
if [[ -n "${k_tai:-}" ]]; then
|
if [[ -n "${k_tai:-}" ]]; then
|
||||||
|
|
||||||
printf "Kernel-exported ΔAT [tai]: %s s\n" "${k_tai}"
|
printf "Kernel-exported delta AT [tai]: %s s\n" "${k_tai}"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -96,8 +96,8 @@ main() {
|
|||||||
printf "\n"
|
printf "\n"
|
||||||
printf "Hint:\n"
|
printf "Hint:\n"
|
||||||
|
|
||||||
printf " • ΔAT (TAI-UTC) should match tzdata and kernel (chrony sets kernel TAI if leapsectz/leapseclist is used).\n"
|
printf " - delta AT (TAI-UTC) should match tzdata and kernel (chrony sets kernel TAI if leapsectz/leapseclist is used).\n"
|
||||||
printf " • For monotonic intervals, apps must use CLOCK_MONOTONIC, not CLOCK_REALTIME.\n"
|
printf " - For monotonic intervals, apps must use CLOCK_MONOTONIC, not CLOCK_REALTIME.\n"
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ declare -ga shortcuts=(
|
|||||||
"f2bubn: f2b unban --all"
|
"f2bubn: f2b unban --all"
|
||||||
"f2bufw: f2b status ufw"
|
"f2bufw: f2b status ufw"
|
||||||
"free: free -m"
|
"free: free -m"
|
||||||
"genkeyfile: 1MiBi"
|
|
||||||
"genpasswd: PWD"
|
"genpasswd: PWD"
|
||||||
"genpasswdhash: PWD Hash"
|
"genpasswdhash: PWD Hash"
|
||||||
"genstring: Random String"
|
"genstring: Random String"
|
||||||
|
|||||||
27
config/includes.chroot/root/.zshenv
Normal file
27
config/includes.chroot/root/.zshenv
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-10-19; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
|
: "${XDG_CONFIG_HOME:=${HOME}/.config}"
|
||||||
|
: "${XDG_CACHE_HOME:=${HOME}/.cache}"
|
||||||
|
: "${XDG_DATA_HOME:=${HOME}/.local/share}"
|
||||||
|
: "${XDG_STATE_HOME:=${HOME}/.local/state}"
|
||||||
|
|
||||||
|
# Do NOT set XDG_RUNTIME_DIR here.
|
||||||
|
|
||||||
|
export XDG_CONFIG_HOME XDG_CACHE_HOME XDG_DATA_HOME XDG_STATE_HOME
|
||||||
|
|
||||||
|
### Zsh history -> XDG_STATE_HOME (best-effort; zsh might not read /etc/profile)
|
||||||
|
if [ "${ENABLE_XDG_ZSH_HISTORY:-1}" = "1" ] && [ -n "${ZSH_VERSION:-}" ]; then
|
||||||
|
[ -d "${XDG_STATE_HOME}/zsh" ] || install -d -m 0700 -- "${XDG_STATE_HOME}/zsh"
|
||||||
|
export HISTFILE="${XDG_STATE_HOME}/zsh/history"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
@@ -8,5 +8,7 @@
|
|||||||
# SPDX-LicenseComment: This file is part of the CISS.debian.installer.secure framework.
|
# SPDX-LicenseComment: This file is part of the CISS.debian.installer.secure framework.
|
||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
grub-efi-amd64-signed
|
grub-efi-amd64-signed
|
||||||
|
|
||||||
# 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
|
||||||
@@ -8,5 +8,7 @@
|
|||||||
# SPDX-LicenseComment: This file is part of the CISS.debian.installer.secure framework.
|
# SPDX-LicenseComment: This file is part of the CISS.debian.installer.secure framework.
|
||||||
# SPDX-PackageName: CISS.debian.live.builder
|
# SPDX-PackageName: CISS.debian.live.builder
|
||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
grub-efi-arm64-signed
|
grub-efi-arm64-signed
|
||||||
|
|
||||||
# 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
|
||||||
@@ -67,11 +67,11 @@ gawk
|
|||||||
gdisk
|
gdisk
|
||||||
git
|
git
|
||||||
gnupg
|
gnupg
|
||||||
haveged
|
|
||||||
htop
|
htop
|
||||||
iftop
|
iftop
|
||||||
iproute2
|
iproute2
|
||||||
iputils-ping
|
iputils-ping
|
||||||
|
jitterentropy-rngd
|
||||||
jq
|
jq
|
||||||
keyboard-configuration
|
keyboard-configuration
|
||||||
keychain
|
keychain
|
||||||
@@ -83,7 +83,7 @@ libpwquality-tools
|
|||||||
libtomcrypt-dev
|
libtomcrypt-dev
|
||||||
libtommath-dev
|
libtommath-dev
|
||||||
libtool
|
libtool
|
||||||
linux-doc-6.12
|
linux-doc-6.16
|
||||||
linux-source
|
linux-source
|
||||||
live-boot
|
live-boot
|
||||||
live-config
|
live-config
|
||||||
@@ -146,7 +146,6 @@ whois
|
|||||||
wngerman
|
wngerman
|
||||||
xfsprogs
|
xfsprogs
|
||||||
xz-utils
|
xz-utils
|
||||||
yq
|
|
||||||
zip
|
zip
|
||||||
zsh
|
zsh
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2. DNSSEC Status
|
# 2. DNSSEC Status
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2. Haveged Audit on Netcup RS 2000 G11
|
# 2. Haveged Audit on Netcup RS 2000 G11
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2. Lynis Audit:
|
# 2. Lynis Audit:
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2. SSH Audit by ssh-audit.com
|
# 2. SSH Audit by ssh-audit.com
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2. TLS Audit:
|
# 2. TLS Audit:
|
||||||
````text
|
````text
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2. Hardened Kernel Boot Parameters
|
# 2. Hardened Kernel Boot Parameters
|
||||||
|
|
||||||
|
|||||||
@@ -8,18 +8,87 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2. Changelog
|
# 2. Changelog
|
||||||
|
|
||||||
|
## V8.13.294.2025.10.28
|
||||||
|
* **Added**: [lib_lb_config_write_trixie.sh](../lib/lib_lb_config_write_trixie.sh) + mksquashfs-excludes
|
||||||
|
* **Added**: [lib_ciss_upgrades.sh](../lib/lib_ciss_upgrades.sh) + modifies '/usr/lib/live/build/...' scripts
|
||||||
|
* **Added**: [lib_update_microcode.sh](../lib/lib_update_microcode.sh)
|
||||||
|
* **Added**: [binary_rootfs.sh](../scripts/usr/lib/live/build/binary_rootfs.sh) + modifies binary_rootfs script
|
||||||
|
* **Updated**: [generate_PRIVATE_trixie_1.yaml](../.gitea/workflows/generate_PRIVATE_trixie_1.yaml) + --sshfp
|
||||||
|
* **Updated**: [0001_initramfs_modules.chroot](../config/hooks/live/0001_initramfs_modules.chroot) + update_initramfs=all COMPRESSLEVEL=10
|
||||||
|
* **Updated**: [0007_update_logrotate.chroot](../config/hooks/live/0007_update_logrotate.chroot) = rotate 90; maxage 90
|
||||||
|
* **Updated**: [9999_yyyy_logrotate.chroot](../config/hooks/live/9999_yyyy_logrotate.chroot) = rotate 90
|
||||||
|
* **Updated**: [9999-cdi-starter](../scripts/usr/local/sbin/9999-cdi-starter) = unified logging
|
||||||
|
|
||||||
|
## V8.13.292.2025.10.27
|
||||||
|
* **Updated**: [alias](../config/includes.chroot/root/.ciss/alias) = modified trel()
|
||||||
|
|
||||||
|
## V8.13.290.2025.10.26
|
||||||
|
* **Updated**: [0001_initramfs_modules.chroot](../config/hooks/live/0001_initramfs_modules.chroot) + ESP/FAT/UEFI mods
|
||||||
|
* **Updated**: [9950_hardening_fail2ban.chroot](../config/hooks/live/9950_hardening_fail2ban.chroot)
|
||||||
|
* **Updated**: [9999-cdi-starter](../scripts/usr/local/sbin/9999-cdi-starter) Preparations for CISS and PhysNet primordial-workflow™.
|
||||||
|
|
||||||
|
## V8.13.288.2025.10.24
|
||||||
|
* **Added**: Preparations for CISS and PhysNet primordial-workflow™.
|
||||||
|
* **Added**: [0865_yq.chroot](../config/hooks/live/0865_yq.chroot)Preparations for CISS and PhysNet primordial-workflow™.
|
||||||
|
* **Updated**: [0001_initramfs_modules.chroot](../config/hooks/live/0001_initramfs_modules.chroot) + nftables mods
|
||||||
|
* **Updated**: [9950_hardening_fail2ban.chroot](../config/hooks/live/9950_hardening_fail2ban.chroot) + banaction = nftables-*
|
||||||
|
* **Updated**: [0900_ufw_setup.chroot](../config/hooks/live/0900_ufw_setup.chroot) changed var injection
|
||||||
|
* **Updated**: [9950_hardening_fail2ban.chroot](../config/hooks/live/9950_hardening_fail2ban.chroot) changed var injection
|
||||||
|
* **Updated**: [sshd_config](../config/includes.chroot/etc/ssh/sshd_config) changed var injection
|
||||||
|
* **Updated**: [lib_hardening_ultra.sh](../lib/lib_hardening_ultra.sh) changed var injection
|
||||||
|
* **Removed**: [live.list.common.chroot](../config/package-lists/live.list.common.chroot) - yq
|
||||||
|
|
||||||
|
## V8.13.280.2025.10.23
|
||||||
|
* **Updated**: [9996_auditd.chroot](../config/hooks/live/9996_auditd.chroot) + 10-ciss-noise-floor.rules
|
||||||
|
* **Updated**: [lib_lb_config_write_trixie.sh](../lib/lib_lb_config_write_trixie.sh) changed: audit_backlog_limit=262144
|
||||||
|
|
||||||
|
## V8.13.272.2025.10.22
|
||||||
|
* **Updated**: [0000_basic_chroot_setup.chroot](../config/hooks/live/0000_basic_chroot_setup.chroot) + amd64-microcode intel-microcode
|
||||||
|
* **Updated**: [0090_jitterentropy.chroot](../config/hooks/live/0090_jitterentropy.chroot) removed --sp800-90b
|
||||||
|
* **Updated**: [9996_auditd.chroot](../config/hooks/live/9996_auditd.chroot) unified auditd configuration, removed success rules
|
||||||
|
* **Updated**: [9998_sources_list_trixie.chroot](../config/hooks/live/9998_sources_list_trixie.chroot) + apt-get dist-upgrade -y
|
||||||
|
* **Updated**: [login.defs](../config/includes.chroot/etc/login.defs)
|
||||||
|
* **Updated**: [9999-cdi-starter](../scripts/usr/local/sbin/9999-cdi-starter)
|
||||||
|
|
||||||
|
## V8.13.256.2025.10.21
|
||||||
|
* **Updated**: [0007_update_logrotate.chroot](../config/hooks/live/0007_update_logrotate.chroot)
|
||||||
|
* **Updated**: [9950_hardening_fail2ban.chroot](../config/hooks/live/9950_hardening_fail2ban.chroot)
|
||||||
|
* **Updated**: [.zshenv](../config/includes.chroot/root/.zshenv)
|
||||||
|
|
||||||
|
## V8.13.224.2025.10.19
|
||||||
|
* **Added**: [.zshenv](../config/includes.chroot/root/.zshenv)
|
||||||
|
* **Updated**: [0090_jitterentropy.chroot](../config/hooks/live/0090_jitterentropy.chroot)
|
||||||
|
* **Updated**: [9950_hardening_fail2ban.chroot](../config/hooks/live/9950_hardening_fail2ban.chroot) updated ignoreip
|
||||||
|
* **Updated**: [9999_yyyy_logrotate.chroot](../config/hooks/live/9999_yyyy_logrotate.chroot) + rsyslog
|
||||||
|
* **Updated**: [live.list.common.chroot](../config/package-lists/live.list.common.chroot) - haveged, + jitterentropy-rngd
|
||||||
|
|
||||||
|
## V8.13.192.2025.10.18
|
||||||
|
* **Added**: [0007_update_logrotate.chroot](../config/hooks/live/0007_update_logrotate.chroot)
|
||||||
|
* **Added**: [9999_yyyy_logrotate.chroot](../config/hooks/live/9999_yyyy_logrotate.chroot)
|
||||||
|
* **Added**: [9999_zzzz.chroot](../config/hooks/live/9999_zzzz.chroot)
|
||||||
|
* **Updated**: [0000_basic_chroot_setup.chroot](../config/hooks/live/0000_basic_chroot_setup.chroot) XDG Base Directory Support
|
||||||
|
* **Updated**: [9950_hardening_fail2ban.chroot](../config/hooks/live/9950_hardening_fail2ban.chroot)
|
||||||
|
* **Updated**: [sshd_config](../config/includes.chroot/etc/ssh/sshd_config) hardened MaxStartups
|
||||||
|
* **Updated**: [alias](../config/includes.chroot/root/.ciss/alias) removed haveged alias
|
||||||
|
* **Updated**: [shortcuts](../config/includes.chroot/root/.ciss/shortcuts) removed haveged entry
|
||||||
|
* **Updated**: [.bashrc](../config/includes.chroot/root/.bashrc) added HISTIGNORE and EDITOR
|
||||||
|
|
||||||
|
## V8.13.144.2025.10.16
|
||||||
|
* **Bugfixes**: [99_local.hardened](../config/includes.chroot/etc/sysctl.d/99_local.hardened)
|
||||||
|
* **Updated**: [check_chrony.sh](../config/includes.chroot/root/.ciss/check_chrony.sh)
|
||||||
|
* **Changed**: [0090_jitterentropy.chroot](../config/hooks/live/0090_jitterentropy.chroot)
|
||||||
|
|
||||||
## V8.13.142.2025.10.14
|
## V8.13.142.2025.10.14
|
||||||
* **Updated**: [9999-cdi-starter](../scripts/9999-cdi-starter)
|
* **Updated**: [9999-cdi-starter](../scripts/usr/local/sbin/9999-cdi-starter)
|
||||||
|
|
||||||
## V8.13.132.2025.10.11
|
## V8.13.132.2025.10.11
|
||||||
* **Added**: [REPOSITORY.md](../REPOSITORY.md)
|
* **Added**: [REPOSITORY.md](../REPOSITORY.md)
|
||||||
|
|
||||||
## V8.13.128.2025.10.10
|
## V8.13.128.2025.10.10
|
||||||
|
|
||||||
* **Added**: Packages ``age``, ``cosign``
|
* **Added**: Packages ``age``, ``cosign``
|
||||||
* **Added**: Repository https://github.com/getsops/sops.git
|
* **Added**: Repository https://github.com/getsops/sops.git
|
||||||
* **Added**: [0040_ssh_config_setup.chroot](../config/hooks/live/0040_ssh_config_setup.chroot)
|
* **Added**: [0040_ssh_config_setup.chroot](../config/hooks/live/0040_ssh_config_setup.chroot)
|
||||||
@@ -49,7 +118,7 @@ include_toc: true
|
|||||||
* **Added**: [lib_note_target.sh](../lib/lib_note_target.sh)
|
* **Added**: [lib_note_target.sh](../lib/lib_note_target.sh)
|
||||||
* **Updated**: [lib_trap_on_err.sh](../lib/lib_trap_on_err.sh)
|
* **Updated**: [lib_trap_on_err.sh](../lib/lib_trap_on_err.sh)
|
||||||
* **Updated**: [lib_trap_on_exit.sh](../lib/lib_trap_on_exit.sh)
|
* **Updated**: [lib_trap_on_exit.sh](../lib/lib_trap_on_exit.sh)
|
||||||
* **Updated**: [9999-cdi-starter](../scripts/9999-cdi-starter)
|
* **Updated**: [9999-cdi-starter](../scripts/usr/local/sbin/9999-cdi-starter)
|
||||||
* **Updated**: [9980_usb_guard.chroot](../config/hooks/live/9980_usb_guard.chroot)
|
* **Updated**: [9980_usb_guard.chroot](../config/hooks/live/9980_usb_guard.chroot)
|
||||||
* **Updated**: [9998_sources_list_bookworm.chroot](../config/hooks/live/9998_sources_list_bookworm.chroot)
|
* **Updated**: [9998_sources_list_bookworm.chroot](../config/hooks/live/9998_sources_list_bookworm.chroot)
|
||||||
* **Updated**: [9998_sources_list_trixie.chroot](../config/hooks/live/9998_sources_list_trixie.chroot)
|
* **Updated**: [9998_sources_list_trixie.chroot](../config/hooks/live/9998_sources_list_trixie.chroot)
|
||||||
@@ -61,7 +130,7 @@ include_toc: true
|
|||||||
## V8.13.048.2025.10.06
|
## V8.13.048.2025.10.06
|
||||||
* **Updated**: Debian 13 LIVE ISO workflows to use Kernel: ``6.16.3+deb13-amd64``
|
* **Updated**: Debian 13 LIVE ISO workflows to use Kernel: ``6.16.3+deb13-amd64``
|
||||||
* **Updated**: Debian 13 LIVE ISO workflows to use argument: ``--cdi``
|
* **Updated**: Debian 13 LIVE ISO workflows to use argument: ``--cdi``
|
||||||
* **Updated**: [9000-cdi-starter](../scripts/9999-cdi-starter)
|
* **Updated**: [9000-cdi-starter](../scripts/usr/local/sbin/9999-cdi-starter)
|
||||||
|
|
||||||
## V8.13.032.2025.10.03
|
## V8.13.032.2025.10.03
|
||||||
* **Added**: Internal Gitea Action Runner switch for static SSHFP records.
|
* **Added**: Internal Gitea Action Runner switch for static SSHFP records.
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2. Centurion Net - Developer Branch Overview
|
# 2. Centurion Net - Developer Branch Overview
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2. Coding Style
|
# 2. Coding Style
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2. Contributing / participating
|
# 2. Contributing / participating
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2. Credits
|
# 2. Credits
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2. Download the latest PUBLIC CISS.debian.live.ISO
|
# 2. Download the latest PUBLIC CISS.debian.live.ISO
|
||||||
|
|
||||||
|
|||||||
@@ -8,12 +8,12 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2.1. Usage
|
# 2.1. Usage
|
||||||
````text
|
````text
|
||||||
CISS.debian.live.builder
|
CISS.debian.live.builder
|
||||||
Master V8.13.142.2025.10.14
|
Master V8.13.294.2025.10.28
|
||||||
A lightweight Shell Wrapper for building a hardened Debian Bookworm Live ISO Image.
|
A lightweight Shell Wrapper for building a hardened Debian Bookworm Live ISO Image.
|
||||||
|
|
||||||
(c) Marc S. Weidner, 2018 - 2025
|
(c) Marc S. Weidner, 2018 - 2025
|
||||||
@@ -136,7 +136,7 @@ A lightweight Shell Wrapper for building a hardened Debian Bookworm Live ISO Ima
|
|||||||
# 2.2. Contact
|
# 2.2. Contact
|
||||||
````text
|
````text
|
||||||
CISS.debian.live.builder
|
CISS.debian.live.builder
|
||||||
Master V8.13.142.2025.10.14
|
Master V8.13.294.2025.10.28
|
||||||
A lightweight Shell Wrapper for building a hardened Debian Bookworm Live ISO Image.
|
A lightweight Shell Wrapper for building a hardened Debian Bookworm Live ISO Image.
|
||||||
|
|
||||||
(c) Marc S. Weidner, 2018 - 2025
|
(c) Marc S. Weidner, 2018 - 2025
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ include_toc: true
|
|||||||
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
**Centurion Intelligence Consulting Agency Information Security Standard**<br>
|
||||||
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
*Debian Live Build Generator for hardened live environment and CISS Debian Installer*<br>
|
||||||
**Master Version**: 8.13<br>
|
**Master Version**: 8.13<br>
|
||||||
**Build**: V8.13.142.2025.10.14<br>
|
**Build**: V8.13.294.2025.10.28<br>
|
||||||
|
|
||||||
# 2. Resources
|
# 2. Resources
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 179 KiB |
@@ -30,21 +30,24 @@ cdi() {
|
|||||||
|
|
||||||
if [[ "${VAR_HANDLER_CDI}" == "true" ]]; then
|
if [[ "${VAR_HANDLER_CDI}" == "true" ]]; then
|
||||||
|
|
||||||
if [[ ! -d "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/lib/live/config" ]]; then
|
touch "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/root/.cdi"
|
||||||
|
chmod 0600 "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/root/.cdi"
|
||||||
|
|
||||||
mkdir -p "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/lib/live/config"
|
if [[ ! -d "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/local/sbin" ]]; then
|
||||||
|
|
||||||
|
mkdir -p "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/local/sbin"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cp "${VAR_WORKDIR}/scripts/9999-cdi-starter" "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/lib/live/config/9999-cdi-starter"
|
cp "${VAR_WORKDIR}/scripts/usr/local/sbin/9999-cdi-starter" "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/local/sbin/9999-cdi-starter.sh"
|
||||||
chmod 0750 "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/lib/live/config/9999-cdi-starter"
|
chmod 0755 "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/local/sbin/9999-cdi-starter.sh"
|
||||||
chown root:root "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/lib/live/config/9999-cdi-starter"
|
chown root:root "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/local/sbin/9999-cdi-starter.sh"
|
||||||
|
|
||||||
declare tmp_entry
|
declare tmp_entry
|
||||||
tmp_entry="$(mktemp)"
|
tmp_entry="$(mktemp)"
|
||||||
cat << EOF >| "${tmp_entry}"
|
cat << EOF >| "${tmp_entry}"
|
||||||
menuentry "CISS Hardened DI (${VAR_KERNEL})" --hotkey=i {
|
menuentry "CISS Hardened DI (${VAR_KERNEL})" --hotkey=i {
|
||||||
linux /live/vmlinuz-${VAR_KERNEL} boot=live verify-checksums components splash nopersistence toram ramdisk-size=1024M swap=true noautologin nottyautologin nox11autologin noeject locales=en_US.UTF-8 keyboard-layouts=de keyboard-model=pc105 keyboard-options= keyboard-variants= timezone=Etc/UTC apparmor=1 security=apparmor audit_backlog_limit=8192 audit=1 debugfs=off efi=disable_early_pci_dma hardened_usercopy=1 ia32_emulation=0 init_on_alloc=1 init_on_free=1 iommu.passthrough=0 iommu.strict=1 iommu=force kfence.sample_interval=100 kvm.nx_huge_pages=force l1d_flush=on lockdown=confidentiality loglevel=0 mitigations=auto,nosmt mmio_stale_data=full,force nosmt=force oops=panic page_alloc.shuffle=1 page_poison=1 panic=0 pti=on random.trust_bootloader=off random.trust_cpu=off randomize_kstack_offset=on retbleed=auto,nosmt rodata=on slab_nomerge vdso32=0 vsyscall=none findiso=\${iso_path}
|
linux /live/vmlinuz-${VAR_KERNEL} boot=live verify-checksums components splash nopersistence toram ramdisk-size=1024M swap=true noautologin nottyautologin nox11autologin noeject locales=en_US.UTF-8 keyboard-layouts=de keyboard-model=pc105 keyboard-options= keyboard-variants= timezone=Etc/UTC apparmor=1 security=apparmor audit_backlog_limit=262144 audit=1 debugfs=off efi=disable_early_pci_dma hardened_usercopy=1 ia32_emulation=0 init_on_alloc=1 init_on_free=1 iommu.passthrough=0 iommu.strict=1 iommu=force kfence.sample_interval=100 kvm.nx_huge_pages=force l1d_flush=on lockdown=confidentiality loglevel=0 mitigations=auto,nosmt mmio_stale_data=full,force nosmt=force oops=panic page_alloc.shuffle=1 page_poison=1 panic=0 pti=on random.trust_bootloader=off random.trust_cpu=off randomize_kstack_offset=on retbleed=auto,nosmt rodata=on slab_nomerge vdso32=0 vsyscall=none findiso=\${iso_path}
|
||||||
initrd /live/initrd.img-${VAR_KERNEL}
|
initrd /live/initrd.img-${VAR_KERNEL}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
@@ -59,9 +62,12 @@ EOF
|
|||||||
}" "${VAR_HANDLER_BUILD_DIR}/config/bootloaders/grub-pc/grub.cfg"
|
}" "${VAR_HANDLER_BUILD_DIR}/config/bootloaders/grub-pc/grub.cfg"
|
||||||
|
|
||||||
rm -f "${tmp_entry}"
|
rm -f "${tmp_entry}"
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
# shellcheck disable=SC1003
|
# shellcheck disable=SC1003
|
||||||
sed -i '/#MUST_BE_REPLACED/c\\' "${VAR_HANDLER_BUILD_DIR}/config/bootloaders/grub-efi/grub.cfg"
|
sed -i '/#MUST_BE_REPLACED/c\\' "${VAR_HANDLER_BUILD_DIR}/config/bootloaders/grub-efi/grub.cfg"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ %s successfully applied. \e[0m\n" "${BASH_SOURCE[0]}"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ %s successfully applied. \e[0m\n" "${BASH_SOURCE[0]}"
|
||||||
|
|||||||
44
lib/lib_ciss_upgrades.sh
Normal file
44
lib/lib_ciss_upgrades.sh
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-05-05; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
|
guard_sourcing
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Wrapper to update '/usr/lib/live/build/...' scripts.
|
||||||
|
# Globals:
|
||||||
|
# SCRIPT_BASEPATH
|
||||||
|
# VAR_BUILD_LOG
|
||||||
|
# VAR_HANDLER_BUILD_DIR
|
||||||
|
# Arguments:
|
||||||
|
# None
|
||||||
|
# Returns:
|
||||||
|
# 0: on success
|
||||||
|
#######################################
|
||||||
|
ciss_upgrades() {
|
||||||
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 %s starting ... \e[0m\n" "${BASH_SOURCE[0]}"
|
||||||
|
|
||||||
|
if [[ ! -e /usr/lib/live/build/binary_rootfs.original ]]; then
|
||||||
|
cp /usr/lib/live/build/binary_rootfs /usr/lib/live/build/binary_rootfs.original
|
||||||
|
chmod 0444 /usr/lib/live/build/binary_rootfs.original
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f /usr/lib/live/build/binary_rootfs
|
||||||
|
install -m 0755 -o root -g root "${VAR_WORKDIR}/scripts/usr/lib/live/build/binary_rootfs.sh" /usr/lib/live/build/binary_rootfs
|
||||||
|
|
||||||
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ %s successfully applied. \e[0m\n" "${BASH_SOURCE[0]}"
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
### Prevents accidental 'unset -f'.
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
readonly -f ciss_upgrades
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
@@ -184,7 +184,7 @@ hardening_ultra() {
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
### /config/includes.chroot/root/.ssh
|
||||||
if [[ ! -d "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/root/.ssh" ]]; then
|
if [[ ! -d "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/root/.ssh" ]]; then
|
||||||
|
|
||||||
mkdir -p "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/root/.ssh"
|
mkdir -p "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/root/.ssh"
|
||||||
@@ -194,15 +194,27 @@ hardening_ultra() {
|
|||||||
|
|
||||||
declare -r sshport="${VAR_SSHPORT:-22}"
|
declare -r sshport="${VAR_SSHPORT:-22}"
|
||||||
|
|
||||||
sed -i "s|^port = MUST_BE_SET|port = ${sshport}|" "${VAR_HANDLER_BUILD_DIR}/config/hooks/live/9950_fail2ban_hardening.chroot"
|
### /config/includes.chroot/etc/ssh/sshd_config
|
||||||
sed -i "s|^declare -r SSHPORT=\"MUST_BE_SET\"|declare -r SSHPORT=\"${sshport}\"|" "${VAR_HANDLER_BUILD_DIR}/config/hooks/live/0900_ufw_setup.chroot"
|
# shellcheck disable=SC2155
|
||||||
sed -i "s|^Port MUST_BE_CHANGED|Port ${sshport}|" "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/etc/ssh/sshd_config"
|
declare pad="$(printf '%-29s' 'Port')"
|
||||||
|
sed -i -E "/PORT_MUST_BE_CHANGED/ s|.*|${pad}${sshport}|" "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/etc/ssh/sshd_config"
|
||||||
|
|
||||||
|
### /config/hooks/live/9950_hardening_fail2ban.chroot
|
||||||
|
sed -i "s|PORT_MUST_BE_SET|${sshport}|g" "${VAR_HANDLER_BUILD_DIR}/config/hooks/live/9950_hardening_fail2ban.chroot"
|
||||||
|
|
||||||
|
### /config/hooks/live/0900_ufw_setup.chroot
|
||||||
|
sed -i "s|SSHPORT_MUST_BE_SET|${sshport}|g" "${VAR_HANDLER_BUILD_DIR}/config/hooks/live/0900_ufw_setup.chroot"
|
||||||
|
|
||||||
|
|
||||||
|
### /config/hooks/live/0900_ufw_setup.chroot
|
||||||
if [[ ${#ARY_HANDLER_JUMPHOST[@]} -gt 0 ]]; then
|
if [[ ${#ARY_HANDLER_JUMPHOST[@]} -gt 0 ]]; then
|
||||||
|
|
||||||
declare file="${VAR_HANDLER_BUILD_DIR}/config/hooks/live/0900_ufw_setup.chroot"
|
declare file="${VAR_HANDLER_BUILD_DIR}/config/hooks/live/0900_ufw_setup.chroot"
|
||||||
|
|
||||||
sed -i "/^ufw allow in \"\${SSHPORT}\"\/tcp comment 'Incoming SSH (Custom-Port)'$/d" "${file}"
|
sed -i "/^ufw allow in \"\${SSHPORT}\"\/tcp comment 'Incoming SSH (Custom-Port)'$/d" "${file}"
|
||||||
|
|
||||||
declare line
|
declare line
|
||||||
|
|
||||||
# shellcheck disable=SC2312
|
# shellcheck disable=SC2312
|
||||||
line=$(grep -n '^ufw default deny forward$' "${file}" | cut -d: -f1)
|
line=$(grep -n '^ufw default deny forward$' "${file}" | cut -d: -f1)
|
||||||
|
|
||||||
@@ -212,10 +224,15 @@ hardening_ultra() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
declare host
|
declare host
|
||||||
|
|
||||||
for host in "${ARY_HANDLER_JUMPHOST_UNIQUE[@]}"; do
|
for host in "${ARY_HANDLER_JUMPHOST_UNIQUE[@]}"; do
|
||||||
|
|
||||||
((line++))
|
((line++))
|
||||||
|
|
||||||
sed -i "${line}a ufw allow from ${host} to any port ${sshport} proto tcp comment \"Incoming SSH ([${host}]:${sshport})\"" "${file}"
|
sed -i "${line}a ufw allow from ${host} to any port ${sshport} proto tcp comment \"Incoming SSH ([${host}]:${sshport})\"" "${file}"
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
@@ -226,14 +243,25 @@ hardening_ultra() {
|
|||||||
|
|
||||||
declare -r sshport="${VAR_SSHPORT:-22}"
|
declare -r sshport="${VAR_SSHPORT:-22}"
|
||||||
|
|
||||||
sed -i "s|^port = MUST_BE_SET|port = ${sshport}|" "${VAR_HANDLER_BUILD_DIR}/config/hooks/live/9950_fail2ban_hardening.chroot"
|
### /config/includes.chroot/etc/ssh/sshd_config
|
||||||
sed -i "s|^declare -r SSHPORT=\"MUST_BE_SET\"|declare -r SSHPORT=\"${sshport}\"|" "${VAR_HANDLER_BUILD_DIR}/config/hooks/live/0900_ufw_setup.chroot"
|
# shellcheck disable=SC2155
|
||||||
sed -i "s|^Port MUST_BE_CHANGED|Port ${sshport}|" "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/etc/ssh/sshd_config"
|
declare pad="$(printf '%-29s' 'Port')"
|
||||||
|
sed -i -E "/PORT_MUST_BE_CHANGED/ s|.*|${pad}${sshport}|" "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/etc/ssh/sshd_config"
|
||||||
|
|
||||||
|
### /config/hooks/live/9950_hardening_fail2ban.chroot
|
||||||
|
sed -i "s|PORT_MUST_BE_SET|${sshport}|g" "${VAR_HANDLER_BUILD_DIR}/config/hooks/live/9950_hardening_fail2ban.chroot"
|
||||||
|
|
||||||
|
### /config/hooks/live/0900_ufw_setup.chroot
|
||||||
|
sed -i "s|SSHPORT_MUST_BE_SET|${sshport}|g" "${VAR_HANDLER_BUILD_DIR}/config/hooks/live/0900_ufw_setup.chroot"
|
||||||
|
|
||||||
|
|
||||||
|
### /config/hooks/live/0900_ufw_setup.chroot
|
||||||
if [[ ${#ARY_HANDLER_JUMPHOST_UNIQUE[@]} -gt 0 ]]; then
|
if [[ ${#ARY_HANDLER_JUMPHOST_UNIQUE[@]} -gt 0 ]]; then
|
||||||
|
|
||||||
declare file="${VAR_HANDLER_BUILD_DIR}/config/hooks/live/0900_ufw_setup.chroot"
|
declare file="${VAR_HANDLER_BUILD_DIR}/config/hooks/live/0900_ufw_setup.chroot"
|
||||||
|
|
||||||
sed -i "/^ufw allow in \"\${SSHPORT}\"\/tcp comment 'Incoming SSH (Custom-Port)'$/d" "${file}"
|
sed -i "/^ufw allow in \"\${SSHPORT}\"\/tcp comment 'Incoming SSH (Custom-Port)'$/d" "${file}"
|
||||||
|
|
||||||
declare line
|
declare line
|
||||||
# shellcheck disable=SC2312
|
# shellcheck disable=SC2312
|
||||||
line=$(grep -n '^ufw default deny forward$' "${file}" | cut -d: -f1)
|
line=$(grep -n '^ufw default deny forward$' "${file}" | cut -d: -f1)
|
||||||
@@ -244,46 +272,67 @@ hardening_ultra() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
declare host
|
declare host
|
||||||
|
|
||||||
for host in "${ARY_HANDLER_JUMPHOST_UNIQUE[@]}"; do
|
for host in "${ARY_HANDLER_JUMPHOST_UNIQUE[@]}"; do
|
||||||
|
|
||||||
((line++))
|
((line++))
|
||||||
sed -i "${line}a ufw allow from ${host} to any port ${sshport} proto tcp comment \"Incoming SSH ([${host}]:${sshport})\"" "${file}"
|
sed -i "${line}a ufw allow from ${host} to any port ${sshport} proto tcp comment \"Incoming SSH ([${host}]:${sshport})\"" "${file}"
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ Updating SSH Keys, Ports done. \e[0m\n"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ Updating SSH Keys, Ports done. \e[0m\n"
|
||||||
|
|
||||||
|
|
||||||
|
### /config/includes.chroot/etc/hosts.allow
|
||||||
if [[ -f "${VAR_WORKDIR}/hosts.allow" ]]; then
|
if [[ -f "${VAR_WORKDIR}/hosts.allow" ]]; then
|
||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 SSH Hardening Ultra ... \e[0m\n"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 SSH Hardening Ultra ... \e[0m\n"
|
||||||
|
|
||||||
cp -af "${VAR_WORKDIR}/hosts.allow" "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/etc"
|
cp -af "${VAR_WORKDIR}/hosts.allow" "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/etc"
|
||||||
cp -af "${VAR_WORKDIR}/hosts.deny" "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/etc"
|
cp -af "${VAR_WORKDIR}/hosts.deny" "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/etc"
|
||||||
|
|
||||||
chmod 0644 "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/etc/hosts.allow"
|
chmod 0644 "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/etc/hosts.allow"
|
||||||
chmod 0644 "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/etc/hosts.deny"
|
chmod 0644 "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/etc/hosts.deny"
|
||||||
|
|
||||||
rm -f "${VAR_WORKDIR}/hosts.allow"
|
rm -f "${VAR_WORKDIR}/hosts.allow"
|
||||||
rm -f "${VAR_WORKDIR}/hosts.deny"
|
rm -f "${VAR_WORKDIR}/hosts.deny"
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ SSH Hardening Ultra done.\e[0m\n"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ SSH Hardening Ultra done.\e[0m\n"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
### /config/hooks/live/9950_hardening_fail2ban.chroot
|
||||||
if ((${#ARY_HANDLER_JUMPHOST[@]} > 0)); then
|
if ((${#ARY_HANDLER_JUMPHOST[@]} > 0)); then
|
||||||
|
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 Updating fail2ban Jumphosts IPs ... \e[0m\n"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 Updating fail2ban Jumphosts IPs ... \e[0m\n"
|
||||||
|
|
||||||
# Join array entries with spaces, preserving any newlines
|
# Join array entries with spaces, preserving any newlines
|
||||||
declare ips="${ARY_HANDLER_JUMPHOST[*]}"
|
declare ips="${ARY_HANDLER_JUMPHOST[*]}"
|
||||||
|
|
||||||
# Flatten to a single line and strip literal brackets []
|
# Flatten to a single line and strip literal brackets []
|
||||||
declare flat_ips
|
declare flat_ips
|
||||||
# shellcheck disable=SC2312
|
# shellcheck disable=SC2312
|
||||||
flat_ips=$(printf "%s" "${ips}" | tr '\n' ' ' | tr -d '[]')
|
flat_ips=$(printf "%s" "${ips}" | tr '\n' ' ' | tr -d '[]')
|
||||||
# flat_ips now contains e.g., "123.128.111.42 2a03:ffff:0815:4711:... 2a03:.../64"
|
# flat_ips now contains e.g., "123.128.111.42 2a03:ffff:0815:4711:... 2a03:.../64"
|
||||||
|
|
||||||
# Perform an in-place replacement of MUST_BE_SET with the cleaned list
|
# Perform an in-place replacement of IGNORE_IP_MUST_BE_SET with the cleaned list
|
||||||
sed -i -e "s|^\(ignoreip[[:space:]]*=[[:space:]]*127\.0\.0\.0/8 ::1[[:space:]]*\)MUST_BE_SET|\1${flat_ips}|" \
|
sed -i -E "/^[[:space:]]*ignoreip[[:space:]]*=/ s|IGNORE_IP_MUST_BE_SET|${flat_ips}|g" "${VAR_HANDLER_BUILD_DIR}/config/hooks/live/9950_hardening_fail2ban.chroot"
|
||||||
"${VAR_HANDLER_BUILD_DIR}/config/hooks/live/9950_fail2ban_hardening.chroot"
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ Updating fail2ban Jumphosts IPs done. \e[0m\n"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ Updating fail2ban Jumphosts IPs done. \e[0m\n"
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
printf "\e[93m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 No jump hosts configured, removing placeholder ... \e[0m\n"
|
printf "\e[93m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 No jump hosts configured, removing placeholder ... \e[0m\n"
|
||||||
sed -i \
|
|
||||||
-e "s|^\(ignoreip[[:space:]]*=[[:space:]]*127\.0\.0\.0/8 ::1\)[[:space:]]*MUST_BE_SET|\1|" \
|
sed -i 's/IGNORE_IP_MUST_BE_SET//g' "${VAR_HANDLER_BUILD_DIR}/config/hooks/live/9950_hardening_fail2ban.chroot"
|
||||||
-e "s|\(ignoreip[[:space:]]*=[[:space:]]*127\.0\.0\.0/8 ::1\)[[:space:]]*$|\1|" \
|
|
||||||
"${VAR_HANDLER_BUILD_DIR}/config/hooks/live/9950_fail2ban_hardening.chroot"
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ Placeholder removed. \e[0m\n"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ Placeholder removed. \e[0m\n"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
# 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
|
||||||
|
|||||||
@@ -15,11 +15,14 @@ guard_sourcing
|
|||||||
#######################################
|
#######################################
|
||||||
# Wrapper to write a new 'lb config' environment.
|
# Wrapper to write a new 'lb config' environment.
|
||||||
# Globals:
|
# Globals:
|
||||||
# ERR_UNCRITICAL
|
# SCRIPT_BASEPATH
|
||||||
# VAR_BUILD_LOG
|
# VAR_BUILD_LOG
|
||||||
# VAR_HANDLER_BUILD_DIR
|
# VAR_HANDLER_BUILD_DIR
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# None
|
# None
|
||||||
|
# Returns:
|
||||||
|
# 0: on success
|
||||||
|
# ERR_UNCRITICAL: on failure
|
||||||
#######################################
|
#######################################
|
||||||
lb_build_start() {
|
lb_build_start() {
|
||||||
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🔨 Start Build... Log file: %s \e[0m\n" "${VAR_BUILD_LOG}"
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🔨 Start Build... Log file: %s \e[0m\n" "${VAR_BUILD_LOG}"
|
||||||
@@ -51,5 +54,10 @@ lb_build_start() {
|
|||||||
exit "${ERR_UNCRITICAL}"
|
exit "${ERR_UNCRITICAL}"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
### Prevents accidental 'unset -f'.
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
readonly -f lb_build_start
|
||||||
# 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
|
||||||
|
|||||||
@@ -40,8 +40,8 @@ lb_config_write_trixie() {
|
|||||||
--backports true \
|
--backports true \
|
||||||
--binary-filesystem fat32 \
|
--binary-filesystem fat32 \
|
||||||
--binary-image iso-hybrid \
|
--binary-image iso-hybrid \
|
||||||
--bootappend-install "auto=true priority=critical clock-setup/utc=true console-setup/ask_detect=false debian-installer/country=US debian-installer/language=en debian-installer/locale=en_US.UTF-8 keyboard-configuration/xkb-keymap=de keyboard-configuration/model=pc105 localechooser/supported-locales=en_US.UTF-8 time/zone=Etc/UTC splash audit_backlog_limit=8192 audit=1 debugfs=off efi=disable_early_pci_dma efi_no_storage_paranoia hardened_usercopy=1 ia32_emulation=0 init_on_alloc=1 init_on_free=1 iommu=force kfence.sample_interval=100 kvm.nx_huge_pages=force l1d_flush=on lockdown=confidentiality loglevel=0 mce=0 mitigations=auto,nosmt mmio_stale_data=full,nosmt oops=panic page_alloc.shuffle=1 page_poison=1 panic=-1 pti=on random.trust_bootloader=off random.trust_cpu=off randomize_kstack_offset=on retbleed=auto,nosmt rodata=on tsx=off vdso32=0 vsyscall=none" \
|
--bootappend-install "auto=true priority=critical clock-setup/utc=true console-setup/ask_detect=false debian-installer/country=US debian-installer/language=en debian-installer/locale=en_US.UTF-8 keyboard-configuration/xkb-keymap=de keyboard-configuration/model=pc105 localechooser/supported-locales=en_US.UTF-8 time/zone=Etc/UTC splash audit_backlog_limit=262144 audit=1 debugfs=off efi=disable_early_pci_dma efi_no_storage_paranoia hardened_usercopy=1 ia32_emulation=0 init_on_alloc=1 init_on_free=1 iommu=force kfence.sample_interval=100 kvm.nx_huge_pages=force l1d_flush=on lockdown=confidentiality loglevel=0 mce=0 mitigations=auto,nosmt mmio_stale_data=full,nosmt oops=panic page_alloc.shuffle=1 page_poison=1 panic=-1 pti=on random.trust_bootloader=off random.trust_cpu=off randomize_kstack_offset=on retbleed=auto,nosmt rodata=on tsx=off vdso32=0 vsyscall=none" \
|
||||||
--bootappend-live "boot=live components keyboard-layouts=de keyboard-model=pc105 keyboard-options= keyboard-variants= locales=en_US.UTF-8 noautologin nottyautologin nox11autologin noeject nopersistence ramdisk-size=1024M splash swap=true timezone=Etc/UTC toram verify-checksums apparmor=1 security=apparmor audit_backlog_limit=8192 audit=1 debugfs=off efi=disable_early_pci_dma hardened_usercopy=1 ia32_emulation=0 init_on_alloc=1 init_on_free=1 iommu.passthrough=0 iommu.strict=1 iommu=force kfence.sample_interval=100 kvm.nx_huge_pages=force l1d_flush=on lockdown=confidentiality loglevel=0 mitigations=auto,nosmt mmio_stale_data=full,force nosmt=force oops=panic page_alloc.shuffle=1 page_poison=1 panic=0 pti=on random.trust_bootloader=off random.trust_cpu=off randomize_kstack_offset=on retbleed=auto,nosmt rodata=on slab_nomerge vdso32=0 vsyscall=none" \
|
--bootappend-live "boot=live components keyboard-layouts=de keyboard-model=pc105 keyboard-options= keyboard-variants= locales=en_US.UTF-8 noautologin nottyautologin nox11autologin noeject nopersistence ramdisk-size=1024M splash swap=true timezone=Etc/UTC toram verify-checksums apparmor=1 security=apparmor audit_backlog_limit=262144 audit=1 debugfs=off efi=disable_early_pci_dma hardened_usercopy=1 ia32_emulation=0 init_on_alloc=1 init_on_free=1 iommu.passthrough=0 iommu.strict=1 iommu=force kfence.sample_interval=100 kvm.nx_huge_pages=force l1d_flush=on lockdown=confidentiality loglevel=0 mitigations=auto,nosmt mmio_stale_data=full,force nosmt=force oops=panic page_alloc.shuffle=1 page_poison=1 panic=0 pti=on random.trust_bootloader=off random.trust_cpu=off randomize_kstack_offset=on retbleed=auto,nosmt rodata=on slab_nomerge vdso32=0 vsyscall=none" \
|
||||||
--bootloaders grub-efi \
|
--bootloaders grub-efi \
|
||||||
--cache true \
|
--cache true \
|
||||||
--checksums sha512 sha256 md5 \
|
--checksums sha512 sha256 md5 \
|
||||||
@@ -107,11 +107,34 @@ lb_config_write_trixie() {
|
|||||||
sed -i 's/LB_CHECKSUMS="sha512 md5"/LB_CHECKSUMS="sha512 sha384 sha256"/1' ./config/binary
|
sed -i 's/LB_CHECKSUMS="sha512 md5"/LB_CHECKSUMS="sha512 sha384 sha256"/1' ./config/binary
|
||||||
sed -i 's/LB_DM_VERITY=""/LB_DM_VERITY="false"/1' ./config/binary
|
sed -i 's/LB_DM_VERITY=""/LB_DM_VERITY="false"/1' ./config/binary
|
||||||
|
|
||||||
mkdir -p "${VAR_HANDLER_BUILD_DIR}"/config/includes.chroot/usr/lib/live/boot
|
mkdir -p "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/lib/live/boot"
|
||||||
cp -a "${VAR_WORKDIR}/scripts/live-boot/0030-verify-checksums" "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/lib/live/boot/0030-verify-checksums"
|
cp -a "${VAR_WORKDIR}/scripts/live-boot/0030-verify-checksums" "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/lib/live/boot/0030-verify-checksums"
|
||||||
chmod 0755 "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/lib/live/boot/0030-verify-checksums"
|
chmod 0755 "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/lib/live/boot/0030-verify-checksums"
|
||||||
chown root:root "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/lib/live/boot/0030-verify-checksums"
|
chown root:root "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/usr/lib/live/boot/0030-verify-checksums"
|
||||||
|
|
||||||
|
### https://wiki.debian.org/ReproducibleInstalls/LiveImages
|
||||||
|
### https://reproducible-builds.org/docs/system-images/
|
||||||
|
### https://gitlab.tails.boum.org/tails/tails/-/blob/stable/config/chroot_local-includes/usr/share/tails/build/mksquashfs-excludes
|
||||||
|
mkdir -p "${VAR_HANDLER_BUILD_DIR}/config/rootfs"
|
||||||
|
cat << 'EOF' >| "${VAR_HANDLER_BUILD_DIR}/config/rootfs/excludes"
|
||||||
|
boot/initrd.img-*
|
||||||
|
boot/vmlinux-*
|
||||||
|
boot/vmlinuz-*
|
||||||
|
debootstrap
|
||||||
|
debootstrap/*
|
||||||
|
root/.wget-hsts
|
||||||
|
tmp/*
|
||||||
|
usr/lib/firmware/amd/*
|
||||||
|
usr/lib/firmware/amd-ucode/*
|
||||||
|
usr/lib/firmware/amdtee/*
|
||||||
|
usr/lib/firmware/intel-ucode/*
|
||||||
|
var/cache/apt/pkgcache.bin
|
||||||
|
var/cache/apt/srcpkgcache.bin
|
||||||
|
var/lib/apt/lists/*
|
||||||
|
var/lib/initramfs-tools/*-amd64
|
||||||
|
EOF
|
||||||
|
chmod 0644 "${VAR_HANDLER_BUILD_DIR}/config/rootfs/excludes"
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ Writing new config done.\e[0m\n"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ Writing new config done.\e[0m\n"
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@@ -53,6 +53,18 @@ note_target() {
|
|||||||
https://coresecret.eu/spenden/
|
https://coresecret.eu/spenden/
|
||||||
################################################################################
|
################################################################################
|
||||||
EOF
|
EOF
|
||||||
|
chmod 0444 "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/root/ciss-debian-live-builder.txt"
|
||||||
|
|
||||||
|
cat << EOF >| "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/root/ciss-debian-live-builder.env"
|
||||||
|
export CDLB_VERSION="${VAR_VERSION}"
|
||||||
|
export CDLB_GIT_REL="${VAR_GIT_REL}"
|
||||||
|
export CDLB_CR_DATE="${VAR_DATE_INFO}"
|
||||||
|
export CDLB_CR_HOST="${VAR_HOST}"
|
||||||
|
export CDLB_BASHVER="${VAR_BASH_VER}"
|
||||||
|
export CDLB_DS_VER="${VAR_DS_VER}"
|
||||||
|
export CDLB_LB_VER="${VAR_LB_VER}"
|
||||||
|
EOF
|
||||||
|
chmod 0444 "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/root/ciss-debian-live-builder.env"
|
||||||
|
|
||||||
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ %s successfully applied. \e[0m\n" "${BASH_SOURCE[0]}"
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ %s successfully applied. \e[0m\n" "${BASH_SOURCE[0]}"
|
||||||
|
|
||||||
|
|||||||
@@ -13,9 +13,11 @@
|
|||||||
guard_sourcing
|
guard_sourcing
|
||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
# Argument Check Wrapper
|
# Arguments check wrapper.
|
||||||
|
# Globals:
|
||||||
|
# None
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# $1: "$@" of ./ciss_live_builder.sh
|
# 1: "$@" of ./ciss_live_builder.sh
|
||||||
#######################################
|
#######################################
|
||||||
arg_check() {
|
arg_check() {
|
||||||
declare a
|
declare a
|
||||||
@@ -25,35 +27,49 @@ arg_check() {
|
|||||||
done
|
done
|
||||||
set -- "${sanitized_args[@]}"
|
set -- "${sanitized_args[@]}"
|
||||||
}
|
}
|
||||||
|
### Prevents accidental 'unset -f'.
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
readonly -f arg_check
|
||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
# Function to sanitize a single argument
|
# Function to sanitize a single argument,
|
||||||
# Globals:
|
# Globals:
|
||||||
# ERR_INVLD_CHAR
|
|
||||||
# LOG_ERROR
|
# LOG_ERROR
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# $1: Argument to check
|
# 1: Argument to check
|
||||||
|
# Returns:
|
||||||
|
# 0: on success
|
||||||
|
# ERR_INVLD_CHAR: on failure
|
||||||
#######################################
|
#######################################
|
||||||
sanitize_arg() {
|
sanitize_arg() {
|
||||||
declare input="${1}"
|
declare input="${1}"
|
||||||
declare disallowed_ctrl=""
|
declare disallowed_ctrl=""
|
||||||
|
|
||||||
### Step 1: Check for control characters
|
### Step 1: Check for control characters
|
||||||
if printf '%s' "${input}" | grep -qP '[[:cntrl:]]'; then
|
if printf '%s' "${input}" | grep -qP '[[:cntrl:]]'; then
|
||||||
|
|
||||||
|
# shellcheck disable=SC2312
|
||||||
disallowed_ctrl=$(printf '%s' "${input}" | sed -n 's/[^[:cntrl:]]//gp' | sed $'s/./&\\n/g' \
|
disallowed_ctrl=$(printf '%s' "${input}" | sed -n 's/[^[:cntrl:]]//gp' | sed $'s/./&\\n/g' \
|
||||||
| while read -r c; do printf "%02X " "'$c"; done)
|
| while read -r c; do printf "%02X " "'${c}"; done)
|
||||||
|
|
||||||
{
|
{
|
||||||
printf "❌ Control character : '%s'. \n" "${disallowed_ctrl}"
|
printf "❌ Control character : '%s'. \n" "${disallowed_ctrl}"
|
||||||
printf "❌ in argument : '%s'. \n" "${input}"
|
printf "❌ in argument : '%s'. \n" "${input}"
|
||||||
printf "❌ Allowed Characters : 'a-z A-Z 0-9 . _ / = [ ] : \" - + space' \n"
|
printf "❌ Allowed Characters : 'a-z A-Z 0-9 . _ / = [ ] : \" - + space' \n"
|
||||||
printf "\n"
|
printf "\n"
|
||||||
} >> "${LOG_ERROR}"
|
} >> "${LOG_ERROR}"
|
||||||
|
|
||||||
boot_screen_cleaner
|
boot_screen_cleaner
|
||||||
|
|
||||||
printf "\e[91m❌ Control character : '%s'. \e[0m\n" "${disallowed_ctrl}" >&2
|
printf "\e[91m❌ Control character : '%s'. \e[0m\n" "${disallowed_ctrl}" >&2
|
||||||
printf "\e[91m❌ in argument : '%s'. \e[0m\n" "${input}" >&2
|
printf "\e[91m❌ in argument : '%s'. \e[0m\n" "${input}" >&2
|
||||||
printf "\e[91m❌ Allowed Characters : 'a-z A-Z 0-9 . _ / = [ ] : \" - + space' \e[0m\n" >&2
|
printf "\e[91m❌ Allowed Characters : 'a-z A-Z 0-9 . _ / = [ ] : \" - + space' \e[0m\n" >&2
|
||||||
|
|
||||||
# shellcheck disable=SC2162
|
# shellcheck disable=SC2162
|
||||||
read -p $'\e[92m✅ Press \'ENTER\' to exit the script ... \e[0m'
|
read -p $'\e[92m✅ Press \'ENTER\' to exit the script ... \e[0m'
|
||||||
|
|
||||||
exit "${ERR_INVLD_CHAR}"
|
exit "${ERR_INVLD_CHAR}"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
### Step 2: Define allowed characters:
|
### Step 2: Define allowed characters:
|
||||||
@@ -61,6 +77,7 @@ sanitize_arg() {
|
|||||||
declare allowed='a-zA-Z0-9._/=\[\]:"\-+ '
|
declare allowed='a-zA-Z0-9._/=\[\]:"\-+ '
|
||||||
declare disallowed
|
declare disallowed
|
||||||
disallowed=$(printf '%s' "${input}" | tr -d "${allowed}")
|
disallowed=$(printf '%s' "${input}" | tr -d "${allowed}")
|
||||||
|
|
||||||
if [[ -n ${disallowed} ]]; then
|
if [[ -n ${disallowed} ]]; then
|
||||||
{
|
{
|
||||||
printf "❌ Invalid character : '%s'. \n" "${disallowed//?/& }"
|
printf "❌ Invalid character : '%s'. \n" "${disallowed//?/& }"
|
||||||
@@ -68,22 +85,36 @@ sanitize_arg() {
|
|||||||
printf "❌ Allowed Characters : 'a-z A-Z 0-9 . _ / = [ ] : \" - + space' \n"
|
printf "❌ Allowed Characters : 'a-z A-Z 0-9 . _ / = [ ] : \" - + space' \n"
|
||||||
printf "\n"
|
printf "\n"
|
||||||
} >> "${LOG_ERROR}"
|
} >> "${LOG_ERROR}"
|
||||||
|
|
||||||
boot_screen_cleaner
|
boot_screen_cleaner
|
||||||
|
|
||||||
printf "\e[91m❌ Invalid character : '%s'. \e[0m\n" "${disallowed//?/& }" >&2
|
printf "\e[91m❌ Invalid character : '%s'. \e[0m\n" "${disallowed//?/& }" >&2
|
||||||
printf "\e[91m❌ in argument : '%s'. \e[0m\n" "${input}" >&2
|
printf "\e[91m❌ in argument : '%s'. \e[0m\n" "${input}" >&2
|
||||||
printf "\e[91m❌ Allowed Characters : 'a-z A-Z 0-9 . _ / = [ ] : \" - + space' \e[0m\n" >&2
|
printf "\e[91m❌ Allowed Characters : 'a-z A-Z 0-9 . _ / = [ ] : \" - + space' \e[0m\n" >&2
|
||||||
|
|
||||||
# shellcheck disable=SC2162
|
# shellcheck disable=SC2162
|
||||||
read -p $'\e[92m✅ Press \'ENTER\' to exit the script ... \e[0m'
|
read -p $'\e[92m✅ Press \'ENTER\' to exit the script ... \e[0m'
|
||||||
|
|
||||||
exit "${ERR_INVLD_CHAR}"
|
exit "${ERR_INVLD_CHAR}"
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
printf '%s' "${input}"
|
printf '%s' "${input}"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
### Prevents accidental 'unset -f'.
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
readonly -f sanitize_arg
|
||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
# Function to remove any character not in the allowed set
|
# Function to remove any character not in the allowed set.
|
||||||
|
# Globals:
|
||||||
|
# None
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# $1: String to Sanitize
|
# 1: String to Sanitize
|
||||||
#######################################
|
#######################################
|
||||||
sanitize_string() {
|
sanitize_string() {
|
||||||
declare input="$1"
|
declare input="$1"
|
||||||
@@ -92,15 +123,23 @@ sanitize_string() {
|
|||||||
declare allowed='a-zA-Z0-9._/=\[\]:"\-+ '
|
declare allowed='a-zA-Z0-9._/=\[\]:"\-+ '
|
||||||
printf '%s' "${input}" | tr -cd "${allowed}"
|
printf '%s' "${input}" | tr -cd "${allowed}"
|
||||||
}
|
}
|
||||||
|
### Prevents accidental 'unset -f'.
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
readonly -f sanitize_string
|
||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
# Function to escape all shell metacharacters
|
# Function to escape all shell metacharacters.
|
||||||
|
# Globals:
|
||||||
|
# None
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# $1: String to Sanitize
|
# 1: String to Sanitize
|
||||||
#######################################
|
#######################################
|
||||||
sanitize_shell_literal() {
|
sanitize_shell_literal() {
|
||||||
declare input="$1"
|
declare input="$1"
|
||||||
### %q quotes the string so that the shell re-reads it as the original literal
|
### %q quotes the string so that the shell re-reads it as the original literal
|
||||||
printf '%q' "${input}"
|
printf '%q' "${input}"
|
||||||
}
|
}
|
||||||
|
### Prevents accidental 'unset -f'.
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
readonly -f sanitize_shell_literal
|
||||||
# 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
|
||||||
|
|||||||
@@ -11,7 +11,9 @@
|
|||||||
# SPDX-Security-Contact: security@coresecret.eu
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
# Prevent the file to be sourced twice.
|
# Prevents the file to be sourced twice.
|
||||||
|
# Globals:
|
||||||
|
# None
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# 1: File to source.
|
# 1: File to source.
|
||||||
#######################################
|
#######################################
|
||||||
@@ -25,4 +27,7 @@ source_guard() {
|
|||||||
. "${var_file}"
|
. "${var_file}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
### Prevents accidental 'unset -f'.
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
readonly -f source_guard
|
||||||
# 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
|
||||||
|
|||||||
43
lib/lib_update_microcode.sh
Normal file
43
lib/lib_update_microcode.sh
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-Version: 3.0
|
||||||
|
# SPDX-CreationInfo: 2025-10-07; WEIDNER, Marc S.; <msw@coresecret.dev>
|
||||||
|
# SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.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.live.builder
|
||||||
|
# SPDX-Security-Contact: security@coresecret.eu
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Generates artifact inside the target for microcode updates.
|
||||||
|
# Globals:
|
||||||
|
# BASH_SOURCE
|
||||||
|
# VAR_ARCHITECTURE
|
||||||
|
# VAR_HANDLER_BUILD_DIR
|
||||||
|
# Arguments:
|
||||||
|
# None
|
||||||
|
# Returns:
|
||||||
|
# 0: on success
|
||||||
|
#######################################
|
||||||
|
update_microcode() {
|
||||||
|
printf "\e[95m++++ ++++ ++++ ++++ ++++ ++++ ++ 🧪 %s starting ... \e[0m\n" "${BASH_SOURCE[0]}"
|
||||||
|
|
||||||
|
if [[ "${VAR_ARCHITECTURE,,}" == "amd64" ]]; then
|
||||||
|
|
||||||
|
cat << EOF >| "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/root/.architecture"
|
||||||
|
${VAR_ARCHITECTURE,,}
|
||||||
|
EOF
|
||||||
|
chmod 0600 "${VAR_HANDLER_BUILD_DIR}/config/includes.chroot/root/.architecture"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\e[92m++++ ++++ ++++ ++++ ++++ ++++ ++ ✅ %s successfully applied. \e[0m\n" "${BASH_SOURCE[0]}"
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
### Prevents accidental 'unset -f'.
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
readonly -f update_microcode
|
||||||
|
# vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh
|
||||||
@@ -12,8 +12,12 @@
|
|||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
# Usage Wrapper CISS.debian.live.builder
|
# Usage Wrapper CISS.debian.live.builder
|
||||||
|
# Globals:
|
||||||
|
# None
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# 0: Script name
|
# None
|
||||||
|
# Returns:
|
||||||
|
# 0: on success
|
||||||
#######################################
|
#######################################
|
||||||
usage() {
|
usage() {
|
||||||
# shellcheck disable=SC2155
|
# shellcheck disable=SC2155
|
||||||
@@ -35,13 +39,13 @@ usage() {
|
|||||||
# shellcheck disable=SC2155
|
# shellcheck disable=SC2155
|
||||||
declare var_header=$(center "CLB(1) CISS.debian.live.builder CLB(1)" "${var_cols}")
|
declare var_header=$(center "CLB(1) CISS.debian.live.builder CLB(1)" "${var_cols}")
|
||||||
# shellcheck disable=SC2155
|
# shellcheck disable=SC2155
|
||||||
declare var_footer=$(center "V8.13.142.2025.10.14 2025-10-07 CLB(1)" "${var_cols}")
|
declare var_footer=$(center "V8.13.294.2025.10.28 2025-10-07 CLB(1)" "${var_cols}")
|
||||||
|
|
||||||
{
|
{
|
||||||
echo -e "\e[1;97m${var_header}\e[0m"
|
echo -e "\e[1;97m${var_header}\e[0m"
|
||||||
echo
|
echo
|
||||||
echo -e "\e[92mCISS.debian.live.builder from https://git.coresecret.dev/msw \e[0m"
|
echo -e "\e[92mCISS.debian.live.builder from https://git.coresecret.dev/msw \e[0m"
|
||||||
echo -e "\e[92mMaster V8.13.142.2025.10.14\e[0m"
|
echo -e "\e[92mMaster V8.13.294.2025.10.28\e[0m"
|
||||||
echo -e "\e[92mA lightweight Shell Wrapper for building a hardened Debian Live ISO Image.\e[0m"
|
echo -e "\e[92mA lightweight Shell Wrapper for building a hardened Debian Live ISO Image.\e[0m"
|
||||||
echo
|
echo
|
||||||
echo -e "\e[97m(c) Marc S. Weidner, 2018 - 2025 \e[0m"
|
echo -e "\e[97m(c) Marc S. Weidner, 2018 - 2025 \e[0m"
|
||||||
@@ -162,5 +166,10 @@ usage() {
|
|||||||
echo
|
echo
|
||||||
echo -e "\e[1;97m${var_footer}\e[0m"
|
echo -e "\e[1;97m${var_footer}\e[0m"
|
||||||
} | less -R
|
} | less -R
|
||||||
|
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
### Prevents accidental 'unset -f'.
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
readonly -f usage
|
||||||
# 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
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user