Verification on Linux should focus on effective state, not intended state. Many systems look hardened on paper but run with different runtime settings, custom unit overrides, or outdated packages.
Start with exposure checks: list listening ports, services, and interfaces. Good looks like only expected services are listening, and management services are reachable only from controlled networks.
Then verify privilege and integrity: check which accounts have sudo, which services run as root, and whether critical files are protected from modification. If you use integrity tooling, confirm it is actually reporting changes.
How to verify, and what good looks like:
• Exposure: no unexpected listening sockets, and firewalls or security groups match documented intent
• Accounts: minimal sudo users, no stale accounts, and clear ownership for service accounts
• Policy: SELinux is enforcing or AppArmor profiles are applied where intended, not quietly disabled
• Drift: configuration management reports converge, and manual edits are rare and reviewed
When to relax this: for short lived lab hosts or isolated build machines. Even then, write down what is relaxed, and keep at least basic patching and account hygiene because those failures travel easily between environments.