Go (Gin)
このガイドでは、アプリケーションへの Zen Firewall by Aikido のインストールとセットアップの手順を説明します。以下の手順に従ってアプリケーションを保護してください。
問題や不具合が発生した場合は、遠慮なくサポートチャットまたは Github issues でご連絡ください。
https://github.com/AikidoSec/firewall-go
- Go 1.24+。
- Gin。
- Aikidoアカウント と Zen Firewallトークン
インストールと設定
Section titled “インストールと設定”1. Zen Firewall by Aikido をインストールする
Section titled “1. Zen Firewall by Aikido をインストールする”アプリケーションのモジュール(main を含むモジュール)内で Zen を初期化し、依存関係を更新します。
go run github.com/AikidoSec/firewall-go/cmd/zen-go@latest initgo mod tidymain パッケージ内でできるだけ早く Zen を有効化します。
+import "github.com/AikidoSec/firewall-go/zen"
func main() {+ err := zen.Protect()+ if err != nil {+ panic(err)+ }
// your existing setup}Zen がバイナリを計装できるように、ビルドツールをインストールし toolexec を使ってビルドします。
go install github.com/AikidoSec/firewall-go/cmd/zen-go@latestgo build -toolexec="zen-go toolexec" -o bin/app実行時にトークンを設定します。
export AIKIDO_TOKEN=AIK_RUNTIME_2. リクエストブロックとユーザー識別を有効化する
Section titled “2. リクエストブロックとユーザー識別を有効化する”このミドルウェアを使用して、レート制限、ユーザー識別、ブロック機能を有効化します。
Zen Firewall は攻撃をブロックするためにこのミドルウェアを必要としません。コアの攻撃防御はこれがなくても機能します。このミドルウェアは、ルートへのレート制限の設定、Zen Firewallでのユーザー追跡、Zen Firewallによるボットトラフィックのブロック、Zen Firewallによる国別トラフィックのブロック、Zen Firewallによる既知の脅威アクターのブロックブロックといった保護機能のために Zen が利用する追加のリクエストコンテキストを提供します。
アプリケーションがユーザーを識別しリクエストを処理する方法に合わせて、この例を調整してください。
r.Use(func(c *gin.Context) { if c.GetHeader("user") != "" {+ _, err := zen.SetUser(c, c.GetHeader("user"), "John Doe") if err != nil { _ = c.AbortWithError(http.StatusInternalServerError, err) return } }})
+r.Use(func(c *gin.Context) {+ blockResult := zen.ShouldBlockRequest(c)+ if blockResult != nil {+ if blockResult.Type == "rate-limited" {+ message := "You are rate limited by Zen."+ if blockResult.Trigger == "ip" {+ message += " (Your IP: " + *blockResult.IP + ")"+ }+ c.String(http.StatusTooManyRequests, message)+ c.Abort()+ return+ }+ if blockResult.Type == "blocked" {+ c.String(http.StatusForbidden, "You are blocked by Zen.")+ c.Abort()+ return+ }+ }+ c.Next()+})3. Zen Firewall をドライ / 検知専用モードで起動する
Section titled “3. Zen Firewall をドライ / 検知専用モードで起動する”検知モードを有効にしてアプリを起動します。
AIKIDO_BLOCK=false AIKIDO_TOKEN=AIK_RUNTIME_ go run -toolexec="zen-go toolexec" .Aikido Zen エージェントがトークンを認識できるよう、環境変数として設定します。まだトークンをお持ちでない場合は、こちらの手順に従ってください。
AIKIDO_TOKEN=AIK_RUNTIME_期待通りに動作し、リクエストをブロックしないことを確認するため、アプリをドライモードで起動することを推奨します。誤検知を避けるため、ステージング環境で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リクエスト)。


レート制限の確認
アプリを起動し、レート制限を設定したルートに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による国別トラフィックのブロック
- ルートへのレート制限の設定
- アウトバウンドドメインの監視
追加情報: