コース一覧
サーバー運用実践:セキュリティ・監視・デプロイ
障害対応演習

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

構築済みの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. プロセスは動いているか — systemctl status nginx
  2. 動いていないなら、なぜ動けないのか — journalctl -u nginx -n 30、nginx -t
  3. 動いているなら、どう応答しているか — curl -skI https://localhost/
  4. 応答がおかしいなら、なぜそう応答したのか — エラーログの末尾

この順に進めると、無関係な場所を触らずに済みます。逆から始めると、直っていないのに直したつもりになります。

ステータスコードが行き先を教えてくれる

返ってきた数字で、次に見る場所が決まります。

  • 繋がらない — プロセスが動いていないか、待ち受けていない番号。ss -tlnp を見る
  • 403 — ファイルはあるが読めない。権限を見る
  • 404 — 探した場所にファイルが無い。root や alias の指す先を見る
  • 500 番台 — nginx より奥で失敗している。エラーログを見る

エラーログの絶対パスがいちばん効きます。nginx が実際にどこを見に行ったかが書かれているので、設定の読み違いが一目で分かります。

直したら、直ったことを確かめる

1つ直すたびに curl を打ち直します。まとめて直すと、何が効いたのか分からなくなります。

そして、壊れている箇所は1つとは限りません。1つ直して 403 が 404 に変わったなら、それは前進です。次の原因が見えたということです。

記録を残す

復旧したら、何が起きて何をしたかを書き残します。

プレーンテキスト

1. nginx が起動していなかった。設定から秘密鍵の行が消えていたので書き戻した
2. トップページが 403 だった。index.html の権限が 000 だったので 644 に戻した

同じことは必ずまた起きます。そのとき自分を助けるのは、記憶ではなくこの記録です。

手を動かす

壊れたサーバーを調べて、HTTPS で元どおり見られる状態まで戻します。原因と対処を記録に残してください。

ヒント

外側から内側へ。プロセス、起動できたか、応答、応答の理由の順に絞り込みます

403 は権限、404 は指す先、繋がらないのはプロセスか待ち受けです

  • 1. systemctl status nginx で、まず動いているかを見る
  • 2. 動いていなければ journalctl -u nginx -n 30 と nginx -t で理由を読む
  • 3. 動くようになったら curl -skI https://localhost/ で応答を見る
  • 4. 返ってきたステータスコードに応じて、権限か設定の指す先を調べる
  • 5. /works/ も忘れずに確かめる
  • 6. 直した内容を /root/incident-report.txt に1行ずつ書き残す

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

10 項目で採点します