コンテンツにスキップ

Nodejs (ElysiaJS)

このガイドでは、アプリケーションに Zen Firewall by Aikido をインストールして設定する手順を説明します。以下の手順に従ってアプリケーションを保護してください。

問題や不具合が発生した場合は、遠慮なくサポートチャットまたは Github issues までご連絡ください。

https://github.com/AikidoSec/firewall-node

1. Zen Firewall by Aikido をインストールする

Section titled “1. Zen Firewall by Aikido をインストールする”

プロジェクトに Zen をインストールします。

npm

Terminal window
npm install --save-exact @aikidosec/firewall

Yarn

Terminal window
yarn add --exact @aikidosec/firewall

pnpm

Terminal window
pnpm add --save-exact @aikidosec/firewall

require 構文

他のどのインポートよりも前に Zen を読み込みます。

+import "@aikidosec/firewall";
import Hono from "hono";
const app = new Hono();

import 構文

他のどのライブラリよりも前に Zen をインポートします。

+const Zen = require("@aikidosec/firewall");
+
new Elysia({ adapter: node() })
+// Optional, if you want to use user based rate limiting or block specific users
+ .onBeforeHandle(() => {
+ Zen.setUser({ id: "123", name: "John Doe" });
+ })
+// Call this after auth middleware, as early as possible in the middleware stack
+ .onBeforeHandle(Zen.elysiaHandler)
.get("/", () => "Hello World")
.listen(3000);

2. リクエストブロックとユーザー識別を有効にする

Section titled “2. リクエストブロックとユーザー識別を有効にする”

このミドルウェアを使用して、レート制限、ユーザー識別、ブロック機能を有効にします。

Zen Firewall は攻撃をブロックするためにこのミドルウェアを必須とはしません。コアとなる攻撃防御はこれなしでも機能します。このミドルウェアは、ルートへのレート制限の設定Zen Firewallでのユーザー追跡Zen FirewallによるボットトラフィックのブロックZen Firewallによる国別トラフィックのブロックZen Firewallによる既知の脅威アクターのブロックブロックといった保護機能のために Zen が利用する追加のリクエストコンテキストを提供します。

アプリケーションがユーザーを識別しリクエストを処理する方法に合わせて、この例を調整してください。

+require("@aikidosec/firewall");
const { Elysia } = require("elysia");
new Elysia({ adapter: node() })
.get("/", () => "Hello World")
.listen(3000);

3. 任意で IDOR 保護を有効にする

Section titled “3. 任意で IDOR 保護を有効にする”

自分のものではないレコードへのアクセスをユーザーに許さないようにします。IDOR 保護は、最小限の設定で請求書やチケット、ユーザープロフィールなどのリソースへの不正アクセスを検知できます。

Zen FirewallによるIDOR保護

4. Zen Firewall をドライ/検知専用モードで起動する

Section titled “4. Zen Firewall をドライ/検知専用モードで起動する”
Terminal window
AIKIDO_BLOCK=false AIKIDO_TOKEN=AIK_RUNTIME_ node app.js

Aikido Zen エージェントが読み取れるように、トークンを環境変数として設定します。トークンをまだお持ちでない場合は、こちらの手順に従ってください。

Terminal window
AIKIDO_TOKEN=AIK_RUNTIME_

アプリを最初はドライモードで起動し、リクエストをブロックせずに期待通り動作することを確認することをお勧めします。誤検知を避けるため、Zen Firewall をステージング環境で2週間程度実行することをお勧めします。

Terminal window
AIKIDO_BLOCK=false

アプリケーションにアクセスし、いくつかの操作を行うか、いくつかのページを開いてください。Zen がアプリケーション内のルートを自動的に検出します。

Zen アプリケーションの以下のページを確認することで、エージェントが正しく動作していることを検証できます。

  • Events: 「Application started」イベントが表示されるはずです。
  • Routes: しばらくすると、アプリケーションのルートがメソッド、ルート、リクエスト数とともに表示され始めます。
  • Instances: Zen がインストールされているアプリケーションのアクティブなインスタンス数が表示されるはずです。

6. ダッシュボードでレート制限を設定する

Section titled “6. ダッシュボードでレート制限を設定する”

Zen Firewall ミドルウェアを追加したら、Aikido ダッシュボードでレート制限を設定することで、ブルートフォース攻撃からルートを保護するテストができます。

  1. 作成したアプリをクリックします。
  2. Routes タブに移動します。
  3. 制限したいルートを見つけ、Setup rate limiting をクリックします。
  4. 手順に従ってレート制限を設定します(例:1分あたり5リクエスト)。

保護とレート制限のオプションを備えた認証ルートを表示するAPIルート管理画面。

POST /auth/login のレート制限を1分あたり5リクエストに設定する画面。

レート制限の検証

アプリを起動し、1分以内にレート制限を設定したルートへ5回アクセスを試みてください。5回目の試行後、レート制限エラーが返されるはずです。

You are rate limited by Aikido firewall. (Your IP: 1.2.3.4)

おめでとうございます。Zen Firewall のインストールに成功しました。問題や懸念事項、機能リクエストがあれば、遠慮なくサポートまでご連絡ください。

Zen Firewall が提供する多くの機能をこれから探索できます。

その他の情報: