Home About Tools Projects Guides & Blog ⚡ Hire Me ✦ Websites Contact →
Home Projects M365 Tenant Hardening
M365 Security · Identity · Email

M365 Tenant
Hardening Checklist

A complete walkthrough of locking down a Microsoft 365 tenant from scratch. Email authentication, Conditional Access, device management, data protection, and audit logging. Over 40 controls, all documented.

Status Complete
Platform Microsoft 365
Controls covered 40+ items
Licence M365 Business Premium
Category Cybersecurity · M365
// overview

What this covers and why

Every time I onboard a new client or take over an existing M365 tenancy, I run through the same set of checks. In practice, most tenants I inherit have the same gaps: no DMARC, Security Defaults still on instead of Conditional Access, audit logging disabled, and SharePoint sharing set to Anyone. Sometimes all four.

This document is the full checklist I work through. It's split into five areas: email authentication, identity and access, device management, data protection, and monitoring. Everything is mapped to M365 Business Premium licencing, which covers most SMBs I work with. Where something needs P2 or E3, that's noted.

💡
This isn't a one-time job. The first pass gets you from a default tenant to a hardened one. After that it's quarterly reviews, checking for new users who slipped past enrolment, and watching for Microsoft's Secure Score recommendations as new controls get added.
// email authentication

SPF, DKIM, and DMARC

Email authentication is the first thing I check. It's free to configure, most tenants don't have it set up properly, and it makes a real difference to deliverability and phishing resistance. The three records work together and each one builds on the last.

📧
Email Authentication Controls
DNS records and Exchange Online configuration
ControlWhat it doesLicence
SPF recordDeclares which mail servers are authorised to send on behalf of your domain. Prevents spoofing at the envelope level. For M365 only tenants this is usually v=spf1 include:spf.protection.outlook.com -allFREE
DKIM signingCryptographically signs outbound emails so receiving servers can confirm they weren't altered in transit. Enabled per-domain in the Defender portal under Email Authentication Settings.FREE
DMARC recordTies SPF and DKIM together and tells receiving servers what to do when mail fails both checks. Start with p=none to monitor, then move to p=quarantine after reviewing reports.FREE
Anti-phishing policyEnable impersonation protection for key users and domains. Set spoof intelligence to block. Defender for Office 365 P1 (included in BP) adds mailbox intelligence for better detection.M365 BP
Safe Links and Safe AttachmentsRewrite URLs at click time and detonate attachments in a sandbox before delivery. Apply to all users. Set Safe Attachments to Dynamic Delivery to avoid delays.M365 BP
Disable SMTP AUTHLegacy SMTP AUTH bypasses MFA. Disable at tenant level in the Exchange Admin Centre, then re-enable per-mailbox only for printers or line-of-business apps that genuinely need it.FREE
⚠️
Don't jump straight to DMARC p=reject. Deploy p=none first, point rua to a reporting address (I use dmarcian or MXToolbox), and review the aggregate reports for two to four weeks. You'll almost always find legitimate senders you'd have broken.
// identity and access

MFA, Conditional Access, and admin hygiene

This is where most of the risk sits. A hardened email configuration doesn't matter much if an admin account has no MFA and a password that got breached two years ago.

🔐
Identity Controls
Entra ID, MFA, and Conditional Access
ControlWhat it doesLicence
Disable Security DefaultsSecurity Defaults and Conditional Access are mutually exclusive. Once you've built your CA policies, disable Security Defaults. Never leave both off at the same time, even briefly.FREE
MFA for all usersRequire MFA on every sign-in via Conditional Access. Block SMS as an MFA method and push users to Microsoft Authenticator with number matching turned on.P1
Block legacy authenticationIMAP, POP3, and basic auth can't do MFA. Block them via a CA policy targeting the Exchange ActiveSync and Other Clients conditions. This alone stops the majority of password spray attacks.P1
Dedicated admin accountsNo one should be doing day-to-day work as a Global Admin. Create separate cloud-only admin accounts, don't assign M365 licences to them, and use them only for admin tasks.FREE
Break-glass accountsTwo emergency access accounts excluded from all CA policies. Strong, unique passwords. Monitored with an alert rule so any sign-in triggers an immediate notification.FREE
Password protectionEnable Entra ID Password Protection to block common passwords and custom banned terms. Extends to on-prem AD via the Password Protection agent if hybrid.P1
Self-service password resetReduces helpdesk load and means users can recover accounts themselves. Require two authentication methods for SSPR to prevent it becoming a bypass route.P1
Privileged Identity ManagementMakes admin roles eligible rather than permanent. Admins activate roles just-in-time when needed, with MFA and an approval workflow. Cuts standing access risk substantially.P2
// device management

Intune, BitLocker, and compliance

Device management is where M365 Business Premium earns its keep. Intune gives you full MDM without needing a separate licence, and the combination of compliance policies plus Conditional Access means you can enforce that only healthy, managed devices get access to company data.

💻
Device Controls
Intune MDM, compliance, and endpoint security
ControlNotesLicence
Intune enrolmentAll Windows devices joined via Autopilot or manual Entra ID join and auto-enrolled to Intune. macOS devices enrolled via Company Portal.M365 BP
Compliance policiesMinimum OS version, BitLocker required, Defender real-time protection required, no jailbreak/root. Non-compliant devices blocked from company resources via CA.M365 BP
BitLocker via IntuneDeploy BitLocker through Intune endpoint security. Set recovery keys to escrow to Entra ID automatically. TPM + PIN required. Silent encryption where the device supports it.M365 BP
LAPSMicrosoft LAPS rotates the local admin password on each device and stores it in Entra ID. Stops lateral movement dead if a device is compromised.FREE
Block removable storageUSB drives blocked via Attack Surface Reduction rules in Intune. Exceptions created per-device for approved hardware using device instance IDs if needed.M365 BP
Defender for EndpointOnboarded via Intune connector. ASR rules in Block mode, real-time protection on, cloud-delivered protection enabled, and compliance integration sending risk scores to Intune.M365 BP
// data protection

SharePoint, Teams, and sensitivity labels

Default M365 sharing settings are extremely permissive. Out of the box, SharePoint allows anonymous sharing, guests can reshare files, and there's no classification on anything. Tightening this up doesn't require licences most SMBs don't already have.

🗂️
Data Protection Controls
SharePoint, OneDrive, Teams, and sensitivity labels
ControlNotesLicence
Restrict SharePoint sharingSet the tenant-wide sharing limit to Existing Guests or New and Existing Guests. Turn off Allow Anyone links. Set link expiry to 30 days maximum.FREE
Guest access reviewRun a quarterly review of all guest accounts in Entra ID. Remove guests who haven't signed in for 90 days. Automate with Access Reviews if on P2.FREE
Sensitivity labelsCreate at minimum Internal, Confidential, and Highly Confidential labels. Apply to emails, files, and Teams. Confidential+ adds encryption and prevents external sharing automatically.M365 BP
DLP policiesAt minimum, a policy to detect UK financial data and NHS numbers being shared externally. Start in audit mode, review hits for two weeks, then enforce.M365 BP
Teams external accessRestrict external federation to approved domains only. Disable federation with Teams Free and Skype consumers unless there's a business need.FREE
Retention policiesApply retention policies to Exchange, SharePoint, and Teams. Minimum 1-year retain for most businesses, 7 years for anything subject to financial regulation.M365 BP
// monitoring

Audit logging and alert policies

Hardening a tenant is only half the job. You also need to know when something goes wrong. The Unified Audit Log captures everything that happens in M365, but you have to make sure it's turned on and that you're actually reviewing the right events.

1
Enable the Unified Audit Log
It's off by default on older tenants. Enable it in the Microsoft Purview compliance portal. Retention is 90 days on standard licences and 1 year on E3/BP with the audit add-on.
2
Set up alert policies
At minimum: alert on break-glass sign-in, new Global Admin added, mail forwarding rule created, and mass file deletion. These catch the highest-impact scenarios.
3
Check Secure Score weekly
Secure Score tracks your posture against Microsoft's recommended controls. New recommendations appear as Microsoft adds them. Worth reviewing any score drop of more than 2 points.
4
Review sign-in logs monthly
Look for sign-ins from unexpected countries, impossible travel events, and accounts with high failure rates. Filter by Risky Sign-ins in Entra ID if on P2.
5
Quarterly access review
Review all admin roles, licensed accounts, guest users, and app registrations. Remove anything that's no longer needed. This is where attack surface creep gets caught.
// outcomes

What a fully hardened tenant looks like

40+
Security controls checked and configured
0
Unauthenticated external mail accepted
Cyber Essentials Plus compatible
~1 day
First-pass hardening time for a fresh tenant
Cyber Essentials alignment. Running through this checklist gets a tenant to a point where it satisfies all five Cyber Essentials technical controls: firewalls, secure configuration, access control, malware protection, and patch management. Useful if clients need the certification for public sector contracts or insurance.