SiteGuard Liteの詳細設定 ~SiteGuardシリーズでセキュリティ強化(その2)~

編集部注:SiteGuard Liteについて
本記事にて紹介しております「SiteGuard Lite」は、名称が「SiteGuard Server Edition」に変更されています。適宜読み替えてください。(機能は同じです)

はじめに

前回は、WAFの概要と「さくらの専用サーバさくらのクラウド」の環境で、ホスト型WAF「SiteGuard Lite」を動作させるまでの手順を紹介しました。
今回は、「SiteGuard Lite」の防御機能の主となるシグネチャ検査機能のほか、通知設定や統計グラフの活用方法など、詳細設定について紹介していきます。

  • シグネチャ検査機能
  • 管理者への通知設定
  • 統計
  • syslogへの出力
  • 設定のバックアップ・リストア
  • 動作確認

紹介する内容は、製品マニュアル(管理者用ガイド)に記載されている内容ですが、今回の記事により、一通りの機能と設定を把握できるように構成しており、連載を通して「SiteGuard」シリーズの設定ができるようになっています。
テスト時・運用開始後の設定変更などについても、イメージできるように配慮していますので、宜しくお願いいたします。

シグネチャ検査機能

「SiteGuard Lite」は、標準搭載のトラステッド・シグネチャによる防御(シグネチャ検査機能)を主としています。
トラステッド・シグネチャによる検査を行うことで、ウェブアプリケーションの脆弱性を悪用する様々な攻撃から、Webサイトを保護することができます。

トラステッド・シグネチャ

トラステッド・シグネチャは、ジェイピー・セキュアが提供する「SiteGuard」シリーズに搭載されている高品質なシグネチャの名称です。
Apacheのモジュールとして動作する「SiteGuard Lite」は、HTTP/HTTPSのリクエストを検査し、

  • SQLインジェクション
  • クロスサイトスクリプティング
  • ディレクトリトラバーサル
  • OSコマンドインジェクション
  • HTTPヘッダインジェクション など

ウェブアプリケーションの脆弱性を悪用する攻撃を検出します。
また、Apache KillerやApache Struts、ShellShockと呼ばれたbashの脆弱性など、ウェブサーバーやフレームワークの脆弱性を悪用する攻撃を検出するシグネチャも用意されており、迅速なシグネチャリリースに定評があります。

シグネチャ検査によって、大規模な個人情報の流出といった甚大な被害を受けるSQLインジェクション攻撃を防御したり、CMS本体やプラグインの脆弱性にも多いクロスサイトスクリプティングなどを防御することができます。
「小規模なWebサイトだから」、「個人のブログサイトだから」のように、あまり気にされていない方もいるのですが、改ざん被害の結果として、マルウェアの配信サイトや迷惑メール配信などに悪用されるケースもありますので、Webサイトの規模や企業・個人に関係なく、加害者とならないように努める必要があります。

トラステッド・シグネチャの設定は、ウェブ管理画面の[モジュール設定]-[トラステッド・シグネチャの設定]で確認することができます。

siteguardlite-trusted_signature

シグネチャは、防御性能と運用性のバランスに配慮した"推奨設定"で、標準搭載しています。
基本的には、"推奨設定"でご利用いただいていますが、使用していないフレームワークに関するシグネチャは無効にするなど、個別に設定を変更することも可能です。
設定を変更した場合は、[適用]ボタンを押して、設定を反映してください。

シグネチャ更新設定

トラステッド・シグネチャの更新は、ウェブ管理画面の[シグネチャ更新設定]の画面で行います。
更新方法は、[今すぐ更新]ボタンによる手動更新とスケジュールによる自動更新があり、シグネチャ更新サイトにHTTPS(443)で接続します。
インターネットへの接続にプロキシサーバを経由する必要がある場合は、プロキシサーバの指定ができます。

まずは、最新のシグネチャに更新するため、[今すぐ更新]ボタンを押してみましょう。

siteguardlite-signature_update_01

シグネチャの更新に成功すると、「更新に成功しました!」のメッセージが表示されます。

siteguardlite-signature_update_02

シグネチャの更新に失敗した場合は、更新失敗のメッセージとエラーの内容が画面に出力されますので、原因の調査に役立ちます。

自動更新では、

  • 毎日 00:00
  • 毎週水曜日 01:00
  • 毎月1日 05:00

のように、更新間隔を指定することができます。(初期値:自動更新無効)

[保存]ボタンを押すと、rootのcrontabに更新スケジュールが登録されます。

siteguardlite-signature_update_03

スケジュールによる更新、メンテナンスや運用作業のタイミングに合わせた手動更新など、Webサイトの運用方針に合わせてご利用ください。
自動更新を設定していても、緊急性の高いシグネチャがリリースされたときの即時更新(手動更新との併用)が可能です。

シグネチャの更新ログは、[ログ]-[シグネチャ更新ログ]で確認することができます。

siteguardlite-signature_update_04

 カスタム・シグネチャ

「SiteGuard Lite」では、標準搭載されているトラステッド・シグネチャのほかに、お客様独自のルールを作成できるカスタム・シグネチャによる検査が可能です。(1000個までの条件を登録することができます。)
カスタム・シグネチャは、ウェブ管理画面の[モジュール設定]-[カスタム・シグネチャの編集]画面で、作成します。

siteguardlite-custom_signature_01

以下、予め用意されているサンプルをもとに、カスタム・シグネチャの作成例を紹介します。
いずれも、無効の状態で登録されていますので、必要に応じて、有効にしてご利用ください。

sample-01:検出の除外設定

カスタム・シグネチャでは、条件を指定した検出の除外設定を作成することができます。
sample-01は、"field1"というパラメータについて、signature-1~4とsignature-11のシグネチャによる検出を除外する設定です。
(ここでは、実際のトラステッド・シグネチャ名ではなく、仮のシグネチャ名を使用しています。)

siteguardlite-custom_signature_02

条件に、URLを加えた複数条件を登録することもできますので、柔軟な設定が可能です。
一部の検出を除外する場合などに、有効活用してください。

sample-02:ブルートフォース対策

カスタム・シグネチャには、「頻度判定」の機能があります。
作成した条件に対して、何秒間に何回一致したかを接続元IPアドレスでカウントしますので、ログインページへのブルートフォース攻撃といった高頻度の接続を検出することができます。

siteguardlite-custom_signature_03

sample-02では、login.phpへの接続が"1秒間に3回以上"発生した場合に検出します。

siteguardlite-custom_signature_04

機械的な不正ログイン試行などに有効なシグネチャで、こちらも要求メソッドなどを加えた複数条件を登録することができます。

sample-03:管理者アクセスの検査除外

接続元IPアドレスの指定で、条件に一致する接続を安全とみなす(検査を除外する)設定です。
CMSなどの管理ページの操作で、ページやコードの編集といった管理者操作がトラステッド・シグネチャの検出対象になってしまうことがあるため、管理者アクセスを安全とみなす設定として、作成しておくことを推奨しています。
sample-03では、/admin/というパスについて、192.168.1のネットワークからの接続を安全とみなします。

siteguardlite-custom_signature_05

一例となりますが、有名なCMSであるWordPressの場合、ブルートフォース対策のシグネチャであれば、sample-02の検査文字列で、

/wp-login\.php

のように、WordPressのログインページを指定します。
検査文字列を変更する場合は、[条件の編集]ボタンを押してください。
また、せっかくですので、シグネチャ名とコメントも分かりやすい内容に変更しておきましょう。

siteguardlite-custom_signature_06

管理者アクセスの検査除外については、sample-03の最初の条件になっている検査対象"パス"の検査文字列で、

/wp-admin/

のように、WordPressの管理アクセスのパスを指定します。
同じように、検査文字列の変更は[条件の編集]で行い、シグネチャ名とコメントも分かりやすい内容に変更しておきましょう。

siteguardlite-custom_signature_07

sample-03は、"パス"と"接続元IPアドレス"の組み合わせが条件になっていますが、条件を1つにして、接続元IPアドレスの指定だけで安全とみなす設定も可能です。
作成・編集したカスタム・シグネチャは、[適用]ボタンを押すことで、反映されます。

ここで、除外するトラステッド・シグネチャ名検査文字列に関する補足となりますが、それぞれ正規表現で指定します。

■設定例
^signature-1$                  signature-1が対象
^signature-[1-4]$             signature-1~4が対象
^192\.168\.1\.               192.168.1.xが対象
^192\.168\.1\.1(5|6)$    192.168.1.15と192.168.1.16が対象

^:      文字列の最初
$:      文字列の最後
\X:     記号Xのエスケープ表記
[X-Y]:  文字範囲指定
A|B:    AまたはB
():      グループ化

設定するときは、文字列の最初と最後を示す"^"と"$"や範囲指定について、気を付けてください。
記述にコツが必要となるケースもありますが、柔軟にシグネチャを作成できるという正規表現だからこそのメリットがあり、このカスタマイズ性も「SiteGuard」シリーズの魅力の1つです。

 管理者への通知設定

続いて、管理者への通知設定です。
「SiteGuard Lite」には、検査機能によって検出した内容のほか、製品に発生したエラー情報を管理者宛に通知する機能があります。
基本的な設定方法は同じですので、ここでは、検出通知をもとに説明していきます。
通知の設定は、[モジュール設定]-[管理者への通知設定]で行います。(初期値:無効)

検出通知を有効にして、通知間隔を指定します。(初期値:10分)
初期値の場合、検出情報を要約したメールが10分間隔で送信されます。
通知メッセージの内容は、[サマリ検出通知メッセージの編集]で編集することができます。
通知の間隔は、分単位による指定のほか、毎日00:00のような設定も可能です。

siteguardlite-notify_admin_01

メールを送信する宛先の指定も、同じ画面上で行います。

siteguardlite-notify_admin_02

宛先のメールアドレスのほか、差出人(From)を指定します。
宛先は、改行区切りで、複数のアドレスを指定することができます。
差出人の指定は任意で、差出人の指定がない場合は、宛先に指定された先頭のメールアドレスが差出人に設定されます。

このほか、SMTPサーバのホスト名(または、IPアドレス)とポート番号、SMTP認証が必要な場合は、認証のユーザ名とパスワードを指定します。
必要な情報を入力したら、[適用]ボタンを押して設定を反映してます。

外部からのWebサイトへのアクセスで発生した検出情報の要約が、メールで送信される有用な機能となっていますので、是非、利用してみてください。

siteguardlite-notify_admin_03

通知間隔の指定は、いずれか1つとなります。
検出した情報を早いタイミングで確認したい場合は、分単位での設定。デイリーレポートとして通知を受けたい場合は、毎日を設定のように、運用方針に合わせてご利用ください。
どちらも、検出がなかった場合、メールは送信されません。

統計

ウェブ管理画面のホームには、検出結果を集計した統計グラフが表示されます。
検出全体の種類別統計のほか、検出したシグネチャのTOP10を確認することができます。

siteguardlite-statistics_01

siteguardlite-statistics_02

ここまでの紹介では、前回の検出テスト用パス(WAF-TEST-SIGNATRE)へのアクセスだけしか試していませんが、実際に運用を開始していただくと、上図のような統計が確認できると思います。

統計の更新は、60分間隔(毎時0分)で行っていて、更新スケジュールは、rootのcrontabに登録されています。

0 * * * * cd /opt/jp-secure/siteguardlite;./siteguardlite_statistics.sh

統計は、現在の統計(最新)と前回の2世代を表示可能です。
[統計をクリア]ボタンを押すことで、統計のクリアと前回分としてのコピーが行われます。

統計のクリアは自動化することもできます。

0 0 1 * * cd /opt/jp-secure/siteguardlite; make statistics-clear

というスケジュールをrootのcrontabに登録しておくと、毎月1日の00:00に、過去1ヶ月分の統計を前回分としてバックアップし、新たに統計の作成を開始しますので、月次統計として活用することができます。

syslogへの出力

「SiteGuard Lite」のログは、インストールディレクトリにあるlogsに、ログファイルとして出力されます。
特に必要な場合、出力先をsyslogに変更することができます。

ログ出力の設定変更は、[アドバンスト設定]で行います。
デフォルト値は、ファイルになっていますので、これをsyslogに変更し、タグファシリティプライオリティを設定してください。

siteguardlite-syslog_01

siteguardlite-syslog_02

設定変更後は、忘れずに[適用]ボタンを押してください。
なお、syslogに出力したログファイルは、ウェブ管理画面の[ログ]-[動作ログ]には表示されませんので、ウェブ管理画面からのログ閲覧も行う場合は、ログの出力先でファイルとsyslogを選択してください。

設定のバックアップ・リストア

必要に応じて、設定変更を検討する場合はありますが、ここまでの内容で、基本的に「SiteGuard Lite」の設定は完了です。
「SiteGuard Lite」には、[バックアップ・リストア]の機能がありますので、万一の操作ミスや障害時に備えて、設定のバックアップを取得しておきましょう。

siteguardlite-backup_resotre

バックアップを取得するときは、[バックアップ]を押します。
リストア時は、取得したバックアップファイルを選択して、[リストア]を押すだけです。

バックアップ・リストアのもう1つの活用方法ですが、複数台の「SiteGuard Lite」に同じ設定を適用したい場合にも有効です。
2台のウェブサーバーを構築し、今回の連載をもとに、「SiteGuard Lite」を同じ設定で動作させる場合、1台目で設定した情報を[バックアップ]して、2台目に[リストア]することができます。
複数台の「SiteGuard Lite」を同じ設定で構築する場合には、是非、有効活用してください。

※[バックアップ]により、ウェブ管理画面で設定した各種設定のバックアップができますが、cronへの追加登録となる下記の設定は、バックアップの対象外となるため、リストア後の再設定をお願いします。

  • シグネチャの自動更新スケジュール
  • 統計クリアの自動化(前述の月次統計の例)

動作確認

ここまでの準備が整ったら、コンテンツ作成のほか、Webサイトの公開に向けたテストを実施し、通常アクセスやアプリケーションの動作に問題がないことを確認しましょう。
トラステッド・シグネチャの推奨設定は、防御性能と運用性のバランスを図っていますが、通常アクセスが検出されてしまった場合には、前述のカスタム・シグネチャの作成例を参考に、サンプルの編集または、新規カスタム・シグネチャを作成してください。

今回の連載では、「さくらの専用サーバ/さくらのクラウド」での「SiteGuard Lite」提供形態に合わせて、新規構築をイメージしていますが、「SiteGuard Lite」をあとからセットアップ(将来的に、稼働中のWebサイトへ導入)する場合は、「監視運用(モニタリング)」を推奨しています。
監視運用については、製品マニュアル(管理者用ガイド)を参照してください。
(専用サーバは、技術ドキュメントから、クラウドは、SiteGuard Lite(WAF)からダウンロードすることができます。)

おわりに

今回は、防御機能に関する説明だけでなく、シグネチャ更新や通知設定、統計といった運用開始後にも役立つ設定、仕様について紹介しました。
「ワンランク上のWebセキュリティ」の一手段として、シンプル・高性能なホスト型WAF「SiteGuard Lite」の有効活用を是非、ご検討ください。
次回は、CMSのセキュリティを中心に紹介していく予定です。
WAFによる対策のほか、人気のWordPressについて、セキュリティプラグイン「SiteGuard WP Plugin」を活用した対策を紹介します。