さくらのクラウドでSiteGuard Lite(WAF)を試してみて気づいたこと
さくらのクラウドでは、ホスト型のWeb Application Firewall(WAF)である、JP-Secure社が開発する「SiteGuard Lite」を無料で使用することができます。
・さくらのクラウド SiteGuard Lite(WAF)
https://manual.sakura.ad.jp/cloud/os-packages/siteguard-firewall.html
今回、初めてこの「SiteGuard Lite on さくらのクラウド」をちょっとだけ試してみて、主にWAF機能以外の動作仕様や性能面で気づいたことを記載します。
なお、さくらのクラウドにおける「SiteGuard Lite」のインストール方法やWAF機能については、上記のオフィシャルサイトにある「JP Secure SiteGuard Lite ご利用ガイド(PDF)」や、以下の「さくらのナレッジ」の記事を参照してください。
ドキュメントがわかりやすいですし、インストールはとても簡単です。
・さくらのナレッジ WAFの基礎から、SiteGuard Liteのセットアップまで ~SiteGuardシリーズでセキュリティ強化(その1)~
https://knowledge.sakura.ad.jp/4056/
気づいたこと
サーバー作成時にSiteGuard Liteを含むアーカイブ(OSテンプレート)を指定する必要がある
サーバー作成時のアーカイブ選択はこんな感じです。↓
このため、起動中のサーバーに無料版のSiteGuard Liteを追加インストールすることはできません。
また、提供されているOSはCentOS 6,7のみで、Debian/Ubuntu, FreeBSD, CoreOSには適用できません。
Apacheモジュールである
これは今回一番「そうだったのか!」と思ったポイントでした。
「Nginxでは使えないのか。。」と。
どうしてもNginx(+ FastCGI)を使用したい場合は、バックエンドにNginxをたてて、Apache→Nginx→FastCGIという不思議な構成となるでしょうか。
SiteGuard Lite管理画面にアクセス制限の強化が必要
管理者向けにSiteGuard LiteのGUI管理画面が用意されていますが、このURLはデフォルトでは、
https://<サーバーのIPアドレス>:9443/
となっています。
このページは、第三者がアクセスできないよう、以下の方法などでアクセス制限を強化すべきでしょう。
- ファイアウォール(パケットフィルタ)でTCP/9443へのアクセス元IPアドレスを限定する。
- ポート番号をデフォルトの9443から変更する。
- Digest認証またはBASIC認証を追加する。
なお、SiteGuard Lite管理画面用のApache Configは
/opt/jp-secure/siteguardlite/conf/httpd.conf.siteguardlite_admin_ssl
ですので、ポート番号の変更時やDigest認証またはBASIC認証を追加する場合は、このConfigに追記することになります。
ポート番号は、SiteGuard Liteの初期設定ツール内でも指定できます。
Java製の管理アプリがメモリを500MBぐらい使用する
SiteGuard Liteの管理アプリケーションはJava製、Tomcatによるアプリケーションサーバープロセスが起動しています。
このプロセスの使用メモリは、「SiteGuard Lite Linux版 管理者用ガイド(PDF)」では、約200MBと記載されていますが、僕が試した環境では、起動直後で約380MB、アクセステストを行って1時間後には500MB弱となっていました。
# ps aux | grep tomcat root 1919 2.1 48.4 2394884 493812 pts/1 Sl 15:06 1:34 /opt/jp-secure/siteguardlite/java/bin/java -client -Xms256m -Xmx256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Djava.security.egd=file:/dev/./urandom -Djava.net.preferIPv4Stack=true -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/opt/jp-secure/siteguardlite/tomcat/conf/logging.properties -Djava.endorsed.dirs=/opt/jp-secure/siteguardlite/tomcat/endorsed -classpath /opt/jp-secure/siteguardlite/tomcat/bin/bootstrap.jar:/opt/jp-secure/siteguardlite/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/opt/jp-secure/siteguardlite/tomcat -Dcatalina.home=/opt/jp-secure/siteguardlite/tomcat -Djava.io.tmpdir=/opt/jp-secure/siteguardlite/tomcat/temp org.apache.catalina.startup.Bootstrap start
※↑最大ヒープサイズを256MBに指定しているのに、それ以上メモリを使用しているのはなぜだろう。。
このため、サーバーのメモリサイズは、SiteGuard Liteを使用しない場合に比べて、1GB以上は大きめのものを選択すると安心です。
Webアクセス性能が少し落ちる
Apache 2.2/CentOS 6のデフォルトのテストページ「Apache 2 Test Page powered by CentOS」に対して、ab (Apache Bench)コマンドでHTTPリクエストを実行する、シンプルなWebアクセス負荷テストを行ってみました。
abコマンドの実行条件は次のとおりです。
- abコマンドは同じサーバー上で実行。
- 同時接続10で合計5,000リクエストを実施。
- SiteGuard Liteあり/なし、KeepAlive有効/無効で実施。
- それぞれ3回ずつ実施し、Request per Second(1秒あたりのリクエスト数)の平均値を確認。
abコマンドは次のとおりです。
// KeepAlive有効 $ ab -n 5000 -c 10 -k http://localhost/ // KeepAlive無効 $ ab -n 5000 -c 10 http://localhost/
結果は以下のようになりました。
Request per Second | ||
KeepAlive有効 | KeepAlive無効 | |
SiteGuard Liteなし | 6809.45 | 4750.58 |
SiteGuard Liteあり | 3870.93 | 3179.58 |
SiteGuard Liteがないときに比べて、SiteGuard Liteを使用したときは、KeepAlive有効の場合は約43%、KeepAlive無効の場合は約33%ほど、値が落ちています。
アプリケーションレイヤのデータを、リアルタイムで登録済みの攻撃パターンと照合して検査するのですから、その分1リクエストあたりの処理時間が増えるということですね。
おそらく、CPU負荷も少し増えるのでしょう。
サーバーのCPU数も、SiteGuard Liteを使用しない場合に比べて、1つ増やすと安心ですね。
おわりに
さくらのクラウドで「SiteGuard Lite」を試してみて、主にWAF機能以外の動作仕様や性能面で気づいたことを挙げてみました。
「SiteGuard Lite」の正規の使用料金は、
- 新規: 252,000円/年
- 更新: 126,000円/年
です。これがさくらのクラウドで、無料で使用できるのはすごいことですね。
(参考)
・JP-Secure「SiteGuard」シリーズの価格情報
https://www.jp-secure.com/product/price/
通常のファイアウォール(さくらのクラウドでは「パケットフィルタ」)やiptablesでは、アプリケーションレイヤの脆弱性は防御できません。
無料で使用できてアプリケーションレイヤも防御してくれるツールとしては、ModSecurityやSnort(IPS)等もありますが、基本的にはGUIがなく、カスタマイズ、運用が大変です。
それに比べると、日本語GUIの管理画面があって初期設定が簡単で、ルールや通知設定等のカスタマイズが容易な「SiteGuard Lite」を無料で使用できると、低構築・運用コストでセキュリティ強化が実現できるので、ありがたいですね。
やむをえず、脆弱性のある古いバージョンのWordPress, Movable Type等のCMSツールやEC-Cube等のECツールを使用継続せざるを得ないケースは、案外多いと思います。
そういったケースで(そうではないケースでも)、さくらのクラウドを利用する場合は、CPU負荷やメモリ使用量が少し増えることを考慮しつつ、「SiteGuard Lite」を採用して、少しでもセキュリティを強化したいところです。
なお、「SiteGuard Lite」の「トラステッド・シグネチャ」(攻撃ルール・パターン)の一部はこんな感じです。↓
WordPress, Movable Type, JoomlaといったCMSツールの脆弱性にも対応していることがわかります。