![]() |
VOOZH | about |
dotnet add package IISFrontGuard.Module --version 2026.1.20.3
NuGet\Install-Package IISFrontGuard.Module -Version 2026.1.20.3
<PackageReference Include="IISFrontGuard.Module" Version="2026.1.20.3" />
<PackageVersion Include="IISFrontGuard.Module" Version="2026.1.20.3" />Directory.Packages.props
<PackageReference Include="IISFrontGuard.Module" />Project file
paket add IISFrontGuard.Module --version 2026.1.20.3
#r "nuget: IISFrontGuard.Module, 2026.1.20.3"
#:package IISFrontGuard.Module@2026.1.20.3
#addin nuget:?package=IISFrontGuard.Module&version=2026.1.20.3Install as a Cake Addin
#tool nuget:?package=IISFrontGuard.Module&version=2026.1.20.3Install as a Cake Tool
Disclaimer: IISFrontGuard is a project name, not affiliated with Cloudflare or Microsoft Corp.
IISFrontGuard is a Web Application Firewall (WAF) module for Internet Information Services (IIS) built on .NET Framework 4.8. It provides advanced security features including request filtering, rate limiting, managed/interactive challenges, and comprehensive logging with webhook notifications.
Install-Package IISFrontGuard.Module
dotnet add package IISFrontGuard.Module
PM> Install-Package IISFrontGuard.Module
Note: The package will automatically update your Web.config with required settings and open a getting started guide.
Execute the included SQL script to create the required database tables:
-- Located in: Content\Scripts\init.sql
The package automatically configures your Web.config during installation with the following default settings. Please review and update as needed:
<configuration>
<connectionStrings>
<add name="IISFrontGuard"
connectionString="Data Source=.;Initial Catalog=IISFrontGuard;Integrated Security=True;TrustServerCertificate=True;" />
</connectionStrings>
<appSettings>
<add key="IISFrontGuard.DefaultConnectionStringName" value="IISFrontGuard" />
<add key="IISFrontGuardEncryptionKey" value="YOUR-16-CHAR-KEY" />
<add key="IISFrontGuard.RateLimitMaxRequestsPerMinute" value="150" />
<add key="IISFrontGuard.RateLimitWindowSeconds" value="60" />
<add key="TrustedProxyIPs" value="" />
<add key="IISFrontGuard.Webhook.Enabled" value="false" />
<add key="IISFrontGuard.Webhook.Url" value="" />
<add key="IISFrontGuard.Webhook.AuthHeader" value="" />
<add key="IISFrontGuard.Webhook.CustomHeaders" value="" />
<add key="IISFrontGuard.Webhook.FailureLogPath" value="C:\Logs\webhook-failures.log" />
</appSettings>
<system.webServer>
<modules>
<add name="FrontGuardModule"
type="IISFrontGuard.Module.FrontGuardModule, IISFrontGuard.Module"
preCondition="managedHandler,runtimeVersionv4.0" />
</modules>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
</system.webServer>
<system.web>
<httpRuntime enableVersionHeader="false" />
</system.web>
</configuration>
The package includes a GeoLite2-Country database. To keep it updated:
UpdateGeoDb.bat script with your license keyConfigure WAF rules for localhost:
-- Create an AppEntity for localhost testing
INSERT [dbo].[AppEntity] ([Id], [AppName], [AppDescription], [Host], [CreationDate], [TokenExpirationDurationHr]) VALUES (NEWID(), N'Localhost App', N'Test application for localhost', N'localhost', GETDATE(), 12)
GO
-- Retrieve the Id of the newly created AppEntity
DECLARE @LocalAppId UNIQUEIDENTIFIER
SELECT TOP 1 @LocalAppId = [Id] FROM [dbo].[AppEntity] WHERE [Host] = N'localhost'
-- Insert a rule for Interactive Challenge as an example on localhost using the newly created AppEntity
INSERT [dbo].[WafRuleEntity] ([Nombre], [ActionId], [AppId], [Prioridad], [Habilitado], [CreationDate])
VALUES (N'Interactive Challenge', 4, @LocalAppId, 0, 1, GETDATE())
Add custom WAF rules to the database:
INSERT INTO WafRules (Name, Priority, IsEnabled, Action, Conditions)
VALUES ('Block SQL Injection', 100, 1, 'Block',
'[{"Field":"QueryString","Operator":"Contains","Value":"UNION SELECT"}]');
Configure rate limits in Web.config:
<add key="RateLimitMaxRequestsPerMinute" value="150" />
<add key="RateLimitWindowSeconds" value="60" />
Configure country blocking/allowing via database WAF rules:
INSERT INTO WafRules (Name, Priority, IsEnabled, Action, Conditions)
VALUES ('Block Specific Countries', 50, 1, 'Block',
'[{"Field":"Country","Operator":"Equals","Value":"CN,RU,KP"}]');
To remove IISFrontGuard from your application:
Uninstall-Package IISFrontGuard.Module
The uninstall process will automatically:
Manual cleanup required:
For complete uninstallation instructions, see UNINSTALL_GUIDE.md included in the package.
For issues, questions, or contributions, please visit:
This project is licensed under the MIT License.
IISFrontGuard Team
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET Framework | net48 net48 is compatible. net481 net481 was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.1.20.3 | 319 | 1/20/2026 |
| 2026.1.20.1 | 121 | 1/20/2026 |
| 2026.1.19.4 | 120 | 1/19/2026 |
| 2026.1.18.8 | 122 | 1/18/2026 |
| 2026.1.18.7 | 131 | 1/18/2026 |
| 2026.1.18.4 | 130 | 1/18/2026 |
| 2026.1.4.5 | 159 | 1/4/2026 |
| 2026.1.4.4 | 129 | 1/4/2026 |
| 2026.1.2.10 | 143 | 1/3/2026 |
| 2026.1.2.9 | 136 | 1/2/2026 |
| 2026.1.2.3 | 131 | 1/2/2026 |
| 2025.12.31.1 | 126 | 12/31/2025 |
| 2025.12.30.9 | 125 | 12/30/2025 |
| 2025.12.30.8 | 123 | 12/30/2025 |
| 2025.12.30.7 | 122 | 12/30/2025 |
| 2025.12.30.5 | 117 | 12/30/2025 |
| 2025.12.29.40 | 131 | 12/29/2025 |
| 2025.12.28.7 | 124 | 12/28/2025 |
| 2025.12.28.6 | 116 | 12/28/2025 |
| 2025.12.28.5 | 125 | 12/28/2025 |
Initial release with WAF, rate limiting, GeoIP filtering, automatic security header management, and webhook notification support.