Every check, in plain English.
Tenant Strike runs 149 read-only checks across Microsoft 365 and Azure — the settings attackers probe first, from MFA coverage and legacy authentication to open storage and what your tenant exposes to the public internet. Each check explains what it looks for and why it matters; a scan tells you where your tenant stands.
This catalog is the configuration side of a scan. It does not include Vulnerability Watch, which matches new security advisories against the technology you actually run, or the attack paths Tenant Strike builds by correlating findings — both are worked out per tenant, per scan, so neither is a fixed number.
Identity
MFA enforcement, Conditional Access coverage, admin hygiene, legacy auth.
Use dedicated admin accounts
HighAdmin work should happen on dedicated cloud-only accounts — no mailbox attached (no inbox to phish), no on-prem sync (no AD compromise = no tenant compromise). This is CIS M365 control 1.1.1.
Allow only strong MFA methods
MediumA code sent by text message or voice call can be stolen with a SIM swap or relayed through a phishing proxy (Evilginx, EvilProxy). Microsoft Authenticator is stronger, and passkeys (FIDO2) are the methods Microsoft counts as phishing-resistant.
Emergency access (break-glass) accounts
MediumMicrosoft recommends two cloud-only Global Administrator accounts excluded from Conditional Access, so a bad policy, an expired federation certificate or an MFA outage cannot lock every administrator out of the tenant at once. This is a resilience control: without it, recovery from a lockout runs through Microsoft support and takes days.
Require MFA for admins
CriticalChecks a universal MFA baseline or an enforcing policy covering the 14 documented reference admin roles. Exclusions, custom roles and effective sign-ins need separate review.
Require phishing-resistant MFA for admins
MediumA code by text or an app approval can be relayed by a fake sign-in page. Passkeys, Windows Hello for Business and certificate-based MFA cannot. This checks that a Conditional Access policy makes admins use one of those for the same admin roles the admin MFA check covers.
Block device code flow
HighDevice code flow lets an attacker phish a working access token without a fake login page: the victim types a real code into a real Microsoft sign-in page, completes MFA themselves, and the resulting token goes to the attacker. Almost no organisation needs the flow, and Conditional Access can switch it off.
Conditional Access exclusions have outgrown break-glass
HighA Conditional Access policy only protects the people it applies to. Exclusion lists start as two break-glass accounts and grow — an exempt group here, a service account there — until the MFA policy the tenant believes is universal quietly isn't. This check reports who is exempt from the policies that enforce MFA and block legacy authentication.
Block legacy authentication
HighChecks for a policy blocking both legacy client types across all users and applications. A restricted or excluded policy cannot establish tenant-wide blocking.
Require MFA for all users
CriticalChecks for a mandatory MFA policy covering modern sign-ins for all users and applications, with policy exceptions and unsupported scopes left for review.
Conditional Access policies stuck in Report-only
MediumA Report-only Conditional Access policy is evaluated on every sign-in and then ignored — it writes a verdict to the log and lets the sign-in through regardless. Report-only is the correct place to START a policy, but a policy left there for months is protection the tenant believes it has and does not.
Block risky sign-ins
MediumWith Entra ID P2 you get Identity Protection — Microsoft scores every sign-in for risk (impossible travel, anonymous IP, leaked credentials, etc.). A CA policy that requires MFA or blocks high-risk sign-ins turns those signals into active defenses.
Keep trusted locations to your own networks
MediumA location marked trusted is often allowed to skip MFA and counts as lower risk. This flags trusted address ranges of 65,536 addresses or more, which cover far more than one organisation's offices.
Limit what ordinary users can create
MediumBy default every user in a Microsoft 365 tenant can register applications, create new tenants and security groups, and read the BitLocker recovery key of their own devices. An attacker who gets into one ordinary account inherits all of that.
Control device join and registration
MediumWhether joining or registering a device needs MFA, who may do it, who becomes local administrator during device join, and whether Microsoft Entra allows Windows LAPS backups. These tenant settings do not prove endpoint deployment or compliance.
Limit Global Administrators
HighMicrosoft recommends 2-4 Global Administrators per tenant. Too few = no recovery if one is locked out; too many = oversized blast radius from a single compromised credential.
Restrict guest invitations
MediumIf 'everyone' or 'all members' can invite guests, any compromised user can create an attacker-controlled guest account, then use it as a persistence mechanism even after the original account's password is reset.
Accounts with credentials in known breaches
CriticalMicrosoft Entra ID Protection matches your users against credential dumps found on the dark web and in law-enforcement seizures. An account flagged here has a password an attacker can already look up — the most direct route into a tenant there is, and one that no amount of perimeter hardening closes.
Stop sign-ins that still use legacy authentication
HighOld mail protocols such as IMAP, POP and SMTP AUTH sign in with a password alone and cannot ask for MFA. This reads the last 30 days of interactive sign-ins for them: a successful one is access no MFA policy covered, and failed ones are usually someone guessing passwords.
Do not expire passwords
MediumForcing people to change their password on a schedule makes passwords weaker: they pick something predictable and change one character each time. Microsoft, CISA and CIS recommend passwords that do not expire, backed by MFA.
Review recent privileged changes
MediumLists the privileged changes made in your tenant recently — apps granted access, new app secrets, and accounts given admin roles. These are the first things an attacker does after getting in, because each one survives a password reset. They are also normal administration, so the point is to confirm each one was you.
Remediate users flagged as at risk
HighEntra ID Protection rates every user's risk from Microsoft's signals — leaked passwords, anonymous or malicious IPs, impossible travel, token anomalies. A user left at risk is an signal that needs investigation. Open risk or an enabled account does not prove an active attacker or a successful sign-in.
Enable Security Defaults or Conditional Access
CriticalChecks Security Defaults configuration or a supported Conditional Access MFA and legacy-auth baseline. Configuration does not establish an MFA challenge at every sign-in.
Remove stale admin accounts
HighAdmin accounts that haven't been used in 90+ days are likely former employees or unused service accounts. They hold privilege but receive no ongoing scrutiny — a near-perfect target for a patient attacker.
Remove stale guest accounts
MediumGuest accounts that haven't signed in for 90+ days are likely abandoned but still have access to whatever they were invited to. They're a common lateral-movement vector after a third-party breach.
Register MFA for every user
HighReports MFA registration gaps among the member accounts returned by Microsoft's registration report. Registration does not establish policy enforcement or observed authentication.
DMARC / SPF / DKIM, Defender for Office, forwarding rules, transport policies.
Enable impersonation protection
HighDefender for Office's anti-phishing policy uses ML to detect spoofed and impersonating senders. By default impersonation protection of executives is OFF — every tenant should add their executives explicitly.
Keep the IP allow list narrow
MediumIPs in the connection filter allow list bypass Defender for Office's spam/phish/malware scanning entirely. Large ranges, stale entries, or Microsoft's bulk-sender 'SafeList' create permanent backdoors past your email security.
Enable anti-malware and auto-purge
HighAnti-malware policy blocks common malicious file types regardless of content (executables, scripts). Zero-hour Auto Purge (ZAP) retroactively removes mail from inboxes when Defender later identifies it as malware or phish — critical when threat signatures arrive minutes after delivery.
Enable Safe Attachments
HighSafe Attachments detonates inbound attachments in a sandbox before delivery. Without it, malicious documents reach users immediately, relying on the recipient's endpoint AV — which often runs minutes after the user has already opened the file.
Enable Safe Links
HighSafe Links rewrites URLs in email, Teams chats, and Office apps so Microsoft can check them at click time (after attackers' detonation evasion has fired). Microsoft's built-in protection applies a basic Safe Links policy to every licensed mailbox by default. Exceptions to it, the stricter Standard and Strict presets, and Safe Links for Office apps are what an admin controls.
Remove stale allow-list entries
MediumEach allow entry in the Tenant Allow/Block List bypasses Defender's spam, phish, and malware verdicts for the matching sender/URL/file. Permanent (no-expiration) and forgotten old entries become backdoors past your phishing protection.
Enable DKIM signing
HighDKIM cryptographically signs outbound mail so receivers can verify it wasn't altered or spoofed. Without DKIM, DMARC enforcement is effectively weaker since SPF alone is fragile under forwarding.
Enforce DMARC
HighDMARC tells receiving mail servers what to do with email that fails SPF and DKIM. Without it (or with p=none), attackers can spoof your domain with impunity — a primary BEC technique.
Tag external senders
MediumOutlook's 'External' tag marks every inbound message from outside the tenant. It's a simple but highly effective UX defense against CEO impersonation and fake-IT phishing — users learn to scrutinize external messages that claim to be internal.
Enforce TLS for inbound mail
MediumMTA-STS tells sending servers to require TLS when delivering mail to your domain, preventing on-path attackers from stripping encryption. TLS-RPT surfaces when delivery TLS is failing or being downgraded.
Remove risky inbox rules
CriticalInbox rules are the most common BEC persistence mechanism. Attackers create forwarding rules to exfiltrate mail in real time, or delete/move rules keyed on words like 'phish' or 'security' to hide their tracks. Microsoft's own incident reports consistently rank this as the #1 post-compromise action.
Make sure your MTA-STS policy actually works
MediumPublishing the MTA-STS DNS record is only half of it — sending servers also fetch a policy file over HTTPS. If that file is missing or malformed, they ignore your policy entirely and mail can still be downgraded to an unencrypted connection.
Route mail through Microsoft 365
HighIf the domain's MX record points somewhere other than M365, mail isn't flowing through Exchange Online Protection — meaning Defender for Office, anti-phish, Safe Links, and the rest of M365's mail filtering aren't actually inspecting inbound mail. Often unintentional after a migration.
Block external auto-forwarding
HighIf users can auto-forward email externally via inbox rules, an attacker who phishes one account silently exfiltrates ALL inbound mail to their own address — surviving password resets and session terminations.
Set outbound spam limits
MediumWithout sensible outbound rate limits, a compromised account can send tens of thousands of phishing emails (to internal users, to your customers) before Microsoft's tenant-level limits kick in. Tight per-user limits AND BlockUser action when the limit is hit contain the blast radius of any single account compromise.
Publish a valid SPF record
HighSPF authorizes which mail servers may send for your domain. Missing, soft-fail (~all), or too-many-lookups SPF records let spoofed mail through.
Remove risky mail flow rules
HighA single transport rule can bypass spam filtering tenant-wide, redirect mail to attacker addresses, or strip Microsoft-added authentication headers. Far higher leverage than per-mailbox rules, and far less commonly reviewed.
Apps & Consent
OAuth consent policies, risky Graph permissions, expiring secrets.
Enable the admin consent workflow
MediumIf you've restricted user consent (recommended), users need a way to request admin approval for legitimate apps. Without an admin consent workflow, users either go without the app or find workarounds.
Rotate app credentials
MediumApp registration secrets that expire silently cause outages; secrets with multi-year validity are credential-stuffing magnets if leaked. Both worth knowing about.
Review delegated app consent grants
HighReviews delegated grants against the target API. User-specific consent does not identify who granted consent, and granted scopes do not prove active access or bypass of authentication controls.
Keep owners of powerful apps to app administrators
HighWhoever owns an app can add a secret to it and sign in as the app, with all of its permissions and no MFA. This lists apps registered here that hold high-risk Microsoft Graph permissions and are owned by someone who is not an app administrator.
Tighten app registration redirect URIs
HighA redirect URI is the address Entra delivers sign-in tokens to. Wildcards, plain http, and leftover localhost entries widen that address from one host you control to a range someone else might occupy — turning your own app registration into a token delivery service for an attacker.
Review high-risk app permissions
HighReviews granted application permissions against their target API. Known broad Microsoft Graph grants are flagged; other APIs and unresolved permissions require review. Grants do not prove effective access or exploitation.
Credentials attached to service principals
HighPasswords or certificates added to a service principal (not its app registration) let anyone holding them authenticate as the app. On a third-party app this is the classic persistent backdoor.
Retire dormant app identities that still hold access
MediumAn app registration nobody has used in months, that still holds application permissions or a live secret, is a standing credential with no owner watching it. Nobody notices when it starts being used, and nobody would miss it if it were deleted — which is exactly what makes it attractive to an attacker.
Restrict user app consent
HighIf end users can consent to OAuth apps without admin approval, illicit consent attacks succeed: a phishing-like link grants an attacker-controlled app permission to read mail and files, bypassing MFA entirely.
Devices
Intune compliance, BitLocker, Defender for Endpoint onboarding.
Defender reports known software vulnerabilities
HighReview known vulnerabilities reported by Defender, grouped by affected software with distinct CVE and device counts. A CVE observation is not proof of exploitation.
Onboard devices to Defender
HighCorporate Windows devices should be covered by Defender for Endpoint/Business (EDR, not just signature AV) with tamper protection enabled so malware can't switch Defender off. This reports the tenant's Defender licensing capability and per-device tamper-protection state — the signals readable via Microsoft Graph. (Per-device MDE onboarding status isn't exposed by Graph; it lives in the Defender portal's machines API.)
Defender security recommendations need review
MediumReview active Defender recommendations and documented exceptions for the visible device inventory. Recommendations are grouped into one control rather than counted as individual security checks.
Defender sensors are active and reporting
MediumReview sensor health, onboarding state and seven-day reporting freshness for devices returned by the optional Defender connection. This does not establish coverage of every device in the organization.
Resolve high-severity alerts
HighDefender XDR surfaces alerts from MDE, MDO, MDI, and MDA in a unified queue. High-severity alerts in 'New' or 'InProgress' status for >7 days are a strong indicator of either an unstaffed security function or an in-progress incident that's stalled.
Protect apps on mobile devices
MediumReviews iOS and Android app-protection assignments. Policy configuration does not establish protection for every app or device; other Intune workloads are outside this check.
Require BitLocker on Windows
HighWithout BitLocker, a stolen or lost Windows device exposes all cached data — OneDrive sync content, cached Outlook PSTs, saved attachments, Teams cache — to anyone who removes the disk and reads it. Encryption is the foundational endpoint control.
Require compliant devices
HighCompliance policies + enrolled devices only matter if a CA policy actually requires compliance before granting access. Without this grant, an attacker on a non-Intune device can sign in with valid credentials and access corp resources just as easily as a compliant managed device.
Set compliance policies per platform
HighWithout a compliance policy for a given OS, every device on that OS is in 'unknown' compliance state. CA policies that 'require compliant device' silently let those devices through (or block them all, depending on the rule design) because there's no compliance evaluation.
Fix noncompliant devices
HighDevices in 'noncompliant', 'conflict', or 'error' state have failed their compliance policy. With a CA policy requiring compliant devices, they're blocked from corp resources. Without one, they're still accessing data despite failing the controls you've defined.
Remove stale devices
MediumDevices that haven't synced for 30+ days are likely lost, decommissioned, or belong to former employees. They distort your compliance metrics, occupy licenses, and represent potential offline-data exposure if lost or stolen.
Azure
Servers, storage, databases, networking, access and backup across every subscription.
Alert on critical operations
MediumActivity Log alerts notify on high-risk operations (role assignment changes, NSG edits, security-solution deletions) in near-realtime. Catching these as they happen beats finding them in a quarterly review.
Forward the Activity Log
HighWithout an Activity Log → Log Analytics diagnostic setting, control-plane events (role changes, NSG edits, resource deletes) only retain 90 days natively. Most security investigations need year-plus retention.
Enable WAF on Application Gateway
HighWAF disabled, or in Detection mode, doesn't block attacks. Production App Gateways should run WAF in Prevention mode (blocks + logs).
Review App Service authentication
MediumReads App Service platform authentication settings. Apps may intentionally use their own authentication or serve public content; this check does not prove anonymous access or internet reachability.
Require HTTPS on App Services
HighApp Services should have httpsOnly=true so HTTP traffic is auto-redirected. Avoids credentials and cookies traveling in cleartext during the initial request.
Require TLS 1.2 on App Services
HighReads the App Service web configuration and checks that the application endpoint requires TLS 1.2 or later. Deployment slots and the separate SCM endpoint are outside this check's scope.
Back up virtual machines
HighEvery virtual machine should be protected by Azure Backup with a healthy, recent recovery point. Unbacked-up VMs are unrecoverable after ransomware, accidental deletion, or a failed change — the restore simply does not exist.
Protect backup vaults from deletion
HighRecovery Services and Backup vaults should have soft delete enabled so that backup data deleted by a compromised or mistaken administrator is retained and recoverable rather than destroyed immediately.
Enable DDoS Protection
MediumDDoS Protection Standard mitigates volumetric attacks against public IPs. Only VNets containing public-IP attached workloads are evaluated — pure internal VNets don't need it.
Enable Defender for Cloud plans
InfoDefender for Cloud's per-workload plans (Servers, Storage, SQL, etc.) provide threat-detection signal on each workload type. Subscriptions on the Free tier only get configuration recommendations — no runtime threat protection.
Top Defender recommendations
InfoPer-subscription roll-up of the top 5 unhealthy high-severity Defender for Cloud recommendations. Informational — drives the 'what Defender thinks' dashboard panel. Never fails on its own.
Configure diagnostic settings
MediumPer-resource diagnostic settings forward data-plane logs (storage requests, KV accesses, SQL audits, NSG flow logs) to Log Analytics. Coverage <80% across critical resource types indicates substantial blind spots for forensic investigation.
Attach a WAF to Front Door
HighFront Door WAF is opt-in per frontend. Frontends without an attached WAF policy are unprotected against OWASP attacks and bot traffic.
Narrow overbroad custom roles
HighCustom roles whose actions include `*`, `*/*`, or `Microsoft.Authorization/*` grant near-Owner privileges and bypass least-privilege. Microsoft.Authorization/* in particular is a privilege-escalation primitive (holder can grant themselves Owner).
Review guest role assignments
MediumReviews direct role assignments using explicit directory evidence. Unknown identities remain unverified; effective access and group membership require separate review.
Use managed identities
MediumManaged identities eliminate stored credentials for service-to-service auth. Coverage <50% suggests significant credential-rotation debt; <80% is a hygiene target worth working toward.
Review deleted-principal role assignments
LowReviews direct role assignments using explicit directory evidence. Unknown identities remain unverified; effective access and group membership require separate review.
Use PIM for privileged roles
MediumPIM lets users hold privileged Azure roles as eligible rather than active, requesting just-in-time activation. Substantially reduces standing-access blast radius. Requires Entra ID P2.
Limit service principal scope
HighService principals holding Owner or Contributor at subscription level have authority across every resource in the subscription. Scope them down to the specific resource groups they need.
Rotate service principal credentials
MediumReviews credential dates for directly assigned Azure service principals and their locally owned app registrations. Flags active credentials older than 365 days or configured for more than 365 days. Group-derived access and publisher-owned registrations are not fully assessed.
Limit subscription Owners
HighMicrosoft recommends ≤2 Owners per subscription. Each Owner is a tenant-wide compromise risk; reducing the count reduces the blast radius of a phished credential.
Restrict Key Vault network access
HighKey Vaults with publicNetworkAccess=Enabled expose the management endpoint to the internet. Disable and configure private endpoints for the applications that need vault access.
Use RBAC for Key Vaults
MediumRBAC authorization integrates Key Vault with PIM, conditional access, and central RBAC auditing. Legacy Access Policies are vault-local and can't be governed centrally.
Enable Key Vault purge protection
HighSoft delete retains deleted vaults/keys for 90 days; purge protection blocks force-delete during that window. Together they protect against scenarios where attackers delete keys to lock out the owner.
Retain logs for 90+ days
MediumWorkspace retention <90 days truncates data before most breach investigation windows. CIS recommends ≥90 days; PCI-DSS and HIPAA require at least 1 year of accessible logs.
Assign the security benchmark
MediumMCSB is Microsoft's canonical Azure security baseline. Assigning it at the subscription or management-group root gives continuous compliance scoring in Defender for Cloud.
Enforce SSL on MySQL
HighMySQL Single Server: sslEnforcement should be Enabled. Flexible Server: require_secure_transport server parameter should be ON. Without these, clients can connect in plaintext.
Block database ports from the internet
HighDatabase ports (1433, 3306, 5432, 27017, 6379) open to *, Internet, or 0.0.0.0/0 expose databases to credential-stuffing, unauthenticated access (Redis default), and data exfiltration.
Remove allow-any firewall rules
MediumAny-protocol, any-source, any-port Allow rules defeat the principle of least connectivity and provide lateral-movement paths even when not directly internet-exposed.
Block RDP from the internet
CriticalTCP/3389 open to *, Internet, or 0.0.0.0/0 exposes Windows RDP to the internet. Public RDP is a primary initial-access vector for ransomware.
Block SSH from the internet
CriticalTCP/22 open to *, Internet, or 0.0.0.0/0 lets the world brute-force SSH. Use Bastion / VPN / IP allowlists instead.
Delete unattached managed disks
LowManaged disks in the Unattached state are billed at full provisioned capacity while serving no workload, and still contain a complete readable copy of whatever the deleted VM held.
Clean up orphaned network resources
LowNetwork interfaces attached to no VM, public IPs attached to no resource, and network security groups attached to no subnet or NIC. Billed or reserved for nothing, and — in the NSG case — usually a rule set someone believes is in force.
Enforce SSL on PostgreSQL
HighPostgres Single Server: sslEnforcement should be Enabled. Flexible Server: require_secure_transport server parameter should be ON. Without these, clients can connect in plaintext.
Public IP inventory
InfoCatalogs every public IP in scope and what resource it's attached to. Never fails — purely informational. These IPs are also fed into the external attack surface (Shodan/crt.sh) as seed inputs.
Set an Entra admin for SQL
HighSQL Servers without an AAD admin force clients onto local SQL auth, which doesn't support MFA / conditional access / centralized governance.
Narrow SQL firewall rules
CriticalFirewall rules permitting 0.0.0.0 → 255.255.255.255 (all IPv4) or 0.0.0.0 → 0.0.0.0 (all Azure services) expose the SQL Server to anything on the internet or the entire Azure fleet.
Encrypt SQL databases
MediumTDE encrypts data at rest with negligible perf impact. On by default for new databases; older ones may still have it off.
Enable SQL threat protection
MediumDefender for SQL detects SQL injection attempts, brute force, and anomalous access patterns. Requires Defender for Cloud's SQL plan.
Block anonymous container access
CriticalA container with publicAccess set to Blob or Container permits anonymous access at the container level. Effective access also depends on account-level anonymous-access permission and network restrictions; this setting alone does not prove internet readability.
Enable blob soft delete
MediumBlob soft delete protects against accidental and malicious deletion. Microsoft recommends ≥7-day retention; longer is better for ransomware recovery.
Restrict storage network access
HighnetworkAcls.defaultAction = Allow means the storage firewall is open to any network. Set Deny with explicit allowlists or private endpoints.
Require TLS 1.2 on storage
HighminimumTlsVersion below TLS 1.2 lets clients negotiate weaker cipher suites and breaks PCI-DSS / FedRAMP / most enterprise compliance baselines.
Use private endpoints for storage
InfoPrivate endpoints let storage accounts be reached only over the VNet, eliminating public network exposure. Coverage <50% indicates substantial public-surface storage; ≥80% is a hygiene target worth pursuing.
Disable public blob access
CriticalWhen allowBlobPublicAccess is true, individual containers can opt into anonymous internet access. Disabling at the account level enforces the secure default across every container.
Require HTTPS on storage
HighStorage accounts with supportsHttpsTrafficOnly=false accept plaintext HTTP requests. Forces all REST API calls to use TLS when enabled.
Encrypt VM disks
HighVM disks should be encrypted via encryptionAtHost (preferred) or Azure Disk Encryption (legacy). Default platform encryption protects only the underlying storage; per-VM controls protect against escape scenarios.
Onboard VMs to Defender
MediumDefender for Endpoint provides EDR on the guest OS. Coverage below 80% indicates onboarding debt; below 50% means significant attack surface is unmonitored. With a Defender for Servers plan, Defender for Cloud installs the sensor on supported machines by default.
Remove public IPs from VMs
MediumVMs with a directly attached public IP expose the host to the internet. Prefer Azure Bastion (for admin access) or App Gateway / LB with WAF (for app traffic) rather than direct public IP exposure.
Retire unsupported OS versions
HighVMs on EOL operating systems receive no vendor security patches. Migrate to a supported image or apply Microsoft Extended Security Updates (paid).
Logging & Alerting
Unified Audit Log, mailbox audit, security alert routing.
Set security alert recipients
HighLogs are useful only if someone reads them. Microsoft Defender ships high-value alerts (new forwarding rule, admin role elevation, suspicious forwarding activity) that go to nobody by default unless an admin sets email recipients. Untriaged alerts are equivalent to no detection.
Enable mailbox auditing
HighMailbox auditing is the foundation for ALL post-incident investigation of an account compromise. Without it, you cannot tell what an attacker did inside a mailbox — when they signed in, what mail they read, what rules they created, what they deleted. Critical actions like UpdateInboxRules must be in the default owner audit set.
Use a monitored notification mailbox
MediumMicrosoft sends service-health incidents, security advisories, and license/billing notifications to addresses on file in the tenant. If these default to the original signup contact (often a personal email of a long-departed admin), important messages — including Microsoft's own breach notifications to your tenant — get lost.
Enable the unified audit log
HighThe unified audit log records sign-ins, file accesses, admin actions, policy changes — everything you'd need to investigate an incident. Whether it's ingesting is an Exchange/Purview setting our read-only Graph access cannot read, so we surface it for one-command verification rather than guessing from unrelated Entra logs.
External Attack Surface
Shodan-enriched view of what your tenant looks like from the public internet.
External attack-surface inventory
InfoRoll-up of every domain, IP, and exposed service Tenant Strike discovered from the outside-in view. Verify each entry corresponds to a known business system — anything unrecognized is a shadow-IT or decommissioned-but-still-on asset that warrants investigation.
Patch internet-facing services
CriticalShodan, a public index of internet-facing systems, lists the published vulnerabilities (CVEs) that match the software it saw on each address. Unless Shodan marks a match verified, it is inferred from that software and its version and has not been tested against the service. The same index is open to anyone, so an attacker can read the same list.
Enable DNSSEC and CAA
LowDNSSEC signs your DNS records so resolvers can detect tampering; CAA records restrict which certificate authorities may issue certificates for your domain. Both limit attacks that impersonate your domain.
Keep domain registration healthy
MediumAn expired domain takes email and your website offline at the same time, and lets someone else register it and receive your mail. A registrar transfer lock is a free setting that blocks one leg of a domain hijack.
Lock down exposed admin panels
HighWeb admin interfaces (phpMyAdmin, cPanel, Jenkins, Kibana, vCenter, etc.) should be accessible only from a trusted network or behind an identity-aware proxy. Public exposure invites credential stuffing and exploitation of the steady stream of CVEs these products ship.
Close exposed database ports
CriticalDatabases should always be private — behind a VPC/VNET, accessible only from the application tier. Public exposure represents either a misconfigured cloud instance or a legacy server that was never moved behind a firewall. Many database engines (Mongo, ES, Redis) ship with no authentication by default.
Close exposed management ports
CriticalRemote-management protocols (RDP, SMB, WinRM, VNC), hosting control panels (cPanel, WHM, Control Web Panel, Webmin) and cleartext file transfer (FTP) should be reachable only through a VPN or zero-trust gateway. Direct internet exposure of these is the leading initial-access vector for ransomware and remote-access breaches.
Watch for lookalike domains
MediumAttackers register domains that resemble yours (character swaps, extra words, alternate TLDs) to send phishing and business-email-compromise mail that looks like it's from you. A lookalike with an MX record is infrastructure ready to send.
Keep the website's PHP on a release with the latest security fixes
CriticalIn October 2026 the PHP project fixed two critical flaws that let anyone run code on a web server without signing in. This reads the PHP version a public website announces and says whether it predates the fix, or that the site runs PHP without showing which version.
Stay off threat blocklists
Criticalabuse.ch publishes blocklists of hostnames serving malware (URLhaus) and botnet command-and-control IPs (Feodo Tracker). If one of your own assets is listed, it has been compromised and is being used against others — and it will also get your mail and traffic blocked.
Send recommended security headers
LowSecurity response headers (HSTS, X-Frame-Options / CSP, X-Content-Type-Options) harden your public web login pages against SSL-stripping, clickjacking, and MIME-confusion attacks.
Publish a security contact (security.txt)
LowA small text file at /.well-known/security.txt tells anyone who finds a security problem in your systems exactly how to reach you. Without one, reports go to a general inbox and often get missed.
Resolve flagged hosts
HighShodan labels indexed hosts with tags such as compromised, malware, database, or ics. A flag on one of your own hosts is an independent signal that it's breached or exposing something it shouldn't.
Remove dangling DNS records
CriticalA subdomain whose CNAME points at a deleted cloud resource (S3 bucket, Azure web app, GitHub Pages site, etc.) can be re-registered by anyone, who then serves content — with valid TLS — on your own domain. Prime phishing and cookie-theft infrastructure.
Keep TLS certificates healthy
HighTLS certificates that are expired, near-expiry, self-signed, or signed with weak algorithms cause user-facing errors or outages and erode trust.
Retire outdated TLS versions
MediumDeprecated TLS/SSL protocol versions (SSLv2, SSLv3, TLS 1.0, TLS 1.1) are vulnerable to downgrade and cipher attacks, fail PCI-DSS, and are rejected by up-to-date browsers and API clients.
Keep internet-facing servers on a supported version
HighA version of Windows or Exchange Server that Microsoft has stopped supporting gets no fix for flaws found after that date. On a machine reachable from the internet, each new flaw stays open for good.
Send the website's home page with browser protections switched on
LowA website can tell a visitor's browser to always use an encrypted connection, to refuse being shown inside another site's frame, and not to guess a file's type. A home page sent without them leaves the browser on its looser defaults.
Keep the website's platform and plugins up to date
MediumA website built on WordPress shows visitors which version it runs and which plugins it uses. WordPress.org says which versions later releases have replaced and which plugins it has closed, and a site that shows one of those is worth a look.
Keep the public website on software its maker still supports
MediumA website can announce the software it runs on to every visitor. When that is a version its maker has stopped fixing, flaws found afterwards stay open unless the hosting company patches it itself. PHP, the Apache web server and Microsoft's IIS are the software judged today.
See your own results
The catalog says what we look for. A scan says where you stand.
Connect read-only, scan in minutes, and get an A–F grade with a step-by-step fix for every gap. 7-day Pro trial, no credit card.