HAProxy モジュールをインストールする

要件

ヒント: HAProxy モジュールは Lua コードであるため、どのオペレーティングシステムでも使用できます。

インストール

以下の手順に従って、HAProxy モジュールをインストールしてください。

エージェントを設定する

ヒント: このセクションは、インストール環境によっては不要な場合があります。HAProxy の chroot ディレクトリを設定している場合は、このセクションの手順に従い、以下のコマンドをカスタム chroot ディレクトリに合わせて変更する必要があります。

HAProxy の設定で chroot ディレクトリが指定されている場合、Next-Gen WAF エージェントの設定もそれに合わせて更新する必要があります。エージェントのソケットファイルのデフォルトの場所 (/var/run/sigsci.sock) は、指定した chroot ディレクトリ外にある HAProxy モジュールからはアクセスできません。

  1. 以下のコマンドを実行して、Unix ドメインソケット用のディレクトリ構造を作成します。$HAPROXY-CHROOT-DIRECTORY を HAProxy の chroot ディレクトリに置き換えてください。

    $ sudo mkdir -p /$HAPROXY-CHROOT-DIRECTORY/var/run/
  2. chroot 配下の新しいソケットファイルの場所を指定するため、エージェント設定ファイル (デフォルトの場所は /etc/sigsci/agent.conf) に次の行を追加します。

    rpc-address="unix:/$HAPROXY-CHROOT-DIRECTORY/var/run/sigsci.sock"

たとえば、HAPROXY-CHROOT-DIRECTORYhaproxy.conf/var/lib/haproxy に設定されている場合は、次のコマンドを実行します。

$ sudo mkdir -p /var/lib/haproxy/var/run/

そして、エージェント設定ファイルに次の行を追加します。

rpc-address="unix:/var/lib/haproxy/var/run/sigsci.sock"

モジュールをインストールする

HAProxy モジュールはパッケージマネージャーまたは手動でインストールします。

パッケージマネージャーでインストール

HAProxy モジュールは、主要な多くのオペレーティングシステムのパッケージマネージャーからインストールできます。

  • Alpine: sudo apk add sigsci-module-haproxy

  • CentOS: sudo yum install sigsci-module-haproxy

  • Debian: sudo apt-get install sigsci-module-haproxy

  • Ubuntu: sudo apt-get install sigsci-module-haproxy

手動インストール

代替手段として、HAProxy モジュールを手動でインストールすることも可能です。

  1. 以下のいずれかの Web サイトから、最新バージョンの HAProxy モジュールをダウンロードします。

    1. dl.security.fastly.com
    2. dl.signalsciences.net
    $ wget https://dl.security.fastly.com/sigsci-module-haproxy/sigsci-module-haproxy_latest.tar.gz
  2. HAProxy モジュールを配置するディレクトリを作成します。

    $ sudo mkdir -p /usr/local/lib/lua/5.3/sigsci/
  3. HAProxy アーカイブを新しいディレクトリに解凍します。

    $ tar xvzf sigsci-module-haproxy_latest.tar.gz -C /usr/local/lib/lua/5.3/sigsci/

HAProxy の設定を変更する

HAProxy モジュールをインストールした後、HAProxy の設定ファイル (デフォルトでは /etc/haproxy/haproxy.cfg) を編集し、以下の行を追加します。

global
...
#Signal Sciences
lua-load /usr/local/lib/lua/5.3/sigsci/SignalSciences.lua
pidfile /var/run/haproxy.pid
...
frontend http-in
...
#Signal Sciences
#Required for buffering request body to ensure inspection is performed
#Can also be set in the defaults section
option http-buffer-request
#Signal Sciences
http-request lua.sigsci_prerequest
http-response lua.sigsci_postrequest
...

HAProxy 1.9以上

HAProxy 1.9 以上を使用している場合は、上記の HAProxy 設定ファイルの編集に加えて、frontend http-in コンテキストに以下の行を追加する必要があります。

...
# for haproxy-1.9 and above add the following:
http-request use-service lua.sigsci_send_block if { var(txn.sigsci_block) -m bool }
...

設定

通常、HAProxy モジュールを動作させるための設定変更は不要です。ただし、必要に応じてデフォルト設定をオーバーライドすることは可能です。その場合は、これらの設定ディレクティブを追加記述する override.lua ファイルを作成し、HAProxy 設定ファイル (/usr/local/etc/haproxy/haproxy.cfg) の global セクションを更新して、このオーバーライド設定ファイルを読み込むようにする必要があります。

設定例

global
...
lua-load /path/to/override.lua
...

オーバーライドディレクティブ

これらのディレクティブはオーバーライド設定ファイルで使用できます。

Name説明
sigsci.agenthostSignalSciences エージェントがリッスンしている Unix ドメインソケットへの IP アドレスまたはパス。デフォルト: /var/run/sigsci.sock (unix ドメインソケット)
sigsci.agentportTCP 使用時にエージェントがリッスンするローカルポート。デフォルト: nil
sigsci.timeoutエージェントソケットのタイムアウト (秒単位)、デフォルト: 10はオフを意味します)。
sigsci.maxpostPOST ボディの最大サイズ (バイト)。デフォルト: 100000
sigsci.extra\_blocking\_resp\_hdr406 応答に対して追加されるレスポンスヘッダー。デフォルト: ""

オーバーライド設定の例

sigsci.agenthost = "192.0.2.243"
sigsci.agentport = 9090
sigsci.extra_blocking_resp_hdr = "Access-Control-Allow-Origin: https://example.com"

アップグレード

HAProxy モジュールをアップグレードするには、最新バージョンのモジュールをダウンロードしてインストールしてください。

インストール後、新しいモジュールバージョンが検出されるように HAProxy を再起動してください。