コース一覧
サーバー運用実践:セキュリティ・監視・デプロイ
自由拡張

サーバー運用実践:セキュリティ・監視・デプロイ

構築済みのnginxサーバーを、専用ユーザー・SSH鍵認証・ufwで保護し、HTTPS化、ログとヘルスチェックの監視、systemdタイマー、リリース切替、ロールバック、障害復旧までを実践します。本番を想定した安全な公開・監視・デプロイの基本を身につける30レッスンのコースです。

1
セキュリティのきほん
01. 専用ユーザーで動かす16分
02. SSH鍵認証16分
03. sshdを固める16分
04. ufwファイアウォール16分
05. ポートの棚卸し16分
06. ミッション サーバーを固める16分
07. 第4章クイズ12分
2
HTTPS
01. HTTPSとTLSのしくみ16分
02. 自己署名証明書を作る16分
03. nginxにHTTPSを設定16分
04. HTTPからのリダイレクト16分
05. ミッション HTTPS化完了16分
06. 第5章クイズ12分
3
運用と監視
01. tmuxで多重端末16分
02. ログローテーション16分
03. エラーログ監視16分
04. ヘルスチェック16分
05. systemdタイマー16分
06. ミッション 監視の自動化16分
07. 第6章クイズ12分
4
デプロイ
01. デプロイの型16分
02. シンボリックリンク16分
03. deploy.sh v216分
04. ロールバック16分
05. ミッション ワンコマンドデプロイ16分
06. 第7章クイズ12分
5
総合制作
01. ゼロから構築ミッション16分
02. 障害対応演習16分
03. 自由拡張16分
04. 完成と次のステップ16分

自由拡張

本番の隣に、確認用の場所を作る

ここまでで、公開するサーバーは一通り動くようになりました。最後に足すのは、公開する前に確かめる場所です。

本番と同じ作りの場所をもう1つ用意して、そこで先に見てから本番へ出す。これをステージングと呼びます。作りが同じでないと確認の意味が無いので、同じ nginx の上に、別のポートで、別の置き場として作ります。

ただし、確認用の場所が誰にでも見えていては困ります。出す前の内容が外から読めてしまうからです。鍵をかけます。

いちばん簡単な鍵 — Basic 認証

nginx が自分で持っている仕組みで、名前とパスワードを聞く方式です。ログイン画面を作る必要はなく、設定2行で有効になります。

nginx

auth_basic "staging";
auth_basic_user_file /etc/nginx/.htpasswd;

auth_basic に書いた文字は、パスワードを聞かれるときに表示される名前です。auth_basic_user_file は、誰が入れるかを書いたファイルの場所です。

設定を書いていない場所は今までどおり誰でも見られます。かけたい場所にだけかけるのがこの仕組みの良いところです。

パスワードは平文で置かない

利用者ファイルの中身は、こういう1行です。

プレーンテキスト

akari:$apr1$xxxxxxxx$yyyyyyyyyyyyyyyyyyyyy.

名前のあとに続くのは、パスワードそのものではなくハッシュです。5章の鍵と同じ考え方で、元に戻せない形に変換してから置きます。ファイルが漏れてもパスワードそのものは分かりません。

ハッシュは openssl で作れます。

ターミナル

openssl passwd -apr1 himitsu2026

-apr1 は nginx が読める形式を指定するものです。出てきた文字列を、名前とコロンでつないでファイルに書きます。

ターミナル

echo "akari:$(openssl passwd -apr1 himitsu2026)" > /etc/nginx/.htpasswd

置いたファイル自体も守る

ハッシュとはいえ、誰でも読める場所に置く必要はありません。読めるのは nginx だけで十分です。

ターミナル

chown root:www-data /etc/nginx/.htpasswd
chmod 640 /etc/nginx/.htpasswd

640 は、持ち主は読み書き、グループは読むだけ、その他は何もできない、という指定です。4章の秘密鍵で 600 にしたのと同じ考え方で、読める人を必要な範囲まで狭めるわけです。

別のポートで待たせる

本番と同じ 443 番では区別が付かないので、ステージングは別の番号にします。ここでは 8443 番を使います。

nginx

listen 8443 ssl;

番号を変えたら ufw で通すのを忘れないでください。3章でやったとおり、待ち受けているだけでは外から届きません。設定を書いた、待っている、通れる。この3つが揃って初めて繋がります。

手を動かす

ステージング環境を 8443 番に作り、Basic 認証で鍵をかけます。本番のほうは今までどおり鍵なしで見られる状態を保ってください。

ヒント

auth_basic は書いた場所にだけ効きます。本番のブロックには書かないでください

設定を書いた、待っている、ufw で通れる。この3つが揃って繋がります

  • 1. /var/www/mysite-staging/index.html を作る
  • 2. openssl passwd -apr1 himitsu2026 でハッシュを作り、akari: とつないで /etc/nginx/.htpasswd に書く
  • 3. chown root:www-data と chmod 640 でファイルを守る
  • 4. staging.conf を書く。listen 8443 ssl、auth_basic、auth_basic_user_file の3つを入れる
  • 5. sites-enabled へリンクを張り、nginx -t のあと reload する
  • 6. ufw allow 8443/tcp で通す
  • 7. 名前なしで 401、akari で 200 が返ることを curl で確かめる

Linux は使うときに起動します(初回は約102MB通信します)

14 項目で採点します