MFA for FreeRADIUS
FreeRADIUS powers a huge share of the internet's network authentication — flexible, scriptable, and everywhere. That flexibility is also why bolting on MFA cleanly takes care. Authnull integrates either as an upstream proxy realm or as a module call from your policy, so you can add a phishing-resistant factor without rewriting your virtual servers. You point a realm or an authenticate stanza at Authnull, run radiusd in debug to confirm the exchange, then restart the service.
FreeRADIUS forwards the login; Authnull adds the factor.
FreeRADIUS proxies (or calls) Authnull after the primary check; Authnull challenges for the factor and returns Access-Accept/Reject, which FreeRADIUS relays to the NAS. The deepest-control path our team knows — pick proxy for simplicity or a module call for fine-grained policy.
Configure MFA for FreeRADIUS
Real steps — the exact menus, fields, and values. Follow along in your console; the whole thing takes about 25 minutes.
Define Authnull as a home server
Add Authnull as a home server and pool in proxy.conf so a realm can route to it.
Route a realm to Authnull
Create a realm that uses the Authnull pool so matching requests are proxied for the factor.
Reference it in your virtual server
In sites-enabled/default, ensure the authenticate section sends the request through the realm after primary auth.
Test with radiusd debug
Run the daemon in debug mode and send a test request to watch the full Access-Request → Challenge → Accept exchange.
Restart the service
Once the debug run is clean, restart FreeRADIUS to apply the configuration in production.
Closes the MFA gap auditors look for
Enforcing MFA on FreeRADIUS gives you evidence for the remote-access and privileged-access controls in SOC 2 and the access requirements under CCPA — with per-login logs you can hand straight to an assessor.
Add MFA to FreeRADIUS — free to start.
Spin up Authnull, point FreeRADIUS at it, and enforce a factor on a pilot group today. No card, no rip-and-replace.