variant: fcos version: 1.4.0 passwd: users: - name: tomster ssh_authorized_keys: - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDbVNnQVs6SVW1GvQQ7FE6afs08LMtTNmDIPtoT3+Aqa7I3HOZRgWpqh3kIz3OTOCs2zl5JHCJDaANvadjGFcdtSI+zy7bozpj5TJWGDnGkH3Rp2SBBRK6twjjrN9nbTJ2ihlkXEOA2e3SDFXEkwu6t0fLZelBUk3FWnbK/xPmsRUuEF90oxpXpZIPeFbE4nNK3HarNPL+XzA2xzSqrwNk9ICCJ9MS3OcnPpWIQR3LKLEgyPFKwy4K6WzQyNvr5uFAcV9Zrq9TM93HSOUdtFFXcDeAEu76cQorsgAyU7XbAPqSza780qF/kHhQ+Hb4q1Wmyk62nAu7dT86lujpzIWXOdFJZyb3WWjP21qe7bk8A1S5Q9lfto/bo0Rs2wHbBRtoxMrb8DTC3EtErjN/IXMZrqMZpj3hNiNxP3PYKXLWb6AbuWjQO5d4Tu4vv4QWKGyJwvkI55V0sI9a2lLODAK+x9z4K7cbGLFHqdEFCLkq7sDU3zd9q68//M/LQO3AO9sMpd8jHDg0xdgdfh5dP6grUDypz1h/HtXCT+w3Ka2geitqoTMv6y0WO1vT+c97mvbjf24rwoLiPe7qVPnxKTRPNRH1vhmOLeZsQva2ATXBCR/J+Xn4JzSWOt17N/s5ldvfD+d6FrYzDNw664efaXMIWCbVJtlKvas0I9iM2VYRM7Q== - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDcmfm4RKkVC02QrF6ajGVVlbO3+AiVVyfoO4jbUjNbBNarVNgOHNC2lyxo3DJG33uKg74/e6fwj2mr2qW7Bq/yefmMqZrwY6ZyBDOOnkmsaMjX3Q5dJVRvHaYDShseJEBVtALVZFPyYQhdCdCEI/pO1Oeh+bDgLFinWoKAx6Fau8ArjbCsU4WfmgTUQae8AkE5e+uj+2T7Nq195CgfWEnAcKTKEYTr+6Y5a8L/w6ugto41bXvbwWhgogMT7epkcsfSF14M5hi0kBTawmzSi6HsqnAs4PWadaN0IMtfZJ/ZdpNw2QjdDKReGc3AcvEUQU9840RgVmXLp0JT5kdHJZabYcpPaDRwTw3A/oNIEZCzOKve8j4aFrf003etUn7Vq5wchyqyRrk2KRnK61v8BOtF7REs5jw/hQ1PdbsGewhxmGQy3gJ670BS1apQDvrZVHUqIsl3SGcykBBQvLu0F5erZ3ENPAk0wb++ygBtqsoF0wV9rv+L/VEh7233/TUQbH6K2ggZg5SvQnjUA4JqnBcSPf8kMlEGCU+8yeGSF086vL3gpVF6VpvUa34Sh+RbLGtNPVcoTSa2yLwSHdU0NmA9Lj/0M3+ty+uK4pBU86zIIAmyB9NBN/TcpeR7PVi3J991EbVLZgwzAK7S/LAmE6vWLG1IoQbDDN7QCB9XWiFiaQ== groups: - wheel - sudo 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/sed -i 's/#DNSSEC=no/DNSSEC=yes/g' /etc/systemd/resolved.conf ExecStart=/usr/bin/systemctl restart systemd-resolved ExecStart=/usr/bin/rpm-ostree install firewalld qemu-guest-agent tuned unbound ExecStart=/bin/touch /var/lib/%N.stamp ExecStart=/usr/bin/sed 's/nullok//g' /etc/pam.d/system-auth ExecStart=/usr/bin/curl https://raw.githubusercontent.com/Kicksecure/security-misc/master/etc/modprobe.d/30_security-misc.conf -o /etc/modprobe.d/30_security-misc.conf ExecStart=/usr/bin/curl https://raw.githubusercontent.com/Kicksecure/security-misc/master/etc/sysctl.d/30_security-misc.conf -o /etc/sysctl.d/30_security-misc.conf ExecStart=/usr/bin/sed -i 's/kernel.yama.ptrace_scope=2/kernel.yama.ptrace_scope=1/g' /etc/sysctl.d/30_security-misc.conf ExecStart=/usr/bin/curl https://raw.githubusercontent.com/Kicksecure/security-misc/master/etc/sysctl.d/30_silent-kernel-printk.conf -o /etc/sysctl.d/30_silent-kernel-printk.conf ExecStart=/usr/bin/curl https://raw.githubusercontent.com/Kicksecure/security-misc/master/etc/sysctl.d/30_security-misc_kexec-disable.conf -o /etc/sysctl.d/30_security-misc_kexec-disable.conf ExecStart=/usr/bin/curl https://raw.githubusercontent.com/GrapheneOS/infrastructure/main/chrony.conf -o /etc/chrony.conf ExecStart=/usr/bin/mkdir -p /etc/systemd/system/NetworkManager.service.d ExecStart=/usr/bin/curl https://gitlab.com/divested/brace/-/raw/master/brace/usr/lib/systemd/system/NetworkManager.service.d/99-brace.conf -o /etc/systemd/system/NetworkManager.service.d/99-brace.conf ExecStart=/usr/bin/mkdir -p /etc/systemd/system/irqbalance.service.d ExecStart=/usr/bin/curl https://gitlab.com/divested/brace/-/raw/master/brace/usr/lib/systemd/system/irqbalance.service.d/99-brace.conf -o /etc/systemd/system/irqbalance.service.d/99-brace.conf ExecStart=/usr/bin/mkdir -p /etc/systemd/system/sshd.service.d ExecStart=/usr/bin/curl https://raw.githubusercontent.com/GrapheneOS/infrastructure/main/systemd/system/sshd.service.d/limits.conf -o /etc/systemd/system/sshd.service.d/limits.conf ExecStart=/bin/systemctl disable systemd-resolved ExecStart=/bin/systemctl --no-block reboot [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/docker run --detach --privileged --name watchtower --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock -v /etc/localtime:/etc/localtime:ro containrrr/watchtower --schedule "0 5 0 * * 1" ExecStart=/bin/touch /var/lib/%N.stamp [Install] WantedBy=multi-user.target - name: setsebool.service enabled: true contents: | [Service] Type=oneshot 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: 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 storage: files: - path: /etc/ssh/sshd_config.d/10-custom.conf contents: inline: | X11Forwarding no GSSAPIAuthentication no - path: /etc/zincati/config.d/51-rollout-wariness.toml contents: inline: | [identity] rollout_wariness = 0 - 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/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: | # This config file enables a /dev/zram0 device with the default settings [zram0] zram-fraction = 1 max-zram-size = 8192 - path: /etc/security/limits.d/30-disable-coredump.conf overwrite: true contents: inline: | * hard core 0 - path: /etc/ssh/ssh_config.d/10-custom.conf overwrite: true contents: inline: | GSSAPIAuthentication no VerifyHostKeyDNS yes - path: /etc/systemd/system/gvisor-updater.service contents: inline: | [Unit] Description=gVisor Update Require=network-online.target Before=docker.service [Service] WorkingDirectory=/var/roothome Type=oneshot ExecStart=/usr/bin/sleep 5 ExecStart=/usr/bin/curl -O https://storage.googleapis.com/gvisor/releases/release/latest/x86_64/runsc ExecStart=/usr/bin/curl -O https://storage.googleapis.com/gvisor/releases/release/latest/x86_64/runsc.sha512 ExecStart=/usr/bin/curl -O https://storage.googleapis.com/gvisor/releases/release/latest/x86_64/containerd-shim-runsc-v1 ExecStart=/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/chmod a+rx runsc containerd-shim-runsc-v1 ExecStart=/usr/bin/mv runsc containerd-shim-runsc-v1 /var/usrlocal/bin [Install] WantedBy=multi-user.target - 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: 8.8.8.8#dns.google forward-addr: 8.8.4.4#dns.google forward-addr: 2001:4860:4860::8888#dns.google forward-addr: 2001:4860:4860::8844#dns.google - path: /etc/systemd/system/unbound.service.d/override.conf contents: inline: | [Unit] 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-ptrace", "runtimes": { "runsc-ptrace": { "path": "/var/usrlocal/bin/runsc", "runtimeArgs": [ "--platform=ptrace", "--network=host" ] }, "runsc-kvm": { "path": "/var/usrlocal/bin/runsc", "runtimeArgs": [ "--platform=kvm", "--network=host" ] } } } 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 - path: /etc/systemd/system/multi-user.target.wants/tuned.service target: /usr/lib/systemd/system/tuned.service - path: /etc/systemd/system/kdump.service.target target: /dev/null 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 - 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=on - 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