Netty Handler として Java モジュールをインストールする
- English
- 日本語
Next-Gen WAF Netty モジュールは、パイプライン内の次のハンドラーにイベントを転送する前に HttpRequest イベントを検査するハンドラーとして実装されています。
ダウンロード
Next-Gen WAF Java モジュールを手動でダウンロードするか、Maven でアクセスします。
手動によるダウンロード
次のいずれかのリンクをクリックして、Java モジュールの最新バージョンをダウンロードしてください。
sigsci-module-java_latest.tar.gzを抽出します。次のいずれかのオプションを使用して JAR ファイルをデプロイします。
sigsci-module-java-{version}-shaded.jar(すべての依存関係がバンドルされたuber jar) をアプリケーションのクラスパスにコピーします (例:%CATALINA_HOME%\webbapps\<APP_FOLDER>\WEB-INF\lib)。sigsci-module-java-{version}.jarとその依存関係をlibフォルダからアプリケーションのクラスパス (例:%CATALINA_HOME%\webbapps\<APP_FOLDER>\WEB-INF\lib) にコピーします。アプリケーションのクラスパスフォルダー (WEB-INF\lib内の Tomcat) にすでに依存関係の jar ファイルがある場合は、バージョン番号が異なっていてもそれらをコピーする必要はありません。ログ記録の jar はオプションで、slf4jの設定に基づいて決定します。
Maven を使用したアクセス
ビルドまたはデプロイメントに Maven を使用するプロジェクトの場合、プロジェクト pom.xml のファイルに XML を追加することで、最新バージョンの Next-Gen WAF Java モジュールをインストールできます。例:
<repositories> <repository> <id>sigsci-stable</id> <url>https://mvn.security.fastly.com/release/maven2</url> </repository></repositories>
<dependency> <groupId>com.signalsciences</groupId> <artifactId>sigsci-module-java</artifactId> <version>LATEST_MODULE_VERSION</version></dependency>必ず LATEST_MODULE_VERSION を Java モジュールの最新リリースに置き換えてください。最新バージョンは、https://dl.security.fastly.com/sigsci-module-java/VERSIONまたは https://dl.signalsciences.net/sigsci-module-java/VERSION のバージョンファイルで確認できます。
インストールして設定する
新しい接続ごとに新しい WafHandler インスタンスを作成します。
WafHandlerは、FlowControlHandlerの後に追加する必要があります。HTTP POST のボディ (中身、本体) を検査するには、
HttpObjectAggregatorハンドラーをFlowControlHandlerの前に追加する必要があります。WafHandlerはブロックされたリクエストに対してHttpResponseを送信することがあります。
デプロイの例
// Update configurationWafHandler.getSigSciConfig().setMaxPost(40000);
// start server and handle requestsnew ServerBootstrap().group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).childHandler( new ChannelInitializer<SocketChannel>() { @Override public void initChannel(SocketChannel ch) throws Exception { ch.pipeline() .addLast(new HttpServerCodec()) .addLast(new HttpObjectAggregator(6 * (1 << 20))) .addLast(new FlowControlHandler()) .addLast("waf", new WafHandler()) .addLast(new SimpleChannelInboundHandler<FullHttpRequest>() {
// send response
}); } }).bind(8080).sync();