コース一覧
サーバー運用実践:セキュリティ・監視・デプロイ
ミッション サーバーを固める

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

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

ミッション サーバーを固める

入口の話を、ひとつの状態にまとめる

この章では4つのことをやりました。専用ユーザーを作り、鍵で入れるようにし、緩い入口を締め、通す番号を絞りました。ばらばらに見えますが、狙いはひとつです。入れる人と入れる経路を、必要な分だけに減らす。

最後に、その状態が本当に成立しているかを一気に確かめます。守りの設定は「やったつもり」がいちばん危ないところです。書いたかどうかではなく、効いているかどうかで見ます。

確かめるべき5つ

  1. deploy ユーザーが居て、サイトのディレクトリを持っている
  2. 鍵が登録されていて、権限が正しい
  3. root での直接ログインとパスワード認証が、実際に無効になっている
  4. ufw が有効で、22 番と 80 番だけが通っている
  5. 待ち受けている番号が、通している番号と噛み合っている

3番目に「実際に」と書いたのは、sshd -T で解決後の値を見るという意味です。ファイルに書いた行と、効いている値は別物でした。

点検の結果を1つのファイルに残す

運用では、いまの状態を書き出して残す習慣が効きます。あとで「いつからこうなっていたのか」を追えるからです。

ターミナル

{
  echo '--- sshd ---'
  sshd -T | grep -iE 'permitrootlogin|passwordauthentication'
  echo '--- ufw ---'
  ufw status verbose
  echo '--- listening ---'
  ss -tlnp
} > /root/security-report.txt

{ ... } > ファイル は、中括弧で囲んだ範囲の出力をまとめて1つのファイルに送る書き方です。1行ずつ >> で追記していくより間違えにくく、途中で書き忘れることもありません。Linux 入門で書いた backup.sh でも同じ形が使えます。

締めたあとに、必ずサイトを見る

守りを固めたつもりで、配信を止めてしまうのはよくある失敗です。80 番の許可を入れ忘れる、nginx を止めたまま忘れる、といったところです。

最後は必ず curl でトップページを開いて終わります。3章で作った /works/ と自分の 404 も、ついでに見ておきます。設定を変えたら、利用者から見える形で確かめる。この癖が付いていれば、静かに壊れたまま気づかない事態を避けられます。

手を動かす

この章の4つを揃った状態にして、点検の結果を1つのファイルに書き出します。サイトが生きていることも忘れず確かめます。

ヒント

書いた行ではなく、sshd -T で解決された値のほうを信じてください

守りを固めたら、必ず利用者から見える形で配信を確かめて終わります

  • 1. deploy ユーザーと鍵、authorized_keys の権限を整える
  • 2. sshd_config で PermitRootLogin と PasswordAuthentication を no にして反映する
  • 3. ufw で 22 番と 80 番を通し、既定を deny incoming にして有効にする
  • 4. sshd -T の抜粋、ufw status verbose、ss -tlnp を /root/security-report.txt にまとめる
  • 5. curl でトップページと /works/ が返ることを確かめる

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

10 項目で採点します