Course contentsShow
← Linux
Lesson 437 of 1,8194. Advanced Access Control ModelsFree lesson

Implementing Multi-Factor Policy Enforcement

Combine filesystem permissions with process-based verification for critical system changes.

In this lesson, you will learn how to strengthen critical system security by requiring both standard filesystem permissions and secondary process-based verification before a configuration change is permitted.

The Problem: Beyond Permissions

Standard POSIX permissions (Read, Write, Execute) and even ACLs are often insufficient for protecting highly sensitive files. If an administrative account or a compromised service with sufficient privileges targets a critical configuration file, filesystem permissions alone cannot distinguish between an authorized change and a malicious one. To prevent unauthorized tampering, we implement "Multi-Factor Policy Enforcement" by creating a gatekeeper mechanism.

Layering Security with Verification

The strategy here is to decouple the ability to write to a file from the intent of the action. We do this by ensuring that any process attempting to modify a critical system file must also satisfy a secondary, process-based check—such as validating the process's signature, its parentage, or its current security state (like specific POSIX capabilities).

Imagine a critical file /etc/system-config. Even if a user has write access, we can restrict modification using a helper script that verifies the process calling it:

# A simplified gatekeeper script
#!/bin/bash
# Check if the caller has the required capability (e.g., CAP_SYS_ADMIN)
# or is a verified, signed binary.
if [ "$(grep -c 'trusted_binary' /proc/$PPID/status)" -eq 1 ]; then
    cat - > /etc/system-config
else
    echo "Access Denied: Process not verified."
    exit 1
fi

By pointing administrative tools to this script instead of giving them direct write access to the file, you ensure that even if an attacker gains the necessary UID/GID to modify the file, the operation will fail unless the environment also proves the process is trustworthy and properly authenticated.

Why This Matters

This approach mitigates the risk of "living off the land" attacks where an adversary uses existing, high-privileged binaries to modify system state. By combining the restrictive filesystem layer (limiting write access) with a dynamic verification layer (checking the process environment), you create a fail-closed architecture that demands more than just a successful login to alter the system's foundation.

Key Takeaway: Never rely on filesystem permissions alone for critical assets; enforce a second layer of process-based validation to ensure that only authorized, verified logic can enact system changes.