さくらのVPSやさくらのクラウドに標準装備されているWAF、SiteGuard Server Editionはとても重宝します。
さくらのVPSを使い続けているのも、このWAFがあるからと言っても過言ではありません。
ただ、1つだけ設置方法について気になっていることがありました。
気になっている設置方法
インストールの手順を見ると、管理画面のサイトが次のようになっています。
9443のポートを開放してアクセスするようになっています。
そのため、セキュリティを担保する方法としては、次の方法が考えられます。
- IPを固定またはベーシック認証
- ポートを違うものにする
IP固定ができれば良いのですが、できない場合でポートを開放すると攻撃を受けるリスクが上がります。
ポートを変更してもスキャンされれば分かってしまう場合があります。
また、SiteGuard Server Editionの管理画面へのアクセスはhttpsのみとなるので、ポート番号を指定したアクセスの場合、証明書エラーの画面が出てしまうのも気になるところです。
気になっている部分を改善する設置方法
Webサーバとして利用しているApacheの前にリバースプロキシとしてnginxを配置します。
nginxをリバースプロキシにして、URLにより9443ポートに振り分けます。
こうすることで、9443を開放することなく管理サイトへ接続ができます。
リバースプロキシを設置することになるため、通常のWebサイトに対してもnginxとApacheの設定が必要になるので、お手軽ではありませんが、nginxのおかげで速度向上も見込めますので良いことは多いと思います。
コードとしては以下のような感じになります。(抜粋です。ciphersとかtlsのバージョン設定は省いています。)
upstream siteguard {
server 127.0.0.1:9443;
}
server {
listen 443 ssl;
server_name SUBDOMAIN.example.com;
#certificate
ssl_certificate /etc/letsencrypt/live/DOMAIN/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/DOMAIN/privkey.pem;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://siteguard;
proxy_redirect off;
}
}
IP制限やベーシック認証は実施しておきましょう。
ワイルドカードのSSLを利用しているのであれば、サブドメインを作るのも手軽です。
一方でワイルドカードのSSLを使ってない場合は、ディレクトリを切った方が手軽です。
ポートを開放することなく、そしてSSLの証明書エラー画面が出ることもなく使うことが出来るようになりました。
SiteGuard Server Editionは年額10万以上もするものなので、無料で使えるさくらVPSは本当におすすめです。