コース一覧
サーバー運用実践:セキュリティ・監視・デプロイ
ミッション HTTPS化完了

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

構築済みの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分

ミッション HTTPS化完了

HTTPS だけで見えるサイトにする

この章の締めくくりです。証明書を作り、443 番で待たせ、80 番から案内する。ここまでできました。最後に、運用で必ず触ることになる2つを足します。古い暗号方式を使わせないことと、期限を自分で把握することです。

古いバージョンを切る

TLS にはバージョンがあります。古いものには既知の弱点があり、いま新しく開くサーバーで受け入れる理由はありません。

nginx

ssl_protocols TLSv1.2 TLSv1.3;

この1行で、受け入れるバージョンをこの2つに限れます。書かないと、nginx の版によっては古いものまで受け入れます。

書く場所は 443 番の server ブロックの中です。複数のサイトを持つなら、http の階層に1度だけ書いて全体に効かせるほうが漏れがありません。3章で log_format を conf.d に置いたのと同じ考え方です。

期限を把握する

証明書は必ず切れます。切れた瞬間、訪問者全員に警告が出ます。正式な証明書でも同じで、運用でいちばん多い事故のひとつです。

ターミナル

openssl x509 -in /etc/ssl/certs/mysite.crt -noout -enddate
# notAfter=Aug  8 12:00:00 2027 GMT

期限が近いかどうかを判定させることもできます。

ターミナル

openssl x509 -in /etc/ssl/certs/mysite.crt -noout -checkend 2592000

-checkend は、指定した秒数のうちに切れるかどうかを調べます。2592000 は 30 日です。切れるなら失敗の扱いになるので、そのままスクリプトの条件に使えます。6 章で .timer を使って定期実行を作りますが、この判定はその題材にちょうど向いています。

通しで確かめる

最後は、訪問者と同じ道筋をたどります。

ターミナル

curl -skIL http://localhost/works/

-I でヘッダーだけ、-L で案内を追いかけるので、80 番の 301 と 443 番の 200 が続けて出ます。この2つが並んで見えれば、案内から配信までが繋がっています。

3章で作った /works/ と自分の 404、専用のアクセスログも、443 番に移したあとで生きているかを確かめます。移設のときに静かに落ちるのは、たいていこういう細かい部分です。

手を動かす

古い TLS を切り、期限を確かめ、80 番から 443 番までの道筋が最後まで通っていることを確かめます。

ヒント

-checkend は、指定した秒数のうちに切れるかどうかを終了コードで返します

移設したあとは、細かい部分こそ1つずつ確かめてください

  • 1. 443 番の server ブロックに ssl_protocols TLSv1.2 TLSv1.3; を足す
  • 2. nginx -t のあと systemctl reload nginx で反映する
  • 3. openssl x509 -noout -enddate の結果を /root/cert-expiry.txt に保存する
  • 4. openssl x509 -noout -checkend 2592000 の判定結果も同じファイルに書き足す
  • 5. curl -skIL http://localhost/works/ > /root/full-path.txt で通しの結果を保存する

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

11 項目で採点します