はじめてのさくら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を利用する方でもわかるように、当サイトでは基本的な設定等を解説していきます。

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時点)

iPhoneのSafariで接続できない

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

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

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

https://otya.me/tech/network/ct-aviator-shutdown/

[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.

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

準備中

KUSANAGIのプロビジョニング

KUSANAGIのプロビジョニング

ドメインの設定、ディレクトリの設定は「kusanagi provisionコマンド」で行います。

  • プロファイル名:hogehoge
  • 言語:ja
  • ホスト名:hoge.com
  • メールアドレス:info@hoge.com
  • データベース名:wp_db
  • DBユーザー名:db_user
[root@kusanagi71 ~]# kusanagi provision hogehoge
ターゲットディレクトリは /home/kusanagi/hogehoge に変更されました。
WordPress のインストールで使用する言語を選択してください。
1 : en_US
2 : ja

q : 終了

どれを使用しますか?:  2

ja を選択しました

Webサイトで使用するホスト名(FQDN)を入力してください。 例) kusanagi.tokyo
hoge.com
Webサイトで使用するホスト名(FQDN)をもう一度入力してください。
hoge.com

Let's Encryptを使用される場合、Let's Encrypt の使用規約に同意される必要があります。
使用規約に同意される場合、あなたのメールアドレスを入力してください。同意されない場合、Enterキーを二回押してください。
使用規約は次のURLより確認できます: https://letsencrypt.org/repository/
info@hoge.com
メールアドレスを再入力してください。
info@hoge.com

データベース名を入力してください。
wp_db
データベース名を再度入力してください。
wp_db

wp_db のユーザー名を入力してください。
db_user
wp_db のユーザー名を再度入力してください。
db_user

データベースユーザ'db_user'のパスワードを入力してください。[a-zA-Z0-9.!#%+_-]の文字列が使用できます。最小は8文字以上です。
再度 'db_user' のパスワードを入力してください。 --2016-11-18 22:07:48-- https://ja.wordpress.org/latest-ja.tar.gz ja.wordpress.org (ja.wordpress.org) をDNSに問いあわせています... 66.155.40.249, 66.155.40.250 ja.wordpress.org (ja.wordpress.org)|66.155.40.249|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 8402893 (8.0M) [application/octet-stream] `wordpress.tar.gz' に保存中 100%[======================================>] 8,402,893 313KB/s 時間 37s 2016-11-18 22:08:26 (222 KB/s) - `wordpress.tar.gz' へ保存完了 [8402893/8402893] Saving debug log to /var/log/letsencrypt/letsencrypt.log Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Obtaining a new certificate Performing the following challenges: http-01 challenge for hoge.com Using the webroot path /home/kusanagi/hoge/DocumentRoot for all unmatched domains. Waiting for verification... Cleaning up challenges Failed authorization procedure. hoge.com (http-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: DNS problem: NXDOMAIN looking up A for hoge.com IMPORTANT NOTES: - If you lose your account credentials, you can recover through e-mails sent to info@hoge.com. - The following errors were reported by the server: Domain: hoge.com Type: connection Detail: DNS problem: NXDOMAIN looking up A for hoge.com To fix these errors, please make sure that your domain name was entered correctly and the DNS A record(s) for that domain contain(s) the right IP address. Additionally, please check that your computer has a publicly routable IP address and that no firewalls are preventing the server from communicating with the client. If you're using the webroot plugin, you should also verify that you are serving files from the webroot path you provided. - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. Cannot get Let\'s Encrypt SSL Certificate files. hoge のプロビジョニングは完了しました。hoge.com にアクセスし、WordPressをインストールしてください! 完了しました。

プロビジョニング完了後は通常通りWordpressのインストールを進めます。

sakuravps.hajimete-guide.com

なお、プラグインなどのインストール時のFTP情報はkusanagiユーザ作成時のパスワードを入力してください。

f:id:photoblg:20161123120048p:plain:w300

sakuravps.hajimete-guide.com