ASP.NET Core
このガイドでは、アプリケーションに Zen Firewall by Aikido をインストール・設定する手順を説明します。以下の手順に従って、アプリケーションを保護してください。
問題や不明点がある場合は、遠慮なくサポートチャットまたは Github issues までご連絡ください。
https://github.com/AikidoSec/firewall-dotnet
- C#/.NET 6以上(.NET 10まで動作確認済み)。
- ASP.NET Core 6.0以上。
- Aikido account & Zen Firewall token
インストールと設定
Section titled “インストールと設定”1. Zen Firewall by Aikido をインストールする
Section titled “1. Zen Firewall by Aikido をインストールする”プロジェクトが .NET 6、7、8、9、10 のいずれかで動作していることを確認してください。また、Zen Firewall がルート情報を正しく解決できるよう、アプリケーションはエンドポイントルーティング(UseRouting)を使用している必要があります。UseMvc のようなレガシーなルーティングミドルウェアはサポートされていません。ASP.NET Core の移行ガイドはこちらを参照してください。
NuGet からパッケージをインストールします。
dotnet add package Aikido.Zen.DotNetCoreappsettings.json でトークンを設定します(または環境変数として AIKIDO_TOKEN を設定します)。
{ "Aikido": { "AikidoToken": "your-api-key" }}起動時の設定で Zen を有効化します。
! Program.cs+using Aikido.Zen.DotNetCore;+using Microsoft.AspNetCore.HttpOverrides;
public void ConfigureServices(IServiceCollection services){ // other services
+ services.AddZenFirewall();
// other services}
public void Configure(IApplicationBuilder app){ // Make sure to allow x-forwarded-for header if your app is behind a proxy+ app.UseForwardedHeaders(new ForwardedHeadersOptions+ {+ ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto+ });
// other middleware // app.UseRouting() // place this after .UseRouting(), or after authorization, // but high enough in the pipeline to catch all requests+ app.UseZenFirewall();
// other middleware like app.UseEndpoints() or app.MapControllers()}2. ユーザー識別とブロックを有効にする
Section titled “2. ユーザー識別とブロックを有効にする”現在のユーザーを識別し、ユーザーブロックなどのユーザーベースの機能を有効にするには、このミドルウェアを使用します。
Zen Firewall が攻撃をブロックするためにこのミドルウェアは必須ではありません。コアの攻撃保護はこのミドルウェアなしでも機能します。リクエストを行っているユーザーを Zen に認識させたい場合は、このミドルウェアを追加してください。
サンプルコードは、アプリケーションでのユーザー識別方法に合わせて調整してください。
! Program.cs
// authentification middleware
+app.Use((context, next) => {+ // unique id for the user+ var id = context.User?.Identity?.GetUserId();+ // name (optional)+ var name = context.User?.Identity?.Name;+ if (!string.IsNullOrEmpty(id))+ Zen.SetUser(id, name, context);+ return next();+ })
app.UseZenFirewall(); // place this after UseRouting
// other middleware like UseEndpoints() or MapControllers()3. Zen Firewall をドライ / 検知専用モードで起動する
Section titled “3. Zen Firewall をドライ / 検知専用モードで起動する”Aikido Zen エージェントがトークンを認識できるように、環境変数としてトークンを設定します。まだトークンをお持ちでない場合は、こちらの手順に従ってください。
AIKIDO_TOKEN=AIK_RUNTIME_まずは dry mode でアプリを起動し、リクエストをブロックせずに期待どおり動作することを確認することをお勧めします。誤検知(false positives)を避けるため、ステージング環境で 2 週間ほど Zen Firewall を実行することをお勧めします。
AIKIDO_BLOCK=false4. アプリをテストする
Section titled “4. アプリをテストする”アプリケーションにアクセスし、いくつかの操作を行うか、いくつかのページを開いてみてください。Zen はアプリケーション内のルートを自動的に検出します。
エージェントが正しく動作していることは、Zen アプリケーションの以下のページで確認できます。
- Events: 「Application started」イベントが表示されるはずです。
- Routes: しばらくすると、アプリケーションのルートがメソッド・ルート・リクエスト数とともにここに表示され始めます。
- Instances: Zen がインストールされているアプリケーションのアクティブなインスタンス数が表示されるはずです。

5. ダッシュボードでレート制限を設定する
Section titled “5. ダッシュボードでレート制限を設定する”Zen Firewall ミドルウェアを追加したら、Aikido Dashboard でレート制限を設定することで、ブルートフォース攻撃からルートを保護できるかテストできます。
- 作成したアプリをクリックします。
- Routes タブに移動します。
- 制限したいルートを見つけて Setup rate limiting をクリックします。
- 指示に従ってレート制限を設定します(例: 1 分あたり 5 リクエスト)。


Verify Rate Limiting
アプリを起動し、レート制限を設定したルートに 1 分以内に 5 回アクセスしてみてください。5 回目の試行後、レート制限エラーが返されるはずです。
You are rate limited by Aikido firewall. (Your IP: 1.2.3.4)6. 次のステップ
Section titled “6. 次のステップ”おめでとうございます。Zen Firewall のインストールに成功しました。問題が発生した場合や、ご要望・機能リクエストがある場合は、遠慮なくサポートまでご連絡ください。
Zen Firewall が提供する多くの機能を、これから探ってみてください。
- Zen Firewallによるボットトラフィックのブロック
- Zen FirewallによるTorトラフィックのブロックまたは監視
- Zen Firewallでのユーザー追跡
- Zen Firewallによる既知の脅威アクターのブロック
- Zen Firewallによる国別トラフィックのブロック
- ルートへのレート制限の設定
- アウトバウンドドメインの監視
追加情報: