Why default installations are risky
Operating systems ship configured to work with the widest possible range of software. That means services running that you will never use, permissive default permissions, verbose error messages, legacy protocols enabled, and logging that captures too little to investigate an incident.
None of this is a vendor failing — it is a deliberate trade-off favouring compatibility. Hardening is where you shift that trade-off toward security for your specific use.
What we harden
| Area | What we do |
|---|---|
| Attack surface | Disable unused services and roles, close unnecessary ports, remove default sample content |
| Accounts | Rename or disable defaults, enforce least privilege, separate admin accounts, remove dormant users |
| Authentication | Strong password policy, MFA on administrative access, key-based SSH with password auth disabled |
| Patching | Establish a workable patch cycle with testing and rollback, not ad-hoc updates |
| Network exposure | Host firewall configured, management interfaces restricted to admin networks |
| Legacy protocols | Disable SMBv1, LLMNR, NBT-NS, weak TLS versions and ciphers |
| Logging | Meaningful audit policy, centralised log forwarding, sufficient retention |
| File system | Permission review, encryption at rest where appropriate |
| Backup verification | Confirming backups run, are isolated, and can actually be restored |
Windows-specific work
- Group Policy baselines applied consistently rather than per-server drift
- Active Directory hardening — privileged group membership, delegation review, tiered administration
- LAPS for unique local administrator passwords
- Credential Guard and attack surface reduction rules where supported
- Disabling legacy authentication and SMBv1
- RDP restricted, never exposed directly to the internet
Linux-specific work
- SSH hardening — key-based authentication, root login disabled, restricted ciphers
- Host firewall configuration via iptables/nftables or firewalld
- SELinux or AppArmor enabled rather than disabled for convenience
- Sudo policy review — no unrestricted sudo for routine accounts
- Unnecessary packages and daemons removed
- Auditd configured for meaningful, reviewable logging
Our approach
- Inventory and assessment — what you run, what state it is in, what each server actually does.
- Baseline selection — appropriate to the role and workload of each system.
- Test environment first where one exists, to identify application conflicts safely.
- Phased application — non-critical systems first, monitoring for issues before proceeding.
- Validation — confirming controls are effective, ideally verified by penetration testing.
- Documentation — the configuration applied, deviations, and how to maintain it.
- Drift monitoring — hardening decays as changes accumulate; we can monitor and periodically re-baseline.
Hardening is not one-off
Configurations drift. Someone disables a control to troubleshoot and forgets to re-enable it, new software changes permissions, an emergency change becomes permanent. We recommend periodic re-assessment — annually as a minimum, or continuously through managed security.