Secure Configuration and Hardening Review Checklist

A configuration / CIS hardening review turned into a how-to-check field guide: approach and benchmarking, accounts and authentication, patch management, services and attack-surface minimisation, logging and audit, network config, malware protection, encryption and time sync — plus Windows-specific (SMB signing, LSASS, ASR, BitLocker, GPO) and Linux-specific (SSH, sudo, sysctl, file perms, auditd) bands. Each item: how to check (CIS-CAT, Lynis, OpenSCAP, HardeningKitty, PingCastle), the finding,

LazyHackers.in — Checklist

🔐 Secure Configuration and Hardening Review Checklist

CIS / STIG hardening, item by item: how to check · the finding · the fix

☰   How to use this guide

A hardening review compares a system's actual configuration against a secure baseline — CIS Benchmarks, DISA STIGs or an internal standard — and reports the gaps. It's a credentialed, mostly read-only audit: pull the config, score it against the benchmark, then verify and prioritise the high-impact deviations (default creds, weak auth, exposed services, missing logging) over cosmetic ones. This guide turns the core review areas into how-to-check, with Windows and Linux specifics.

Automated benchmark tools do the breadth; you triage and prioritise. Map every finding to a control (CIS control #, STIG ID, or NIST 800-53 family). Each section ends with a coverage table.
Run as an authorised, credentialed config review. Tools read configuration; don't apply remediation on production during the assessment — report and let change-management remediate.
# Benchmark scanners (pick per platform)
#  CIS-CAT Pro          -> Windows/Linux CIS scoring
#  Lynis                -> lynis audit system            (Linux)
#  OpenSCAP / oscap     -> oscap xccdf eval --profile cis ds.xml   (Linux/STIG)
#  HardeningKitty       -> Invoke-HardeningKitty -Mode Audit       (Windows)
#  Microsoft SCT / PingCastle / Nipper (devices)

0   Approach & benchmarking

Pick the right baseline for each system role and OS version, gather configs, and score against it.

⚑ Report as: “No secure-configuration baseline / systems not benchmarked”
🛡 Fix: Adopt a documented baseline per OS/role (CIS Benchmark level 1/2 or STIG); enforce it via golden images / config management (GPO, Ansible, DSC); scan regularly and track drift; remediate by risk.

Approach & benchmarking — full coverage

Checklist itemHow to checkReport as
Baseline chosen per OS/roleselect CIS/STIG profileBaseline selected
Config gathered (credentialed)collect configConfig collected
Benchmark scan runCIS-CAT/Lynis/oscapBenchmark scored
Drift from baseline trackedcompare to standardConfiguration drift
Findings mapped to controlsmap CIS/STIG/NISTFindings mapped

1   Accounts & authentication

Default/unused accounts, weak password policy, no MFA, shared admin and excessive privileges are the highest-impact config gaps.

# Windows
net accounts ; net user ; net localgroup administrators
secedit /export /cfg secpol.cfg            # review password/lockout policy
# Linux
awk -F: '($3>=1000){print}' /etc/passwd    # user accounts ; chage -l <user> for aging
grep -E 'PASS_(MAX|MIN)_DAYS|PASS_MIN_LEN' /etc/login.defs
⚑ Report as: “Weak password/lockout policy / default or unused privileged accounts”
🛡 Fix: Enforce strong password + lockout policy; remove/disable default and unused accounts; MFA on all admin/remote access; unique per-admin accounts (no shared); least privilege; rename/secure built-in admin; restrict who's in privileged groups.

Accounts & authentication — full coverage

Checklist itemHow to checkReport as
Weak password policysecedit / login.defsWeak password policy
No account lockoutreview policyNo lockout policy
Default/built-in accounts enabledenumerate accountsDefault account enabled
Unused/stale accountsreview last-logonStale account
No MFA on admin/remotecheck MFANo MFA
Shared admin accountsreview accountsShared admin account
Excessive privileged group membershipreview groupsExcessive privilege
Passwords stored reversiblycheck storageReversible password storage

2   Patch management & services

Two of the biggest attack-surface levers: missing patches and unnecessary running services/ports.

# Patch status
wmic qfe list brief                 # Windows hotfixes  (or Get-HotFix)
apt list --upgradable ; yum check-update     # Linux
# Listening services / open ports
netstat -anob   (Windows)  ;  ss -tulpn   (Linux)
systemctl list-unit-files --state=enabled    # enabled services (Linux)
⚑ Report as: “Missing security patches / unnecessary exposed services”
🛡 Fix: Keep OS and software patched (managed patch cycle, track EoL); disable/remove unneeded services, roles and features; close unused ports; minimal install; review listening services against need.

Patch & services — full coverage

Checklist itemHow to checkReport as
Missing security patchesqfe/apt/yumMissing patch
EoL / unsupported softwareversion checkUnsupported software
Unnecessary services enabledlist servicesUnnecessary service
Unneeded open portsss/netstatExposed port
Unused roles/features installedreview installExcessive attack surface
No patch-management processreview processNo patch management

3   Logging & audit

Can the system evidence an incident? Audit policy on, logs sized and shipped off-box, key events captured.

# Windows audit policy
auditpol /get /category:*
# Linux auditd + log config
systemctl is-active auditd ; auditctl -l ; ls -l /var/log/{auth.log,secure}
⚑ Report as: “Insufficient audit logging / logs not forwarded off-host”
🛡 Fix: Enable an audit policy that captures logon, privilege use, account/policy changes and process creation; size logs adequately; forward to a central SIEM (immutable, retained); protect logs from local tampering; sync time.

Logging & audit — full coverage

Checklist itemHow to checkReport as
Audit policy not configuredauditpol / auditctlInsufficient audit policy
Key events not loggedreview policyMissing event logging
Logs not forwarded (SIEM)check forwardingNo central logging
Insufficient log size/retentioncheck configInadequate retention
Logs locally tamperablecheck ACLsTamperable logs
Command/process logging offcheck configNo process logging

4   Network, time, malware & encryption

Host network config (firewall on, weak protocols off), time sync, endpoint protection, and encryption at rest.

⚑ Report as: “Host firewall disabled / weak protocols enabled / disk not encrypted”
🛡 Fix: Host firewall on with least-privilege rules; disable legacy/weak protocols (SMBv1, TLS 1.0/1.1, LLMNR/NBT-NS); NTP from a trusted source; endpoint protection enabled and updated; full-disk encryption (BitLocker/LUKS); secure boot.

Network, time, malware & encryption — full coverage

Checklist itemHow to checkReport as
Host firewall disabledcheck firewall stateHost firewall disabled
Weak/legacy protocols enabledcheck SMBv1/TLS/LLMNRWeak protocol enabled
No/incorrect time synccheck NTPNo time synchronisation
Endpoint protection off/outdatedcheck AV/EDREndpoint protection gap
Disk not encryptedcheck BitLocker/LUKSNo disk encryption
Secure boot disabledcheck secure bootSecure boot disabled
Insecure remote access (RDP/SSH) configreview configInsecure remote access
Windows-specific

W   Windows-specific

Windows hardening hotspots: SMB signing, NTLM/LSASS protection, UAC, PowerShell logging, ASR rules and BitLocker — mostly GPO-driven.

# SMB signing + protocol
Get-SmbServerConfiguration | select RequireSecuritySigning, EnableSMB1Protocol
# Credential protection
Get-CimInstance Win32_DeviceGuard          # Credential Guard state
# PowerShell logging + ASR
Get-MpPreference | select AttackSurfaceReductionRules_Ids
Invoke-HardeningKitty -Mode Audit          # full CIS-style audit
⚑ Report as: “Windows: SMB signing not required / SMBv1 enabled / Credential Guard off”
🛡 Fix: Require SMB signing + disable SMBv1; enable Credential Guard / LSASS protection (RunAsPPL); UAC at highest; PowerShell script-block + module logging + constrained language; enable ASR rules; BitLocker; LAPS for local admin; apply the CIS GPO baseline (Microsoft SCT).

Windows — full coverage

Checklist itemHow to checkReport as
SMB signing not requiredGet-SmbServerConfigurationSMB signing not enforced
SMBv1 enabledcheck protocolSMBv1 enabled
Credential Guard / RunAsPPL offDeviceGuard / regLSASS not protected
UAC weak/disabledcheck UAC policyWeak UAC
PowerShell logging offcheck policyNo PowerShell logging
ASR rules not enabledGet-MpPreferenceASR not configured
BitLocker offmanage-bde -statusNo disk encryption
No LAPS (local-admin reuse)check LAPSLocal-admin password reuse
LLMNR/NBT-NS enabledcheck policyLLMNR/NBT-NS enabled
AutoRun/AutoPlay enabledcheck policyAutoRun enabled
Not on CIS GPO baselineHardeningKitty/SCTBaseline deviations
Linux-specific

L   Linux-specific

Linux hardening hotspots: SSH config, sudo, file/permission hygiene, kernel sysctl, and auditd — Lynis and OpenSCAP cover most.

lynis audit system                          # full hardening audit + score
# SSH hardening
grep -Ei '^(PermitRootLogin|PasswordAuthentication|Protocol|PermitEmptyPasswords)' /etc/ssh/sshd_config
sudo -l ; cat /etc/sudoers /etc/sudoers.d/*  # sudo misconfig / NOPASSWD
# Dangerous file perms
find / -perm -4000 -type f 2>/dev/null      # SUID ; find / -perm -2 -type f world-writable
⚑ Report as: “Linux: SSH permits root/password login / world-writable or excess SUID binaries”
🛡 Fix: SSH: disable root login + password auth (keys only), no empty passwords; least-privilege sudo (no broad NOPASSWD); remove world-writable files and unnecessary SUID; harden sysctl (ASLR, disable IP forwarding/redirects); enable auditd; minimal packages; firewall on; apply the CIS/OpenSCAP profile.

Linux — full coverage

Checklist itemHow to checkReport as
SSH root login permittedsshd_configSSH root login enabled
SSH password auth (key-only expected)sshd_configSSH password auth
Empty passwords permittedsshd_config / shadowEmpty password allowed
sudo NOPASSWD / misconfigsudo -l / sudoersSudo misconfiguration
World-writable filesfind -perm -2World-writable file
Excess SUID/SGID binariesfind -perm -4000Excessive SUID binary
Weak kernel sysctl (ASLR/forwarding)sysctl -aWeak kernel parameters
auditd not runningsystemctl is-active auditdNo host auditing
No host firewall (iptables/ufw)check firewallNo host firewall
Unnecessary packages/servicesreview installedExcessive packages
Not on CIS/OpenSCAP profilelynis/oscapBaseline deviations

✓   Coverage map & how to run it

Run the universal areas on every system, then the OS-specific band. Prioritise gaps by exploitability: default creds, weak auth, exposed services and missing logging first.

SectionRun onFocus
Universal 0–4Every systemBaseline, accounts, patch/services, logging, network/crypto
WindowsWindows hostsSMB signing, Credential Guard, ASR, BitLocker, GPO baseline, LAPS
LinuxLinux hostsSSH, sudo, file perms, sysctl, auditd, CIS/OpenSCAP

Core principle: a hardening review measures the gap between the running config and a secure baseline — so anchor to a real benchmark (CIS / STIG / NIST 800-53) and map every finding to a control. Automated scanners give breadth (CIS-CAT, Lynis, OpenSCAP, HardeningKitty); your job is to prioritise the deviations that actually move risk and recommend enforcement via golden images / config management so the hardening doesn't drift back. Tick a box only when you've verified it.

Reactions

Related Articles