はじめてのさくらVPS

はじめてのさくらVPS

はじめてさくらインターネットのVPSを使用する際に必要となる情報を初心者でもわかりやすくまとめていきます。

さくらのVPSについて

さくらのVPSは、ホスティングサーバの提供を行っている国内最大手の老舗会社「さくらインターネット株式会社(SAKURA Internet Inc.)」のVPSのサービス。

専用サーバーの自由度とクラウドの拡張性を合わせもつ「複数台対応」仮想専用サーバーサービスで月額685円(税込)から。

さくらのVPSの特長

複数台対応のコントロールパネル

コントロールパネルからはユーザー自身で、サーバーの起動・停止・再起動が行なえる。

他にもOSのインストールやトラフィック状況やディスクI/0の確認も行え、まず最初にチェックする画面である。

さくらのVPSでは2016年8月現在、契約時に東京と石狩(北海道)の2つのリージョン(サーバー設置場所)を選ぶことができ、同一リージョンを複数台借りた場合にローカル接続も可能。

f:id:photoblg:20160825124954p:plain

画像引用:VPSコントロールパネル|VPS(仮想専用サーバー)はさくらインターネット

ローカルネットワーク

さくらのVPSでは、台数無制限で複数台のサーバー間を接続できるローカルネットワークが使用可能。外部ネットワークを介さず接続できるため、安全で速度の速い通信を実現。

下図のようにベアメタルサーバー(物理サーバー)との接続も可能なのもうれしい。

f:id:photoblg:20160825132655p:plain

画像引用:ローカルネットワーク|VPS(仮想専用サーバー)はさくらインターネット

安心のサポート体制

さくらのVPSでは、専門の技術者が24時間365日サーバー状況を監視。

サーバーはすべて国内のデータセンターに収容。データ保全を冗長化構成のRAIDにて行い、万が一の障害発生時にも速やかに対処されるようです。

当サイトの歩き方

当サイト「はじめてのさくらVPS」は、さくらのVPSを検討〜契約〜設定をする方を想定して構成しています。

そのため以下の順番で見ていただけるとわかりやすいです。

まとめ

上記のような業務でも使えるサーバー構成が、個人でも安価で使えるのがさくらのVPSです。

自由度が高い分ある程度の知識も必要となりますのが、はじめてVPSを利用する方でもわかるように、当サイトでは基本的な設定等を解説していきます。

kusanagiのSSLが更新されない!?手動更新の方法

kusanagiを利用していると手軽にSSLが実装でき便利ですよね。

Let’s Encryptは無料で導入可能なため敷居が低い反面、有効期限が短いので更新に手間があります。自動更新の設定をしていたのですがいつまで経っても更新されないため手動で更新してみました。

有効期限が近いとメールで通知

有効期限の19日前、9日前と以下の内容で通知がきます。(XXXX.comの部分は設定してあるドメイン)

件名「Let's Encrypt certificate expiration notice for domain "XXXXX.com"」

Hello,

Your certificate (or certificates) for the names listed below will expire in
19 days (on XX XXX XX 17:07 +0000). Please make sure to renew
your certificate before then, or visitors to your website will encounter errors.

XXXXX.com

For any questions or support, please visit https://community.letsencrypt.org/. Unfortunately, we can't provide support by email.

For details about when we send these emails, please visit
https://letsencrypt.org/docs/expiration-emails/. In particular, note
that this reminder email is still sent if you've obtained a slightly
different certificate by adding or removing names. If you've replaced
this certificate with a newer one that covers more or fewer names than
the list above, you may be able to ignore this message.

If you want to stop receiving all email from this address, click
http://mandrillapp.com/track/unsub.php?XXXXXXXXXXXXXXXX
(Warning: this is a one-click action that cannot be undone)

Regards,
The Let's Encrypt Team

更新

反映にはウェブサーバーを一度停止しないと更新できないという情報を見かけていたのですが、コマンドのみで更新可能でした。updateコマンドとあわせて再起動しているのだと思われます。

[root@XXX kusanagi]# kusanagi update cert hogehoge

※複数プロファイルを設定している場合、hogehoge部分で指定します。

コマンド実行後、リロードして確認してみると無事更新されていました。

f:id:photoblg:20171016225333j:plain

Google ChromeでのSSL期限確認方法

開発者ツールを開きます。(Windows F12、Mac command+option+ i)

[Security]-[View certificate]で有効期限が表示されます。

f:id:photoblg:20171016225108j:plain

最後に

自動更新設定がそのまま更新をしてくれると一番良いのですけどね・・・。

とりあえず更新されて安心しました。

kusanagiでSSL初回導入時はこちら。

sakuravps.hajimete-guide.com

SiteGuard WAF(ウェブアプリケー ションファイアウォール)を利用するには

2017年2月WordPressの深刻な脆弱性により、ウェブサイトの改ざんなど世界中で被害が広まったのは記憶に新しい。

さくらのVPSではWebアプリケーションファイアウォール(WAF)SiteGuard Liteが用意されていますので是非使用したいところです。

SiteGuard Liteとは

ジェイピー・セキュアが提供する「SiteGuard」シリーズは、”ユーザビリティ・高い防御性能・高品質なサポート”を特長とする、国内利用サイト数No.1(※)の純国産ソフトウェア型WAF製品です。

引用:製品・サービス – 株式会社ジェイピー・セキュア

SiteGuard Liteはウェブサーバーのモジュールとして動作するソフトウェアファイアウォールです。

対応する主な脅威

  • SQLインジェクション
  • クロスサイトスクリプティング
  • ディレクトリトラバーサル
  • OSコマンドインジェクション
  • HTTPヘッダインジェクション
  • ブルートフォース(ログインアタック等)
  • Apache Killer
  • hasdos
  • ShellShock 等

防御機能

  • トラステッド・シグネチャ検査(ブラックリスト、自動更新・手動更新)
  • カスタム・シグネチャ検査(ブラックリスト、ホワイトリスト、頻度判定)
  • Cookie保護(シグネチャ検査)
  • URLデコードエラー検出
  • パラメータ数制限

引用:ホスト型WAF「SiteGuard Lite」 – 株式会社ジェイピー・セキュア

SiteGuard Liteの料金

さくらのVPSでは追加料金なしで利用できます。これだけの脅威に対応しているのは助かりますね。

SiteGuard Liteの導入方法

既にさくらのVPSを利用している場合は、OSを再インストールをする必要があります。

f:id:photoblg:20170307225309p:plain

再インストールはこちらを参考にしてみてください。

sakuravps.hajimete-guide.com

Kusanagiとは同時に使えないため、動作確認はしていませんが早めに導入したいです。

導入後の初期設定は以下のページを参考にしてみてください。

knowledge.sakura.ad.jp

KUSANAGIのSSLの設定

サーバー証明書はドメイン同様年間で更新費用がかかるので個人ユーザーには縁遠いものでした。

一からサーバー証明書を設定するのはなかなか難儀ですが、常時SSLの需要が高まりリーズナブルなSSLも登場しています。

このページではkusanagiで用意したWordPressにSSL(サーバー証明書)を設定する手順をまとめます。

ここではLet's Encrypt(無料)のサーバー証明書を使っていますので費用はかかりませんのでご安心を。

あらかじめ、プロビジョニング・WordPressをインストールしておきます。

sakuravps.hajimete-guide.com

SSLの設定

SSLの設定は「kusanagi ssl コマンド」で行います。

  • メールアドレス:hoge@example.com
  • プロファイル名:hogehoge
  • ドメイン:blog.example.com
[root@kusanagi71 kusanagi]# kusanagi ssl --email hoge@example.com hogehoge
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Cert not yet due for renewal
Keeping the existing certificate

-------------------------------------------------------------------------------
Certificate not yet due for renewal; no action taken.
-------------------------------------------------------------------------------
証明書の自動更新は既に無効です。何もしません。
unexpected status 403 Forbidden from log server:

{
  "error_message": "This log is frozen, no further entries may be added.",
  "success": false,
  "i": "   __      ",
  "c": "-=(o '-    ",
  "e": "   `.-.\\   ",
  "p": "   /|  \\\\  ",
  "a": "   '|  ||  ",
  "l": "    _\\_):,_"
}
Cannot execute ct-submit ct.googleapis.com/aviator < /etc/letsencrypt/live/blog.example.com/fullchain.pem
CTを有効化します。
nginx/httpd の設定を変更し、再起動しました。
完了しました。

httpsのポート(443)が開放されていない場合はiptablesで適宜開放するようにします。

sakuravps.hajimete-guide.com

正しく動作している場合はURLの入力ボックスに「保護された通信」と表示されます。

f:id:photoblg:20170221233405p:plain

場合によっては「!」のままになる場合も。

f:id:photoblg:20170221233233p:plain

HTTPとHTTPSのコンテンツが混在している場合、セキュアな通信が行えないため「保護された通信」と表示されません。

これを回避するためにはエラーになっているコンテンツの読み込みをhttpsにするかどちらにも対応できる記述に変更する必要があります。

Firefoxでは認証局にLet's Encryptが使われているのが確認できます。

f:id:photoblg:20170221235737p:plain

httpsのリダイレクト設定

https以外でアクセスがあった際、httpsにリダイレクトする設定も用意されています。

[root@kusanagi71 kusanagi]# kusanagi ssl --https redirect hogehoge
mvno.hikaku-db.com 上のすべてのトラフィックを永久的にHTTPSにリダイレクトするよう設定します。
nginx/httpd の設定を変更し、再起動しました。
完了しました。

サーバー証明書の自動更新

Let's Encryptのサーバー証明書の有効期限は90日と有料のサーバー証明書と比べると短いです。

都度更新するのは手間がかかるので自動更新の設定をしておきます。

[root@kusanagi71 kusanagi]# kusanagi ssl –auto on hogehoge
証明書の自動更新は既に無効です。何もしません。

「証明書の自動更新は既に無効です」と日本語がおかしいのですが翻訳の問題のようです。設定は問題ないとのこと(2017/2/22時点)

サーバー証明書有効期限19日前に以下の件名のメールが届きます。

Let's Encrypt certificate expiration notice for domain "ドメイン名"

本文は以下の通り。

Hello,

Your certificate (or certificates) for the names listed below will expire in
19 days (on 20 Oct 17 17:07 +0000). Please make sure to renew
your certificate before then, or visitors to your website will encounter errors.

"ドメイン名"

For any questions or support, please visit https://community.letsencrypt.org/. Unfortunately, we can't provide support by email.

For details about when we send these emails, please visit
https://letsencrypt.org/docs/expiration-emails/. In particular, note
that this reminder email is still sent if you've obtained a slightly
different certificate by adding or removing names. If you've replaced
this certificate with a newer one that covers more or fewer names than
the list above, you may be able to ignore this message.

If you want to stop receiving all email from this address, click
http://mandrillapp.com/track/unsub.php?(パラメーター)
(Warning: this is a one-click action that cannot be undone)

Regards,
The Let's Encrypt Team

念の為ブラウザからも確認したところ、間違いないようです。このメールはLet's Encrypt Teamから自動送信されているリマインダーのようなので不要な場合は本文のリンクから停止することはできます。

f:id:photoblg:20171001121915p:plain

iPhoneのSafariで接続できない

SSL適用後、iPhone(iOS10.2)のSafariで表示できない状態でした。

f:id:photoblg:20170223221219p:plain:w250

原因を調べていたところ以下の記事を見つけ、kusanagi ssl --ct offコマンドでオフにすることで表示できました。

[root@kusanagi71 nginx]# kusanagi ssl --ct off hogehoge

SSL Labsでチェック

Qualys SSL Labs社が提供している、SSL Server Testで脆弱性のチェックをしてみたところ問題なさそうな結果となりました。

f:id:photoblg:20170223221830p:plain

設置後は是非チェックしてみてください。

www.ssllabs.com

最後に

以上でKUSANAGIのSSL設定は完了です。KUSANAGI Version 8.0.1-2では特に設定無しでHTTP/2にも対応されるので何ともお手軽なものです。

バックアップ

さくらのVPSにはバックアップ機能はありませんので、データのバックアップを行う場合は自前で用意する必要があります。

MySQLなどデータベースを利用の場合はレプリケーションを行うことで冗長化させることが出来ますが、別途サーバーを用意するなど初期導入コストがかかります。

ここでは簡易バックアップとしてdropboxに定期バックアップをする手順を説明します。

アカウントの準備

まずdropboxのアカウントを用意します。

アカウントを持っていない方はココから作成してください。(無料です)

アプリの作成

API Consoleよりアプリの作成をしてAccess tokenを取得します。

https://www.dropbox.com/developers/apps へアクセスして「Create app」

f:id:photoblg:20170218002904j:plain

  • Choose an API → Dropbox API
  • Choose the type of access you need → App folder
  • Name your app → 名前をつける

I agree to Dropbox API Terms and Conditionsにチェックを入れて「Create app」をクリック

f:id:photoblg:20170218003001j:plain

【Settings】の【Generated access token】のGenerateボタンをクリック

f:id:photoblg:20170218004107j:plain

生成されたaccess tokenを後ほど使うので控えておきます。

f:id:photoblg:20170218004222j:plain

スクリプトの設置

ファイルのアップロードはDropbox-Uploaderを使用します。

github.com

まずファイルのダウンロードをします。

[root@kusanagi71 ~]# curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 45660 100 45660 0 0 55165 0 --:--:-- --:--:-- --:--:-- 55144

パーミッションの設定

[root@kusanagi71 ~]# chmod +x dropbox_uploader.sh

スクリプトを実行して先ほど控えておいたAccess Tokenを入力

[root@kusanagi71 ~]# ./dropbox_uploader.sh

This is the first time you run this script, please follow the instructions:

1) Open the following URL in your Browser, and log in using your account: https://www.dropbox.com/developers/apps 2) Click on "Create App", then select "Dropbox API app" 3) Now go on with the configuration, choosing the app permissions and access restrictions to your DropBox folder 4) Enter the "App Name" that you prefer (e.g. MyUploader321292434714039) Now, click on the "Create App" button. When your new App is successfully created, please click on the Generate button under the 'Generated access token' section, then copy and paste the new access token here: # Access token: (入力)
The access token is (入力したAccess Token). Looks ok? [y/N]: y The configuration has been saved.

Dropbox-Uploaderの使い方

./dropbox_uploader.sh (パラメーター) (コマンド) (ファイル・ディレクトリ)

上記が基本的な使い方でコマンド部分をupload、deleteなどに変更してバックアップに使っていきます。

コマンド例

./dropbox_uploader.sh upload /etc/passwd /myfiles/passwd.old
./dropbox_uploader.sh upload *.zip /
./dropbox_uploader.sh download /backup.zip
./dropbox_uploader.sh delete /backup.zip
./dropbox_uploader.sh mkdir /myDir/
./dropbox_uploader.sh upload “My File.txt” “My File 2.txt”
./dropbox_uploader.sh share “My File.txt”
./dropbox_uploader.sh list

参考:GitHub - andreafabrizi/Dropbox-Uploader: Dropbox Uploader is a BASH script which can be used to upload, download, list or delete files from Dropbox, an online file sharing, synchronization and backup service.

シェルプログラムを作成してバックアップ

準備中