コース一覧
サーバー運用実践:セキュリティ・監視・デプロイ
ポートの棚卸し

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

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

ポートの棚卸し

開いている口を、自分で数えられるようにする

ファイアウォールで通す番号を決めました。ここで一度、逆側から見ておきます。そもそもこのサーバーは、どの番号で待っているのか。

通す設定と、待っているプログラム。この2つは別のものです。ufw で 80 番を通していても、そこで待つプログラムが居なければ何も起きません。逆に、通していない番号で待っているプログラムがあるなら、それは外からは届かないだけで、中には残っています。両方を突き合わせて初めて、いまの状態が分かります。

待ち受けを一覧する

ターミナル

ss -tlnp

4つの指定を並べています。-t は TCP、-l は待ち受けているものだけ、-n は番号を名前に変えずそのまま出す、-p はどのプログラムかを添える、という意味です。

プレーンテキスト

State   Local Address:Port   Peer Address:Port  Process
LISTEN  0.0.0.0:80           0.0.0.0:*          users:(("nginx",pid=412,fd=6))
LISTEN  0.0.0.0:22           0.0.0.0:*          users:(("sshd",pid=380,fd=3))

-n を付けないと 80 が http、22 が ssh と表示されます。読みやすいようでいて、実際の番号を見失うので、点検のときは番号のまま見るほうが確実です。

アドレスの部分がいちばん大事

ポート番号の左側を見てください。ここが 0.0.0.0 なら、どのネットワークからの接続も受け付けるという意味です。127.0.0.1 なら、そのサーバー自身からの接続しか受け付けません。

同じ 3306 番で待っていても、0.0.0.0:3306 と 127.0.0.1:3306 では危険度がまったく違います。前者は世界中から届き、後者はサーバーの外からは触れません。データベースのように、そのサーバーの中からだけ使うものは、後者にしておくのが基本です。

ポート番号だけを見て安心しない。左側まで読む。これが点検の勘どころです。

プログラムの名前から、サービスへ戻る

-p で出たプログラム名が分かれば、2章でやったようにサービスの側から素性を辿れます。

ターミナル

systemctl status nginx

見覚えのない名前が出てきたときは、止めていいものかどうかをここで確かめます。使っていないと分かったら、systemctl disable --now で止めて自動起動も切ります。待ち受けを減らすこと自体が、いちばん確実な守りです。ファイアウォールで塞ぐより、そもそも開かないほうが強いという考え方です。

通す設定と突き合わせる

ターミナル

ss -tlnp > /root/listening.txt
ufw status numbered

2つを並べて、次の2種類を探します。

  • 待っているのに通していない番号 — 外から使えない。使う予定なら通す必要がある
  • 通しているのに待っていない番号 — 通す意味が無い。消して構わない

どちらも設定ミスの入口です。定期的に見る習慣を付けると、いつの間にか増えた待ち受けに気づけます。

手を動かす

いまのサーバーの待ち受けを一覧して保存し、番号とアドレスとプログラムを自分の言葉で対応づけます。

ヒント

ss -tlnp の 4 つの指定は、TCP / 待ち受けのみ / 番号のまま / プログラム名を添える、です

ポート番号の左側が 0.0.0.0 か 127.0.0.1 かで、届く範囲がまったく変わります

  • 1. ss -tlnp > /root/listening.txt で待ち受けを保存する
  • 2. 保存した内容を読み、どの番号でどのプログラムが待っているかを確かめる
  • 3. /root/port-map.txt に「番号 プログラム名」の形で1行ずつ書く
  • 4. 80 番と 22 番の行を必ず入れる
  • 5. アドレスの部分が 0.0.0.0 か 127.0.0.1 かも見ておく

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

6 項目で採点します