0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

さくらのVPS(ubuntu24.04/nginx)でSiteGuard Server Editionを使う

0
Last updated at Posted at 2026-03-03

概要

成果

さくらのVPSにおいて無料で利用できるSiteGuard Server Editionを有効にした。併せて、需要が多いであろうLet's EncryptによるHTTPS対応も実施した。
環境は以下の通り。

  • OS:Ubuntu 24.04
  • Webサーバ:nginx 1.28.2
  • Site Guard Server Edition:Ver8.00 Update 3

背景

さくらのVPSではWAFとしてSiteGuard Server Editionが利用できるが、関連するインターネット上の文献が古く、かつUbuntuとnginxの組み合わせで利用しているケースが稀であるため、構築がてら記事にしたいと考えた。
公式にガイドはあるが長大であり、かつSiteGuard Server Edition利用にあたって必要なnginxのソースからのコンパイル、インストールについて言及がない。それらの情報も包含し、要点を洗った包括的なガイドに仕上げることにした。

構築手順

さくらのVPSのOSセットアップ

設定できる項目の豊富さに照らせば、スタートアップスクリプトは基本的に「Setup and update」を選択する方がよい(この段階で「SiteGuard Server Edition」は選択しない)。
セットアップ後に発行されたグローバルIPアドレスを、ネームサーバのA、AAAA(IPv6対応している場合)レコードに登録する。

パケットフィルタの設定

SSHポート、Webサーバのポートに加え、SiteGuard Server Editionの制御画面がホストされる9443ポートを開放する。SSHとSiteGuard Server Editionは運用担当者のグローバルIPに限定することを推奨する。
image.png

必要なパッケージのインストール

一気に実行できるが、わかりやすくするため、ここではコマンドを分割して記載する。

# SiteGuard Server Editionの動作に必要
sudo apt install unzip make libapr1 libaprutil1 libapr1-dev libaprutil1-dev fontconfig
sudo apt install openjdk-21-jre
# nginxのビルドに必要
sudo apt install build-essential libssl-dev libpcre3-dev zlib1g-dev
# Let's EncryptによるHTTPS対応に必要
sudo apt install certbot python3-certbot-nginx

SiteGuard Server Editionのダウンロード・インストール

叩くコマンドは以下の通り。
ダウンロードURLはさくらのVPSのコントロールパネルから遷移できるパスワード付きページに掲載されているため、ここでは記載を省略する。

sudo wget ダウンロードURL
sudo tar -zxvf siteguard-server-edition-8.00-3.nginx.x86_64
cd siteguard-server-edition-8.00-3.nginx.x86_64
sudo make install

nginx

ダウンロード

2026年3月現在の最新安定版を取得する。

sudo wget https://nginx.org/download/nginx-1.28.2.tar.gz
sudo tar -zxvf nginx-1.28.2.tar.gz
cd nginx-1.28.2

あわせて、実行用ユーザを作成する。

sudo useradd -r -s /usr/sbin/nologin nginx

インストール

通常の設定に加え、「--add-module=/opt/jp-secure/siteguardlite/nginx --with-http_ssl_module」が必要になる。コマンドは以下の通り。

sudo ./configure \
    --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --pid-path=/run/nginx.pid \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --user=nginx \
    --group=nginx \
    --with-http_ssl_module \
    --with-http_v2_module \
    --add-module=/opt/jp-secure/siteguardlite/nginx

# ビルドとインストール
sudo make
sudo make install

SiteGuard Server Editionのセットアップ

以下のコマンドを実行する。

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

対話形式でセットアップが進む。基本的には既定値通りなので「Enter」連打でよい。
私の場合はNginx Config Fileだけ自動検知しなかっため、手動で入力した(入力値は上記設定どおり、/etc/nginx/nginx.conf)。
systemdに登録済みかも聞かれる。この時点では未登録だが、後で登録するためそのまま既定値のYesで進める。
完了すると、制御画面のURLと認証情報が表示される。
image.png
この画面はnginxでホストされているわけではなく、tomcatが走っているため、この段階で入ることが可能である。URLをブラウザに入力し、ブラウザ警告を無視してログインする。
image.png
初期画面ではID、パスワードを任意の値に変更する。
セキュリティの設定内容は利用者次第であるため言及は控えるが、この段階でライセンス情報の入力は最低限しておく。
image.png
これでひとまず、SiteGuardが有効なnginxが構築できた。
実はシグネチャの更新のために設定ファイルを編集する必要があるのだが、そこは利用者限定ページ末尾のガイドを参照されたい。

nginxを正式なサービスとしてUbuntuに登録する準備

以下コマンドでまずサービス登録を行う。

sudo nano /lib/systemd/system/nginx.service

反映する内容は以下の通り。

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

このままサービス登録してもよいが、せっかくなのでLet's Encrypt対応の下準備も行う。

Let's Encrypt対応下準備

certbotによる証明書取得・反映ができるよう、設定ファイルを編集し、80番ポートを開放する。

sudo nano /etc/nginx/nginx.conf

HTTPブロックの末尾に以下を追加する。

server {
  listen       80;
  listen       [::]:80;
  server_name  ドメイン名;

  location / {
    root   html;
    index  index.html index.htm;
  }
}

これにて設定は完了。あとはサービスとして起動させる。

sudo nginx -t
sudo systemctl daemon-reload
sudo systemctl enable nginx
sudo systemctl start nginx

Let's Encrypt対応

以下のコマンドを実行し、対話プロンプトでメールアドレス入力と利用規約同意を済ませる。

sudo certbot --nginx -d ドメイン名

image.png
無事完了すると、TLS証明書がインストールされ、nginx.confにも反映される。
最後の一押し、nginxを再起動する。

sudo nginx -t
sudo systemctl reload nginx

これでHTTPSに対応できているため、ドメインを叩けば、nginxの画面が表示される。
image.png

テスト

SiteGuard Server Editionの設定を有効化してから以下のURLを叩くと、疑似的に問題のあるリクエストを送ることができ、その際に表示される画面を確認することができる。
http://ホスト名/WAF-TEST-SIGNATURE
image.png
問題なく動作していることがわかる。

感想

nginxをソースベースで入れる必要があるためそこは手間がかかるが、1度セットアップしてしまえば無料でWAFを恒久利用できるのはとてもありがたいと感じた。
SiteGuard Server Editionは学習済みデータによるフィルタリングに加え、国外IPのブロックにも対応している。応用が利くソフトウェアなので、このひと手間に躊躇せずぜひ挑戦してみて欲しい。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?