tommytran732-Fedora-CoreOS-.../Generic.yml

421 lines
17 KiB
YAML
Raw Normal View History

# Copyright (C) 2023 Thien Tran
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
2021-11-02 22:32:22 -04:00
variant: fcos
version: 1.5.0
2021-11-02 22:32:22 -04:00
passwd:
users:
- name: tomster
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINkTKkJS7Id1WCyA5Klu/moLG9mP5hTC+v2qYqypMF1u contact@tommytran.io
2021-11-02 22:32:22 -04:00
groups:
- wheel
- sudo
- name: unpriv
2021-11-02 22:32:22 -04:00
systemd:
units:
- name: postinst.service
enabled: true
contents: |
[Unit]
Description=Initial System Setup
# We run after `systemd-machine-id-commit.service` to ensure that
# `ConditionFirstBoot=true` services won't rerun on the next boot.
After=systemd-machine-id-commit.service
After=network-online.target
# We run before `zincati.service` to avoid conflicting rpm-ostree
# transactions.
Before=zincati.service
ConditionPathExists=!/var/lib/%N.stamp
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/sudo -u unpriv /usr/bin/curl https://raw.githubusercontent.com/GrapheneOS/infrastructure/main/chrony.conf | /usr/bin/tee /etc/chrony.conf
ExecStart=/usr/bin/systemctl restart chronyd
ExecStart=/usr/bin/rpm-ostree override remove cifs-utils containerd moby-engine runc samba-common-libs samba-client-libs libsmbclient libwbclient samba-common sssd-krb5-common sssd-ipa sssd-nfs-idmap sssd-ldap sssd-client sssd-ad sssd-common sssd-krb5 sssd-common-pac
ExecStart=/usr/bin/rpm-ostree install auditd docker-ce firewalld qemu-guest-agent tuned unbound
ExecStart=/usr/bin/sed -i 's/nullok//g' /etc/pam.d/system-auth
ExecStart=/usr/bin/sudo -u unpriv /usr/bin/curl https://raw.githubusercontent.com/Kicksecure/security-misc/master/etc/modprobe.d/30_security-misc.conf | /usr/bin/tee /etc/modprobe.d/30_security-misc.conf
ExecStart=/usr/bin/curl https://raw.githubusercontent.com/Kicksecure/security-misc/master/usr/lib/sysctl.d/990-security-misc.conf -o /etc/sysctl.d/990-security-misc.conf
ExecStart=/usr/bin/sed -i 's/kernel.yama.ptrace_scope=2/kernel.yama.ptrace_scope=1/g' /etc/sysctl.d/990-security-misc.conf
ExecStart=/usr/bin/sed -i 's/net.ipv4.icmp_echo_ignore_all=1/net.ipv4.icmp_echo_ignore_all=0/g' /etc/sysctl.d/990-security-misc.conf
ExecStart=/usr/bin/sed -i 's/net.ipv6.icmp.echo_ignore_all=1/net.ipv6.icmp.echo_ignore_all=0/g' /etc/sysctl.d/990-security-misc.conf
ExecStart=/usr/bin/sudo -u unpriv /usr/bin/curl https://raw.githubusercontent.com/Kicksecure/security-misc/master/usr/lib/sysctl.d/30_silent-kernel-printk.conf | /usr/bin/tee /etc/sysctl.d/30_silent-kernel-printk.conf
ExecStart=/usr/bin/sudo -u unpriv /usr/bin/curl https://raw.githubusercontent.com/Kicksecure/security-misc/master/usr/lib/sysctl.d/30_security-misc_kexec-disable.conf | /usr/bin/tee /etc/sysctl.d/30_security-misc_kexec-disable.conf
ExecStart=/usr/bin/mkdir -p /etc/systemd/system/NetworkManager.service.d
ExecStart=/usr/bin/sudo -u unpriv /usr/bin/curl https://gitlab.com/divested/brace/-/raw/master/brace/usr/lib/systemd/system/NetworkManager.service.d/99-brace.conf | /usr/bin/tee /etc/systemd/system/NetworkManager.service.d/99-brace.conf
ExecStart=/usr/bin/mkdir -p /etc/systemd/system/irqbalance.service.d
ExecStart=/usr/bin/sudo -u unpriv /usr/bin/curl https://gitlab.com/divested/brace/-/raw/master/brace/usr/lib/systemd/system/irqbalance.service.d/99-brace.conf | /usr/bin/tee /etc/systemd/system/irqbalance.service.d/99-brace.conf
ExecStart=/usr/bin/mkdir -p /etc/systemd/system/sshd.service.d
ExecStart=/usr/bin/sudo -u unpriv /usr/bin/curl https://raw.githubusercontent.com/GrapheneOS/infrastructure/main/systemd/system/sshd.service.d/local.conf | /usr/bin/tee /etc/systemd/system/sshd.service.d/override.conf
ExecStart=/usr/bin/sudo -u unpriv /usr/bin/curl https://raw.githubusercontent.com/TommyTran732/Linux-Setup-Scripts/main/etc/ssh/sshd_config/10-custom.conf | /usr/bin/tee /etc/ssh/sshd_config.d/10-custom.conf
ExecStart=/usr/bin/echo 'CtrlAltDelBurstAction=none' >> /etc/systemd/system.conf
ExecStart=/usr/bin/systemctl disable systemd-resolved
ExecStart=/usr/bin/touch /var/lib/%N.stamp
ExecStart=/usr/bin/systemctl --no-block reboot
2021-11-02 22:32:22 -04:00
[Install]
WantedBy=multi-user.target
- name: postinst2.service
enabled: true
contents: |
[Unit]
Description=Initial System Setup Part 2
# We run this after the packages have been overlayed
After=network-online.target
ConditionPathExists=!/var/lib/%N.stamp
ConditionPathExists=/var/lib/postinst.stamp
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/firewall-cmd --lockdown-on
ExecStart=/usr/bin/docker run --detach --privileged --name watchtower --restart unless-stopped --runtime=runc -v /var/run/docker.sock:/var/run/docker.sock -v /etc/localtime:/etc/localtime:ro containrrr/watchtower --schedule "0 15 0 * * 0"
2021-11-02 22:32:22 -04:00
ExecStart=/bin/touch /var/lib/%N.stamp
2022-04-11 19:11:38 -04:00
[Install]
WantedBy=multi-user.target
- name: setsebool.service
enabled: true
contents: |
[Service]
Type=oneshot
2022-04-11 19:11:38 -04:00
ExecStart=/usr/sbin/setsebool container_use_cephfs off
ExecStart=/usr/sbin/setsebool virt_use_nfs off
ExecStart=/usr/sbin/setsebool virt_use_samba off
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
- name: gvisor-updater.service
enabled: true
contents: |
[Unit]
Description=gVisor Update
Requires=network-online.target
Before=docker.service
[Service]
WorkingDirectory=/var/home/unpriv
Type=oneshot
ExecStart=/usr/bin/sleep 5
ExecStart=/usr/bin/sudo -u unpriv /usr/bin/curl -O https://storage.googleapis.com/gvisor/releases/release/latest/x86_64/runsc
ExecStart=/usr/bin/sudo -u unpriv /usr/bin/curl -O https://storage.googleapis.com/gvisor/releases/release/latest/x86_64/runsc.sha512
ExecStart=/usr/bin/sudo -u unpriv /usr/bin/curl -O https://storage.googleapis.com/gvisor/releases/release/latest/x86_64/containerd-shim-runsc-v1
ExecStart=/usr/bin/sudo -u unpriv /usr/bin/curl -O https://storage.googleapis.com/gvisor/releases/release/latest/x86_64/containerd-shim-runsc-v1.sha512
ExecStart=/usr/bin/sha512sum -c runsc.sha512 -c containerd-shim-runsc-v1.sha512
ExecStart=/usr/bin/rm -f runsc.sha512 containerd-shim-runsc-v1.sha512
ExecStart=/usr/bin/chown root:root runsc containerd-shim-runsc-v1
ExecStart=/usr/bin/chmod a+rx runsc containerd-shim-runsc-v1
ExecStart=/usr/bin/mv runsc containerd-shim-runsc-v1 /var/usrlocal/bin
ExecStart=/usr/bin/chcon system_u:object_r:container_runtime_exec_t:s0 /var/usrlocal/bin/runsc
2021-11-02 22:32:22 -04:00
[Install]
WantedBy=multi-user.target
- name: docker.service
enabled: true
- name: fstrim.timer
enabled: true
- name: systemd-oomd.service
enabled: true
- name: rpm-ostree-countme.timer
enabled: false
mask: true
- name: sshd.service
enabled: false
- name: sshd.socket
enabled: true
2021-11-02 22:32:22 -04:00
storage:
files:
- path: /etc/zincati/config.d/51-rollout-wariness.toml
contents:
inline: |
[identity]
rollout_wariness = 0
2021-11-02 22:32:22 -04:00
- path: /etc/zincati/config.d/55-updates-strategy.toml
contents:
inline: |
[updates]
strategy = "periodic"
[updates.periodic]
time_zone = "localtime"
[[updates.periodic.window]]
days = [ "Sun" ]
start_time = "0:00"
length_minutes = 60
- path: /etc/yum.repos.d/docker-ce.repo
contents:
inline: |
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/fedora/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://download.docker.com/linux/fedora/$releasever/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://download.docker.com/linux/fedora/$releasever/source/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://download.docker.com/linux/fedora/$releasever/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://download.docker.com/linux/fedora/$releasever/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://download.docker.com/linux/fedora/$releasever/source/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://download.docker.com/linux/fedora/$releasever/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://download.docker.com/linux/fedora/$releasever/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://download.docker.com/linux/fedora/$releasever/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
2021-11-02 22:32:22 -04:00
- path: /etc/tuned/active_profile
overwrite: true
contents:
inline: |
virtual-guest
- path: /etc/tuned/profile_mode
overwrite: true
contents:
inline: |
manual
- path: /etc/systemd/zram-generator.conf
overwrite: true
contents:
inline: |
[zram0]
zram-fraction = 1
max-zram-size = 8192
compression-algorithm = zstd
2021-11-02 22:32:22 -04:00
- path: /etc/security/limits.d/30-disable-coredump.conf
overwrite: true
contents:
inline: |
2021-11-02 22:32:22 -04:00
* hard core 0
- path: /etc/ssh/ssh_config.d/10-custom.conf
2021-11-02 22:32:22 -04:00
overwrite: true
contents:
2021-11-02 22:32:22 -04:00
inline: |
GSSAPIAuthentication no
VerifyHostKeyDNS yes
- path: /etc/sysconfig/chronyd
overwrite: true
contents:
inline: |
# Command-line options for chronyd
OPTIONS="-F 1"
- path: /etc/unbound/unbound.conf
overwrite: true
contents:
inline: |
server:
chroot: ""
auto-trust-anchor-file: "/var/lib/unbound/root.key"
trust-anchor-signaling: yes
root-key-sentinel: yes
tls-cert-bundle: /etc/ssl/certs/ca-certificates.crt
tls-ciphers: "PROFILE=SYSTEM"
hide-http-user-agent: yes
hide-identity: yes
hide-trustanchor: yes
hide-version: yes
deny-any: yes
harden-algo-downgrade: yes
harden-large-queries: yes
harden-referral-path: yes
harden-short-bufsize: yes
ignore-cd-flag: yes
max-udp-size: 3072
module-config: "validator iterator"
qname-minimisation-strict: yes
unwanted-reply-threshold: 10000000
use-caps-for-id: yes
outgoing-port-permit: 1024-65535
prefetch: yes
prefetch-key: yes
forward-zone:
name: "."
forward-tls-upstream: yes
forward-addr: 1.1.1.2@853#security.cloudflare-dns.com
forward-addr: 1.0.0.2@853#security.cloudflare-dns.com
forward-addr: 2606:4700:4700::1112@853#security.cloudflare-dns.com
forward-addr: 2606:4700:4700::1002@853#security.cloudflare-dns.comff
- path: /etc/systemd/system/unbound.service.d/override.conf
contents:
inline: |
[Service]
MemoryDenyWriteExecute=true
PrivateDevices=true
PrivateTmp=true
ProtectHome=true
ProtectClock=true
ProtectControlGroups=true
ProtectKernelLogs=true
ProtectKernelModules=true
# This breaks using socket options like 'so-rcvbuf'. Explicitly disable for visibility.
ProtectKernelTunables=true
ProtectProc=invisible
RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX
RestrictRealtime=true
SystemCallArchitectures=native
SystemCallFilter=~@clock @cpu-emulation @debug @keyring @module mount @obsolete @resources
RestrictNamespaces=yes
LockPersonality=yes
- path: /etc/docker/daemon.json
contents:
inline: |
{
"default-runtime": "runsc-systrap",
"runtimes": {
"runsc-kvm": {
"path": "/usr/local/bin/runsc",
"runtimeArgs": [
"--platform=kvm",
"--network=host"
]
},
"runsc-systrap": {
"path": "/usr/local/bin/runsc",
"runtimeArgs": [
"--platform=systrap",
"--network=host"
]
},
"runsc-kvm --host-uds=open": {
"path": "/usr/local/bin/runsc",
"runtimeArgs": [
"--platform=kvm",
"--network=host",
"--host-uds=open"
]
},
"runsc-systrap --host-uds=open": {
"path": "/usr/local/bin/runsc",
"runtimeArgs": [
"--platform=systrap",
"--network=host",
"--host-uds=open"
]
},
"runsc-kvm-debug": {
"path": "/usr/local/bin/runsc",
"runtimeArgs": [
"--platform=kvm",
"--network=host",
"--debug-log=/tmp/runsc-kvm/",
"--debug",
"--strace"
]
},
"runsc-systrap-debug": {
"path": "/usr/local/bin/runsc",
"runtimeArgs": [
"--platform=systrap",
"--network=host",
"--debug-log=/tmp/runsc-systrap/",
"--debug",
"--strace"
]
}
}
}
2021-11-02 22:32:22 -04:00
links:
- path: /etc/localtime
target: ../usr/share/zoneinfo/America/New_York
- path: /etc/systemd/system/multi-user.target.wants/unbound.service
target: /usr/lib/systemd/system/unbound.service
2021-11-02 22:32:22 -04:00
- path: /etc/systemd/system/multi-user.target.wants/tuned.service
target: /usr/lib/systemd/system/tuned.service
- path: /etc/systemd/system/kdump.service
2021-11-02 22:32:22 -04:00
target: /dev/null
- path: /etc/systemd/system/debug-shell.service
target: /dev/null
- path: /etc/systemd/system/ctrl-alt-del.target
target: /dev/null
2021-11-02 22:32:22 -04:00
kernel_arguments:
should_exist:
- spectre_v2=on
- spec_store_bypass_disable=on
- l1tf=full,force
- mds=full,nosmt
- tsx=off
- tsx_async_abort=full,nosmt
2021-11-02 22:32:22 -04:00
- kvm.nx_huge_pages=force
- nosmt=force
- l1d_flush=on
- mmio_stale_data=full,nosmt
- random.trust_bootloader=off
- random.trust_cpu=off
- intel_iommu=on
- amd_iommu=force_isolation
- efi=disable_early_pci_dma
- iommu=force
- iommu.passthrough=0
- iommu.strict=1
- slab_nomerge
- init_on_alloc=1
- init_on_free=1
- pti=on
- vsyscall=none
- page_alloc.shuffle=1
- randomize_kstack_offset=on
- extra_latent_entropy
- debugfs=off