Skip to content

secureblue/secureblue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

secureblue

secureblue trivy Discord Donate

This repo uses BlueBuild to generate hardened operating system images, using Fedora Atomic Desktop's base images as a starting point.

Scope

secureblue applies hardening with the following goals in mind:

  • Increase defenses against the exploitation of both known and unknown vulnerabilities.
  • Avoid sacrificing usability for most use cases where possible.

The following are not in scope:

  • Anything that sacrifices security for "privacy". Fedora is already sufficiently private and "privacy" often serves as a euphemism for security theater. This is especially true when at odds with improving security.
  • Anything related to "degoogling" chromium. For example, we will not be replacing hardened-chromium with Brave or ungoogled-chromium. Both of them make changes that sacrifice security for "privacy", such as enabling MV2. why?

Hardening

  • Installing and enabling hardened_malloc globally, including for flatpaks. Thanks to rusty-snake's spec
  • Installing hardened-chromium, which is inspired by Vanadium. Why chromium? Why not flatpak chromium?
  • Setting numerous hardened sysctl values details
  • Remove SUID-root from numerous binaries, replace functionality using capabilities, and remove sudo, su, and pkexec entirely in favor of run0 why?
  • Disable Xwayland by default (for GNOME, Plasma, and Sway images)
  • Mitigation of LD_PRELOAD attacks via ujust toggle-bash-environment-lockdown
  • Disabling coredumps
  • Disabling all ports and services for firewalld
  • Adds per-network MAC randomization
  • Blacklisting numerous unused kernel modules to reduce attack surface details
  • Enabling only the flathub-verified remote by default
  • Sets numerous hardening kernel arguments (Inspired by Madaidan's Hardening Guide) details
  • Require wheel user authentication via polkit for rpm-ostree install why?
  • Brute force protection by locking user accounts for 24 hours after 50 failed login attempts, hardened password encryption and password quality suggestions
  • Installing usbguard and providing ujust commands to automatically configure it
  • Installing bubblejail for additional sandboxing tooling
  • Set opportunistic DNSSEC and DNSOverTLS for systemd-resolved
  • Configure chronyd to use Network Time Security (NTS) using chrony config from GrapheneOS
  • Disable KDE GHNS by default why?
  • Disable install & usage of GNOME user extensions by default
  • Use HTTPS for all rpm mirrors
  • Set all default container policies to reject, signedBy, or sigstoreSigned
  • Disable a variety of services by default (including cups, geoclue, passim, and others)
  • Removal of the unmaintained and suid-root fuse2 by default
  • Disabling unprivileged user namespaces by default for the unconfined domain and the container domain

Rationale

Fedora is one of the few distributions that ships with selinux and associated tooling built-in and enabled by default. This makes it advantageous as a starting point for building a hardened system. However, out of the box it's lacking hardening in numerous other areas. This project's goal is to improve on that significantly.

For more info on BlueBuild, check out the BlueBuild homepage.

Customization

If you want to add your own customizations on top of secureblue, you are advised strongly against forking. Instead, create a repo for your own image by using the BlueBuild template, then change your base-image to a secureblue image. This will allow you to apply your customizations to secureblue in a concise and maintainable way, without the need to constantly sync with upstream.

FAQ

If you're encountering a problem or have a question, please consult the FAQ. If you can't find your answer there, please ask in the support channel on Discord.

Sponsor

Sponsorship options are on the Donate page. All donations are appreciated. Sponsors get a role on the Discord if desired. If you've donated but haven't yet been tagged with the role, please reach out to me.

Installation

Have a look at PREINSTALL-README before proceeding.

Rebasing

Note

If you don't already have a Fedora Atomic installation, use a Fedora Atomic ISO that matches your secureblue target image to install one. If you want to use a secureblue Silverblue image, start with the Fedora Silverblue ISO, Kinoite for Kinoite, Sericea (Sway Atomic) for Sericea and all the Wayblue images, and CoreOS for all the securecore images.

For more details on the available images, have a look at IMAGES before proceeding.

To rebase a Fedora Atomic or Fedora CoreOS installation, download the script below. This script does not install secureblue into the existing system. It rebases (fully replaces the existing system) with secureblue.

Download

Then, run it from the directory you downloaded it to:

bash install_secureblue.sh

Post-install

After installation, yafti will open. Make sure to follow the steps listed carefully and read the directions closely.

Then follow the POSTINSTALL-README.

Contributing

Follow the contributing documentation, and make sure to respect the CoC.

Development

For local Development building locally is the recommended approach.

Community

Opening issues is preferred, but Discord is available as well.