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

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

この章では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つのファイルに書き出します。サイトが生きていることも忘れず確かめます。

ヒント

  • 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/ が返ることを確かめる

10 項目で採点します