NTLM · Troubleshooting

NTLM Blocked — STATUS_NTLM_BLOCKED After Restrict NTLM Policies

A working app suddenly can’t log on after “Restrict NTLM” moves from Audit to Deny, and the fix starts with reading the right log on the right machine.

Quick idea: The Restrict NTLM group policies exist to let you audit NTLM usage first and only block it once you know what depends on it — when Deny gets enabled before that audit work is done, anything still using NTLM gets a hard refusal, not a fallback.
STATUS_NTLM_BLOCKED

The NTSTATUS code (0xC0000418) a client gets back when a Restrict NTLM Deny setting refuses its logon.

NTLM/Operational log

Where the client, the server, and the domain controller each record who tried to use NTLM and would be blocked.

Audit before Deny

Microsoft’s own guidance for every Restrict NTLM setting: enable the matching audit option first, review the log, then enforce.

What the Error Looks Like

A change went in overnight — someone finished the NTLM hardening project and flipped one of the Network security: Restrict NTLM settings from Audit to Deny. By morning, an application that has authenticated the same way for years can’t log on, and there were no password resets, no lockouts, and no network changes to point at.

In the Security log on the affected computer, the failed logon shows up as Event 4625 with a Sub Status of 0xC0000418:

Log Name:      Security
Event ID:      4625
Task Category: Logon
Keywords:      Audit Failure

An account failed to log on.

Status:          0xC000006D
Sub Status:      0xC0000418
Key point: 0xC0000418 is STATUS_NTLM_BLOCKED — “the authentication failed since NTLM was blocked.” It is not a generic bad-password or account-disabled failure; it means a Restrict NTLM Deny setting actively refused this specific logon.

What It Actually Means

NTLM and NTLMv2 are vulnerable to relay and brute-force attacks, so Microsoft’s Restrict NTLM policies let you reduce NTLM’s footprint in a domain in stages: first audit what would be blocked without actually blocking it, then flip the matching setting to deny once you know the impact.

Think of the Audit setting as a burglar alarm running in silent-test mode: it logs every door someone opens without ever locking anyone out. Flip the matching policy to Deny and every door without a registered exception locks itself the same instant, including the ones people still walk through every day.

There are five separate Restrict NTLM policy settings, and each has its own audit companion. Mixing them up — or enforcing one before its audit companion has been reviewed — is the single most common cause of this failure:

Policy Setting Scope What It Controls
Restrict NTLM: Incoming NTLM trafficMember serverNTLM authentication requests arriving at this server. Values: Allow all, Deny all domain accounts, Deny all accounts.
Restrict NTLM: Audit Incoming NTLM TrafficMember serverAudit-only companion to the above; logs what would be blocked without blocking it.
Restrict NTLM: NTLM authentication in this domainDomain controllerNTLM pass-through authentication within the domain. Values range from Deny for domain accounts to Deny all.
Restrict NTLM: Audit NTLM authentication in this domainDomain controllerAudit-only companion to the above.
Restrict NTLM: Outgoing NTLM traffic to remote serversClientNTLM authentication this computer sends to remote servers. Values: Allow all, Audit all, Deny all.

All five live under Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options in Group Policy. None of them require a restart — a gpupdate /force and a policy refresh interval is enough for a Deny setting to start refusing logons immediately.

How to Diagnose

Work from cheapest check to deepest. The goal is to find which of the three roles — client, member server, or domain controller — logged the block, because that tells you which Restrict NTLM setting is responsible.

# 1. Confirm this is really an NTLM block and not a bad password/lockout
#    Look for Sub Status 0xC0000418 on Event 4625 in the Security log
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20 |
  Where-Object { $_.Message -match '0xC0000418' }

# 2. Confirm which Restrict NTLM setting is actually in effect on this computer
#    (Group Policy can win a different value than what you think you set)
gpresult /r /scope computer

# 3. Check the NTLM operational log for the matching audit/block event
#    Event 8004 = domain controller, 8003 = member server, 8001 = client
Get-WinEvent -LogName 'Microsoft-Windows-NTLM/Operational' -MaxEvents 50

# 4. If the client is a domain-joined workstation, confirm what package
#    was actually used for a recent successful logon from the same account
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} -MaxEvents 20 |
  Select-Object -ExpandProperty Message |
  Select-String 'Authentication Package'
Practical note: Event ID 4624 in the Security log includes an Authentication Package field. If it reads NTLM instead of Kerberos or Negotiate, this account was already falling back to NTLM before the Deny setting went in — the block just made that dependency visible.

NTLM Operational Log Quick Reference

Audit and block events for every Restrict NTLM setting are written to Applications and Services Logs\Microsoft\Windows\NTLM\Operational — never to the Security log’s own audit policies. There is no Security Audit Policy that surfaces this data; you have to look at the NTLM operational log directly.

Event ID Logged On What It Tells You
8001ClientThis computer’s own outgoing NTLM attempt to a remote server. Look at the Target server field — if it’s an IP address rather than a name, Kerberos was never going to be used here.
8003Member serverAn incoming NTLM authentication attempt this server received. The PID field matters: PID 4 (SYSTEM) means the request came in through SMB/kernel mode, not a user-mode app.
8004Domain controllerAn NTLM pass-through request the DC processed for the domain. The Secure Channel name field names the member server to check next for the matching 8003 event.

Common Causes

Cause How to Confirm Fix
Deny was enabled on a domain controller before the exception list was built gpresult /r shows Restrict NTLM: NTLM authentication in this domain set to a Deny value, with no matching entry for the affected server in the exception list Add the affected server name to Restrict NTLM: Add server exceptions in this domain, or temporarily revert to the matching Audit setting while you build a complete list.
The application connects by IP address instead of a name, so Kerberos was never negotiated Event 8001 on the client shows the Target server field as an IP address rather than a NetBIOS or DNS name Point the application at the server’s DNS or NetBIOS name so Kerberos can match an SPN, instead of connecting straight to the IP address.
A missing or duplicate SPN forces a silent fallback to NTLM Event 4772 (Kerberos service ticket request failed) appears in the Security log immediately before the NTLM attempt Register the correct SPN for the target service account: setspn -S HTTP/fileserver01.corp.example.com fileserver01, then confirm with setspn -L fileserver01.
A local (non-domain) account got caught by Deny all accounts instead of Deny all domain accounts Event 4625’s account name is a local account on the target server, and Restrict NTLM: Incoming NTLM traffic on that server is set to Deny all accounts Change the setting to Deny all domain accounts if local-account NTLM logon on that box is still genuinely required.
A client’s own outbound NTLM to a remote server is blocked by Deny all Event 8001 on the client names the remote server, and Restrict NTLM: Outgoing NTLM traffic to remote servers is set to Deny all on that client Add the remote server to Restrict NTLM: Add remote server exceptions for NTLM authentication.
The GPO applied to a wider scope than the systems that were actually audited gpresult /r shows the Restrict NTLM GPO linked or security-filtered onto an OU or site that wasn’t part of the original audit pass Correct the GPO’s scope or security filtering so only audited systems inherit the Deny setting, then re-run the audit phase against the newly discovered scope before extending Deny further.

The Fix

The fastest way to stop active failures is to remember that the audit companion setting for whichever policy is blocking traffic does not block anything — it only logs. Switching back to it immediately restores access while you finish the investigation.

Production note: Reverting a Restrict NTLM setting is a Group Policy change to a security control, not a code rollback. Do it through the same change process that put the Deny setting in, with the person who made the original change looped in, even if the goal is just to buy time.

Once the immediate impact is contained, work the log evidence end to end. Set the matching Audit variant on the affected scope — domain controller, member server, or client — and run gpupdate /force so it takes effect right away. Let normal traffic flow for a representative period, then collect Event 8004 on the domain controller, 8003 on the member server named in its Secure Channel name field, and 8001 on the client named in that server’s event.

Build the exception list from what the log actually shows rather than guesswork: Add server exceptions in this domain for the domain-scoped policy, Add remote server exceptions for NTLM authentication for the client-scoped one. Only once that list is in place should the Deny setting go back on — and the follow-up check is the same Event 4625 query from earlier, confirming no further 0xC0000418 Sub Status entries appear for the systems now on the exception list.

How to Prevent It

Every Restrict NTLM policy setting has an audit-only companion for exactly this reason. Treat “Audit first, Deny later” as non-negotiable, and give the audit phase enough time to catch infrequent processes — a monthly batch job or quarterly report that only runs a few times a year needs weeks of audit logging, not days, before you can trust the exception list is complete.

This failure sits next to two other authentication problems worth knowing well: a duplicate or missing SPN can silently push an account onto NTLM in the first place, which the Kerberos Authentication Fails — Duplicate SPN post covers, and Kerberos’s own pre-authentication failures are covered in Event 4771 — Kerberos Pre-Authentication Failed. If you haven’t read how Kerberos is meant to work in the first place, the Active Directory — Part 5 — Authentication & Kerberos post is the right starting point before you plan an NTLM reduction project.

Final Thoughts

NTLM restriction is one of the more painless security wins available in an AD environment, right up until it’s rolled out without the audit phase it was designed around. The good news is that the same NTLM operational log that would have warned you in advance is still the fastest way to fix it after the fact — it just means reading the client, server, and domain controller logs together rather than any one of them alone.

Key takeaway: A 0xC0000418 Sub Status on Event 4625 means a Restrict NTLM Deny setting is actively refusing the logon. Find the matching Audit setting, flip it on, and read Events 8004/8003/8001 together to know exactly who needs an exception before you enforce Deny again.
Next in this series

Next, we can cover Kerberos delegation types — unconstrained, constrained, and resource-based — since NTLM reduction projects usually surface delegation gaps at the same time.