Svalinn is a Windows Password Filter.
Svalinn can be installed by following the instructions below.
- Add
svalinn.dll
to your%SYSTEMROOT%\System32
directory. - Modify the registry key located at
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
and addsvalinn
as an entry. Do not remove any of the current entries in this registry key. - Reboot
Once rebooted, you can verify that svalinn is loaded by looking at the output of msinfo32.exe. You should see svalin.dll as a Loaded module within Software Environment | Loaded Modules.
Additionally, you can verify the status of the password filter by perrforming a password reset and svalinn will log whether the reset fails or is successful within the Application event log.
If the log message does not appear, something has gone wrong in the process of loading svalinn. To troubleshoot, look at the System event log for entries stating that a password filter failed to load.
Svalinn is configured via the registry. The appropriate configuration keys should be stored at HKEY_LOCAL_MACHINE\SOFTWARE\passfilt
.
All configuration values must be specified and within valid ranges. Failure to configure the registry keys properly will result in svalinn defaulting to allowing password changes based on the Domain policy alone.
The required values are:
Server: The server to send password requests to.
Port: The TCP port to connect to.
Enable TLS: Enable TLS on connections to the password filter server. STRONGLY RECOMMENDED.
Disable TLS Validation: Disable validation of TLS certificates. STRONGLY DISCOURAGED.
Please note that in production environments it is strongly recommended that users enable TLS and do not disable TLS validation. Misconfiguration of these values can drastically increase the risk of a man-in-the-middle attack intercepting passwords.
- Remove the svalinn entry from
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
. - Reboot
- [Optional] Remove
svalinn.dll
from%SYSTEMROOT\System32
.- Note: You cannot remove the dll until after a reboot. It must first be unloaded by the lsass process.
This is not the first open source password filter. I have drawn inspiration from the following sources: