Gardience Documentation gardience.com →
Docs / Installation

Install in FIPS mode

CMMC requirement 3.13.11 asks for FIPS-validated cryptography wherever it protects CUI. Gardience stores your System Security Plan, proof files, and evidence packs, and it controls the machines that hold CUI. Many teams treat it as part of the CUI boundary, so an assessor asks which cryptographic modules protect it and for their CMVP certificate numbers. A FIPS install answers that question.

What a FIPS install is

#

A FIPS install runs Gardience's FIPS images instead of the standard ones. Every container that does cryptography (the console, the Salt master, the web server, the runner, and the config keeper) is built on Red Hat's Universal Base Image 9, and its cryptography is Red Hat's OpenSSL, except what is listed under What is outside the module. That OpenSSL's FIPS provider is a validated module:

ModuleVersionCMVP certificateStandard
Red Hat Enterprise Linux 9 - OpenSSL FIPS Provider3.0.7-395c1a240fbfffd8#4857FIPS 140-3, active until 2029-10-28

RHEL's OpenSSL reads the host kernel's FIPS flag. On a host in FIPS mode, every container loads the FIPS provider in approved mode, and the provider refuses every algorithm it does not approve. For example MD5, Ed25519, X25519, and the ChaCha20 TLS suites are refused.

Things to know:

Before you start

#
sudo fips-mode-setup --enable
sudo reboot
sudo fips-mode-setup --check     # FIPS mode is enabled.

Install

#

On a host in FIPS mode, the installer picks the FIPS images on its own:

sudo ./install/install.sh --license /path/to/gardience-license.json

You can also ask for it with --fips. The installer refuses --fips on a host that is not in FIPS mode, and changes nothing. To install the standard images on a FIPS host, use --no-fips.

When it finishes, the installer checks every container and prints one line:

    FIPS 140:  on: every container runs Red Hat's OpenSSL FIPS provider in approved mode (CMVP #4857)

Check again any time (for example after a host update):

sudo /opt/gardience/gardience fips-check

It lists each container, the module it runs, and whether it is in approved mode. The result is shown on the console under Security > FIPS 140.

Security > FIPS 140

#

The page shows whether the host is in FIPS mode, the module each container runs and its CMVP certificate number (linked to the NIST page), and the host kernel against the disk encryption certificates. A version that is not listed on a certificate gets no number, and the page says so. On a FIPS install it also lists machines whose Salt agent is older than 3007 (see Agents on a FIPS server). Refused here tries MD5, Ed25519, and X25519 when the page loads, so you can show an assessor that the module refuses them.

Agents on a FIPS server

#

A FIPS server refuses Salt's SHA-1 defaults, so agents must use SHA-224. Gardience writes these settings into every agent it installs (enrollment, Add machines, and the onboarding scripts):

fips_mode: True
encryption_algorithm: OAEP-SHA224
signing_algorithm: PKCS1v15-SHA224

Only Salt 3007 and later use these settings (Gardience installs 3008.3). An agent you installed yourself needs the same three lines in its minion.d folder.

Agents on Salt 3006. Salt 3006 does not know these settings. A 3006 agent still connects and answers jobs (tested with 3006.28 on Ubuntu 24.04 and Windows Server 2022), because it ignores them and uses Salt's older key exchange, RSA-OAEP with SHA-1, which the module still accepts. So nothing fails, and nothing on the machine tells you. Gardience does: the machine list marks these agents "no SHA-224 on this FIPS server", and Security > FIPS 140 lists them. Upgrade them to Salt 3008.3 (on Windows, the 3008.3 installer; on Linux, unlock the salt packages and install 3008.3), then run the enrollment script on them again.

The agent's own cryptography runs on the managed machine, in the OpenSSL that Salt's agent package carries. That OpenSSL is not in FIPS mode by itself, even on a machine in FIPS mode. What Gardience does about it:

Gardience checks each machine's FIPS mode (CMMC setting FIPS-validated cryptography mode).

License and release signatures

#

From 1.28, licenses and releases carry a second signature, ECDSA P-384 with SHA-384 (FIPS 186-5), next to Ed25519. A FIPS install checks only that one, inside the module:

What is outside the module

#

Backups

#

Encrypted backups (gardience backup --passphrase-file F) use the host's OpenSSL for AES-256-CBC with PBKDF2, so on a FIPS host they are made inside the host's FIPS module.

Upgrades

#

gardience upgrade keeps a FIPS install a FIPS install, and refuses to continue if the host is no longer in FIPS mode. Run gardience fips-check afterwards.

#
Gardience by Bouziden Management LLC.