Node.js モジュールのインストール
- English
- 日本語
Next-Gen WAF Node.js モジュールは Node 0.10 ~ 24.X と互換性があります。すべての依存関係は npm-shrinkwrap.json ファイルに指定されています。
インストール
npmjs.com から最新バージョンをインストールします。
$ npm install sigsci-module-nodejs1.5.3, より前の特定のリリースについては、Fastly の Web サイトからインストールを実行できます。<VERSION> を特定のバージョン番号に置き換えます。
- dl.security.fastly.com
- dl.signalsciences.net
$ npm install https://dl.security.fastly.com/sigsci-module-nodejs/<VERSION>/sigsci-module-nodejs-<VERSION>.tgz使用方法
Next-Gen WAF Node.js モジュールを組み込む方法は、アプリケーションによって異なります。
ネイティブアプリケーション
アプリケーションが直接 http.createServer を呼び出す場合は、ネイティブ APIを使用します。
アプリケーションコードの上に次の行を追加して、Next-Gen WAF Node.js モジュールをインポートします。
var Sigsci = require('sigsci-module-nodejs')// Your application codeアプリケーションコードの下に、
Sigsciオブジェクトを作成します。// Your application codevar sigsci = new Sigsci({path: '/var/run/sigsci.sock'// Other parameters here})ディスパッチャーを
sigsci.wrapでラップします。http.createServer(dispatcher).listen(8085, '127.0.0.1')の行を次のように置き換えます。http.createServer(sigsci.wrap(dispatcher)).listen(8085, '127.0.0.1')
例
var Sigsci = require('sigsci-module-nodejs')
// Your application code
var sigsci = new Sigsci({ path: '/var/run/sigsci.sock' // Other parameters here})
http.createServer(sigsci.wrap(dispatcher)).listen(8085, '127.0.0.1')Node.js Express
Node.js Express モジュールは Express のミドルウェアとして公開され、通常は var app = express() ステートメントのすぐ下に最初のミドルウェアとして挿入されます。詳細については、「Express のミドルウェアを使用する」のドキュメントを参照してください。
アプリケーションコードの上に次の行を追加して、Next-Gen WAF Node.js モジュールをインポートします。
var Sigsci = require('sigsci-module-nodejs')// Your application codeアプリケーションコードの下に、
Sigsciオブジェクトを作成します。// Your application codevar sigsci = new Sigsci({path: '/var/run/sigsci.sock'// other parameters here})var app = express()行の下に、Node.js モジュールのミドルウェアを挿入します。var app = express()app.use(sigsci.express())// You can still call other middleware and routesapp.use(...)app.get('/route', ...)
例
var Sigsci = require('sigsci-module-nodejs')
// Your application code
var sigsci = new Sigsci({path: '/var/run/sigsci.sock'// other parameters here})
var app = express()app.use(sigsci.express())
// You can still call other middleware and routesapp.use(...)app.get('/route', ...)Node.js Restify
Restify 用の Next-Gen WAF モジュールのインストールは Node.js の場合と似ていますが、Restify では 404 エラーは異なる方法で処理されます。最良の結果を得るには、Signal Sciences を NotFound イベントに接続する必要があります。詳細については、「Restify ノードサーバー API」を参照してください。
Node.js Hapi v17 および v18
アプリケーションの最上部に次を追加します。
var Sigsci = require('sigsci-module-nodejs')const Hapi = require('@hapi/hapi')
var sigsci = new Sigsci({ path: '/var/run/sigsci.sock' // see other options below})const init = async() => { // Creating a server const server = Hapi.Server({ port: 8085 });
server.ext('onRequest', sigsci.hapi17()) server.events.on('response', sigsci.hapiEnding()) // Add SigSci request lifecycle methods, e.g. // server.route({ // method: ['POST', 'PUT', 'PATCH', 'DELETE'], // config: { // payload: { // parse: false, // maxBytes: 10 * 1024 * 1024, // output: 'data' // } // }, // path: '/response', // handler: responseHandler // })};init();Node.js Hapi v14
アプリケーションの最上部に次を追加します。
var Sigsci = require('sigsci-module-nodejs')
var sigsci = new Sigsci({ path: '/var/run/sigsci.sock' // see other options below})// Creating a Serverconst Hapi = require('hapi')const server = Hapi.Server({ port: 8085});// Add SigSci request lifecycle methods, e.g.// server.route({// method: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],// path: '/dynamic/response',// handler: responseHandler// })
server.ext('onRequest', sigsci.hapi14())server.on('response', sigsci.hapiEnding())server.start((err) => { if (err) { throw err } console.log('Server running at:', server.info.uri)})Node.js KOA
アプリケーションの最上部に次を追加します。
const Koa = require('koa');const Router = require('koa-router');var Sigsci = require('sigsci-module-nodejs')const server = new Koa();const router = new Router();var sigsci = new Sigsci({ path: '/var/run/sigsci.sock'// see other options below})
// add lifecycle methods here// var dispatcher = async function (ctx) {// let req = ctx.req// let res = ctx.res // add your code here// }
// setup your endpoints here// router.all('/response', dispatcher)
server.use(sigsci.koa())server.use(router.routes())
server.listen(8085);設定
モジュール設定オプションは Sigsci オブジェクトで直接設定できます。
var sigsci = new Sigsci({path: '/var/run/sigsci.sock'...})| Name | 説明 |
port | TCP 経由でエージェントに接続するポートを指定します。これが設定されている場合、path パラメータは無視されます。 |
host | TCP 経由でエージェントに接続するための IP アドレスを指定します (任意)。デフォルト : localhost |
path | UDS 経由でエージェントに接続するための Unix ドメインソケットを指定します。 |
socketTimeout | エージェントからのレスポンスを待機するミリ秒数。この時間が過ぎると、モジュールは元のリクエストを通過させます (フェイルオープン)。 |
maxPostSize | エージェントに送信される POST ボディの最大サイズをバイト単位でコントロールします。この値よりもボディが大きい場合、POST ボディはエージェントに送信されません。これにより、パフォーマンスをコントロールし (POST ボディが大きくなると処理に時間がかかる)、サービス妨害攻撃を防ぐことができます。 |
log | エラーメッセージをログに記録するための関数。デフォルトでは、次のようになります : function (msg) { console.log(util.format('SIGSCI %s', msg)) |
anomalySize | 計算されたコンテキストレスポンスサイズと報告されたコンテキストレスポンスサイズの間のしきい値。デフォルト : 524288 |
anomalyDurationMillis | 内部ポスト処理期間の制限。デフォルト : 1000 |
timeoutMillis | エージェント決定エンジンのフェイルオープンタイムアウト。デフォルト : 200 |
expectedContentTypes | サポートするカスタムコンテンツタイプのスペース区切りリスト。 |
extendContentTypes | 拡張コンテンツ検査を有効にするブール値。デフォルト : false |
さらなる詳細とデフォルト値は、SigSci.js ファイルで確認できます。
次の手順
エージェントとモジュールのインストールを確認し、モジュールオプションを調査する。