さくらのVPSのセキュリティはSiteGuardが使える

初心者がVPS(Virtual Private Server)をWebサーバーとして構築し、WordPressのサイトを運用できるようになるまでの「ネコでもわかる!」連載の番外編です。
連載は8回で終了し、WordPressサイトを公開できるところまでご紹介しましたが、今回は番外編としてSiteGuard LiteをVPSにインストールする手順をご紹介します。
対象サーバーは、さくらのVPS CentOS7 x86_64です。

VPS講座を最初から読みたい方はこちらからどうぞ。

SiteGuard Liteとは、WAF(Web Application Firewall)と言われる、ファイアウォールの一種です。ファイアウォールについては、すでに第7回の連載firewalldを導入しました。
ではなぜ、SiteGuard Liteというファイアウォール製品をさらに導入する意味があるのでしょうか?
それは、firewalldのようなOS標準のファイアウォールツールでは防げない、より高度な攻撃に対応できるようにするためです。

SiteGuardではfirewalldよりも高度な攻撃に対応できる。

「より高度な攻撃」とは、WebサイトにインストールしたWordPressなどのCMSに潜む脆弱性を利用してデータを盗み見ようとしたり、別サーバーへの侵入の踏み台として利用したりする攻撃です。

専門的な用語を使うと、以下のような攻撃のことを指します。
SQL インジェクション
クロスサイトスクリプティング(XSS)
OS コマンドインジェクション
ディレクトリトラバーサル
HTTP ヘッダインジェクション
ブルートフォース

SiteGuardは、より高度な攻撃に対応できる

さくらのVPSでは、以前からSiteGuard Liteを導入する手段はありましたが、初期OSインストールの際にプレインストール版として導入する方法しか提供されておらず、「あとからSiteGuardLiteを入れたい」といったニーズには対応できていませんでした。
それが2017年6月に「SiteGuard Liteパッケージ版の提供が開始された」ことにより、OSをインストールし直さなくてもあとからSiteGuard Liteを導入できるようになりました

詳しくは以下のお知らせをご覧ください。
さくらのVPS、「SiteGuard Lite」追加インストール用パッケージ提供開始のお知らせ – さくらのVPSニュース

また、この製品は本来は有料なのですが、さくらのVPSの利用者は無料で利用できます。せっかくの機会ですので、ぜひ導入してみてはいかがでしょうか。

さくらのVPSではSiteGuardを無料で導入できる

目次

  1. 前準備として必要なもの
  2. SiteGuard Liteのインストール
  3. 管理画面へのアクセスとライセンス情報の登録
  4. 外部からの攻撃を検知できることを確認する

さくらインターネットが提供している、SiteGuardのセットアップに関する資料はこちらにあります。
SiteGuard Lite(WAF) – さくらのサポート情報

このページに書かれている手順や、リンク先のマニュアルをもとにインストールを進めることができますので、腕に自信がある方はこれに沿って進めていただけます。
ただ、リンク先のマニュアルは情報の網羅性が必要な観点から、ページ数が多く簡単に進められる手順になっていないので、このブログではポイントを絞ってよりスムーズに導入できるように手順をご案内したいと思います。

前準備として必要なもの

ご利用ガイドPDFを開くためのパスワードを控える

上記サポート情報からリンクされている「JP Secure SiteGuard Lite ご利用ガイド.pdf」はパスワード保護されていますので、まずはこのパスワード情報を確認します。

さくらのVPSコントロールパネルにログインし、メニューの「SiteGuard利用」をクリックします。

ご利用ガイドを閲覧するためのパスワードが取得できますので、これを控えてください。

ご利用ガイド(パッケージをインストールする手順)はこちらになります。
JP Secure SiteGuard Lite ご利用ガイド.pdf
このPDFをダウンロードし、開いたときにパスワードを求められますのでここでパスワードを入力してください。
うまくPDFが開けましたでしょうか。
このページの中に書かれていることをあとで参照しますのでドキュメントを開いておいてください。

OpenJDK 8をインストールする

次に、SiteGuard Lite導入に必要なパッケージ「OpenJDK 8」を先にインストールします。
OpenJDKは、Javaプログラミング言語を動かすためのツール群です。これがあればSiteGuardの設定をウェブの管理画面で行うことができます。

VPSにSSHログインし、rootで作業してください。

yumコマンドでOpenJDK 8をインストールします。
最後にyをタイプしてインストール完了です。

# yum install java-1.8.0-openjdk
...
Total download size: 36 M
Is this ok [y/d/N]:y

firewalldでTCP/9443のポートを開放する

SiteGuard Liteは独自のWeb管理画面を持っています。それにアクセスできるようにするため、TCPの9443ポートを通過させる設定にしておく必要があります。
以下のfirewalldコマンドを実行してください。

# firewall-cmd --add-port=9443/tcp --zone=public --permanent
# firewall-cmd --reload

以上で前準備は完了です。

SiteGuard Liteのインストール

準備が整ったので、SiteGuard Lite本体をインストールします。

ご利用ガイドの7ページ目「3.インストールファイルの取得について」の章に、インストールファイルへアクセスするためのパスが記載されています。

Apache版、Nginx版、IIS版の3種類がありますが、この連載ではApacheをインストールしましたのでApache版のパッケージをwgetコマンドでダウンロードします

# wget http://(インストールファイルの場所)

うまくダウンロードできたら、カレントディレクトリにrpmファイルがありますので、これをrpmコマンドでインストールします。

# rpm -Uvh (ダウンロードしたrpmファイル)

次にセットアップコマンドを実行します。

# cd /opt/jp-secure/siteguardlite
# ./setup.sh

以降は、対話形式でインストールが進んでいきます。
基本的には、Enterキーを押していくだけで完了しますので、そんなに恐れることはありません。

------------------------------------------------------
  SiteGuard Lite setup start...
------------------------------------------------------


please enter Apache Config File. [/etc/httpd/conf/httpd.conf] -->(Enter)
Apache Config File=[/etc/httpd/conf/httpd.conf]
is correct? [yes]|no -->(Enter)

please enter Apache Binary File (httpd). [/usr/sbin/httpd] -->(Enter)
Apache Binary File (httpd)=[/usr/sbin/httpd]
is correct? [yes]|no -->(Enter)

Is the Web server registered in systemd?
please select. [yes]|no -->(Enter)

please enter Apache service name. [httpd] -->(Enter)
Apache service name=[httpd]
is correct? [yes]|no -->(Enter)

do you want to use the web administrative console?
* to use the console, you will need JDK or JRE is installed.
please select. [yes]|no -->(Enter)

please enter JDK or JRE directory. [/usr/lib/jvm/jre-1.8.0] -->(Enter)
JDK or JRE directory=[/usr/lib/jvm/jre-1.8.0]
is correct? [yes]|no -->(Enter)

please enter the port number of the web console for https.
please enter port number. [9443] -->(Enter) (←使用するポート番号)
port number=[9443]
is correct? [yes]|no -->(Enter)

please enter the addresses allowed to access the web console for https.
ex:192.168.1.100 10.0.0.0/24
please enter allowed addresses. [all] -->(Enter) (←すべてのIPアドレスからの接続を許可する。制限したい場合はIPアドレスを入力してください。)
allowed addresses=[all]
is correct? [yes]|no -->(Enter)

please enter the ssl certificate file (crt file) path.
please enter ssl certificate file path. [/opt/jp-secure/siteguardlite/conf/ssl/server.crt] -->(Enter) ← 使用するSSL証明書(注)
ssl certificate file path=[/opt/jp-secure/siteguardlite/conf/ssl/server.crt]
is correct? [yes]|no -->(Enter)

please enter the ssl server key file (key file) path.
please enter ssl server key file path. [/opt/jp-secure/siteguardlite/conf/ssl/server.key] -->(Enter) ← 使用する秘密鍵(注) 
ssl server key file path=[/opt/jp-secure/siteguardlite/conf/ssl/server.key]
is correct? [yes]|no -->(Enter)
update server config file done.
update Makefile done.
------------------------------------------------------
  Starting services...
------------------------------------------------------
Starting Tomcat(WebUI for siteguardlite):                  [  OK  ]
Starting Notify Service:                                   [  OK  ]

Apache restart. Are you sure? [yes]|no -->(Enter)
Stopping :                                                 [  OK  ]
------------------------------------------------------
  clear tmp files
------------------------------------------------------
removing tmp files ...
done.
starting web server ...
Starting :                                                 [  OK  ]
Apache restart done.
------------------------------------------------------
  finished SiteGuard Lite setup
------------------------------------------------------
  Please access following URL for starting service.
  https://xxxxx.xxx:9443/  ←管理画面のURL
  (default user:xxxxx, default password:xxxxx)←ログインユーザーと初期パスワード

------------------------------------------------------
  SiteGuard Lite setup done...
------------------------------------------------------

※注: 上記で設定したSiteGuard付属の証明書ファイルでもSSLとして機能しますが、ローカル証明書なのでブラウザの警告画面が出てきてしまいます。
SSLを第6回の記事で導入したLet’s Encryptのものにしたい場合は
/opt/jp-secure/siteguardlite/conf/ssl/server.crt
のかわりに
/etc/letsencrypt/live/xxxxx.xxx/cert.pem (xxxxx.xxxはドメイン名)
を指定し、
/opt/jp-secure/siteguardlite/conf/ssl/server.key
のかわりに
/etc/letsencrypt/live/xxxxx.xxx/privkey.pem (xxxxx.xxxはドメイン名)
を指定してください。
この場合、SiteGuard Lite管理画面のアクセスに使うURLは、Let’s encryptを設定したときのドメイン名xxxxx.xxxを使って
https://xxxxx.xxx:9943
でアクセスする必要があります。
setup.shを実行したあとで、あとからSSL証明書ファイルを変更したい場合は
SiteGuardのssl設定ファイル
/opt/jp-secure/siteguardlite/conf/httpd.conf.siteguardlite_admin_ssl
を開き以下のように変更して、”systemctl restart httpd”でApacheを再起動してください。

SSLCertificateFile /etc/letsencrypt/live/xxxxx.xxx/cert.pem          (xxxxx.xxxはドメイン名)
SSLCertificateKeyFile /etc/letsencrypt/live/xxxxx.xxx/privkey.pem    (xxxxx.xxxはドメイン名)

以上でインストールは完了です。

トラステッド・シグネチャ更新URLの設定

トラステッド・シグネチャとはアンチウイルスソフトでいう定義パターンファイルみたいなものです。これを最新に保つことで、新種の攻撃手法にも対応できるようになります。
これを機能させるために、さくらのVPSでは若干設定をしておく必要があります。

SSHのコンソールを開いて作業してください。
ご利用ガイド.pdfの12ページ目にある「6. シグネチャ更新URLの設定」で、「6.1 Apache版の設定」に書かれている内容に従って
/opt/jp-secure/siteguardlite/conf/dbupdate_waf_url.conf
ファイル内のLATEST_URLを変更してください。

管理画面へのアクセスとライセンス情報の登録

インストールが完了したらさっそくWebの管理画面にアクセスしてみましょう。
上記インストール時に示されたURL、ユーザID、パスワードでログインします。

ログインするとすぐにパスワード変更を求められますので、ここではご自身で決めたパスワードに変更してください。

インストール直後はトライアルバージョン(評価ライセンス)になっておりますので、ここでライセンスキーを登録して正規ライセンスにします。

上部メニューの「管理」、左メニューの「ライセンス情報」とクリックします。

ここに入れるシリアルキー、サポートID、パスワードの情報は、先ほど開いた「ご利用ガイド.pdf」の8ページ目「5.ライセンス情報について」に掲載されています。「5.3 さくらのVPS」の項に掲載されている情報を使ってください。

正しいキーを入力して適用ボタンを押せば「正規ライセンス」と表示されます。

基本設定と管理者への通知メール設定

次にSiteGuardのメイン機能を有効にします。
[モジュール設定] → [基本設定] で「ウェブ攻撃検査」を有効にしてください。
攻撃を検知したときに管理者へメール通知するかどうかは、必要に応じて設定してください。

外部からの攻撃を検知できることを確認する

ここまでで設定は完了です。
SiteGuardがWebの攻撃を防御できているか実際にテストしてみましょう。

テスト用のURLは以下で確認できます。(自分のドメイン)のところは適宜読み替えてブラウザで以下のアドレスを入力してください。

https://(自分のドメイン)/WAF-TEST-SIGNATURE

このように、SiteGuardの検出メッセージが表示できれば正常に機能しています。

ただし、「テストといっても、こんなURLの攻撃は無いから信用できないよ〜」て思った方!
念のため別のテストをしましょう。
クロスサイトスクリプティング(XSS)攻撃をしかけてみます。

POSTメソッドのテストツール
https://so-zou.jp/web-app/network/post/
を使って、自分のVPSに向けてPOST送信を行います。

entity bodyのテキストボックスに

<script>alert(document.cookie)</script>

というXSS攻撃用のコードを入れて自分のVPSに向けてPOST送信してみてください。

SiteGuard Lite管理画面の「ログ」メニューを見ると、このPOST送信リクエストがxss-tag-1というシグネチャにマッチしたためブロックされていることが分かります。

このように、SiteGuard LiteはWebサイトの高度な脆弱性攻撃に対して防御するセキュリティを提供してくれます。
今回紹介した機能はほんの一例であり、他にたくさんのモニタリングができます。
今回参照した「ご利用ガイド」に、SiteGuard Liteのマニュアル(管理者用ガイド)へのリンクがありますので、詳しくはそちらを参照してください。

また、さくらのナレッジでもSiteGuardの提供元ジェイピー・セキュアの斎藤さんが解説記事を書いています。
少し古い記事ですが、参考になると思います。
WAFの基礎から、SiteGuard Liteのセットアップまで ~SiteGuardシリーズでセキュリティ強化(その1)~ | さくらのナレッジ
SiteGuard Liteの詳細設定 ~SiteGuardシリーズでセキュリティ強化(その2)~ | さくらのナレッジ
CMSのセキュリティ対策 ~SiteGuardシリーズでセキュリティ強化(その3)~ | さくらのナレッジ

本連載は以上です。

「ネコでもわかる!さくらのVPS講座 番外編」、いかがでしたでしょうか。
SiteGuardは少し導入が面倒ですが、より安全なWebサイトを構築したい方は導入の価値があると思います。

SiteGuardのインストール完了

(イラスト:オガ(ブログ))