サーバーを守る「最後の砦」:踏み台サーバーを泥棒から守るための防犯術
こんにちは。セキュリティの世界へようこそ。
新人のIT担当者や開発者のみなさん、サーバーを守ると聞くと「複雑なファイアウォール」や「暗号のようなコマンド」を想像して身構えてしまいませんか?
実は、サーバーのセキュリティも、私たちの「家」を守る防犯と同じなんです。今日は、管理者がサーバーにログインするための「踏み台サーバー(Bastion Host)」を例に、泥棒の視点からどう守るべきか、一緒に紐解いていきましょう。
—
踏み台サーバーは「家の玄関」と同じ
みなさんの家には、外から誰でも入れる「勝手口」はついていませんよね?
パブリックサブネット(インターネットから直接アクセスできるエリア)にサーバーをたくさん置いてしまうのは、家中の窓を全開にして、誰でも入れる状態にしているのと同じです。
そこで登場するのが「踏み台サーバー」です。
これは、「家に入るためには、必ずこの頑丈な玄関(踏み台)を通らなければならない」という仕組みを作るためのものです。でも、玄関の鍵が壊れていたり、そもそも玄関に誰でも入れる状態だったら意味がありませんよね。
—
1. 「玄関」の場所を隠す(パブリックサブネットの最小化)
まず大切なのは、「玄関はここですよ」と泥棒に教えないことです。
本来、サーバーはインターネットから見えない「プライベートサブネット」に置くべきです。どうしても必要なサーバー以外は、インターネットの荒波から隔離してしまいましょう。
そして、踏み台サーバーへの入り口(ポート)も、世界中からアクセスできるようにしてはいけません。特定の場所(あなたのオフィスや自宅のIPアドレス)からしか鍵穴が見えないように、「IP制限(セキュリティグループ)」をかけるのが鉄則です。
—
2. 踏み台サーバーを「要塞」にする
玄関となる踏み台サーバー自体を、泥棒が侵入できない「金庫」のように強化(ハーデニング)します。
不要なサービスを停止する
泥棒は、家の隙間を探します。使っていない窓(不要なポートやサービス)は、全部板で打ち付けてしまいましょう。
# 稼働中のサービスを確認するコマンド
systemctl list-units --type=service --state=running
# 不要なサービス(例: avahi-daemonなど)を停止・無効化する
sudo systemctl stop avahi-daemon
sudo systemctl disable avahi-daemon
SSH接続のセキュリティを高める
SSH(サーバーにログインする通信)の鍵は、物理的な鍵と同じです。パスワードだけでログインするのは「玄関に誰でも見つかる場所に合鍵を置いている」のと同じくらい危険です。
/etc/ssh/sshd_config を編集して、泥棒を追い払う設定をしましょう。
# パスワードでのログインを禁止(鍵認証のみにする)
PasswordAuthentication no
# rootユーザーでの直接ログインを禁止(泥棒が一番狙うアカウント)
PermitRootLogin no
# 接続時間を制限(セッションが切れたら自動で鍵をかける)
ClientAliveInterval 300
ClientAliveCountMax 0
設定を変更したら、必ず sudo systemctl restart sshd で反映させるのを忘れないでくださいね。
—
3. ログで「誰が来たか」を記録する
防犯カメラと同じで、誰がいつ入ってきたかを記録するのは非常に重要です。
Linuxでは /var/log/secure や /var/log/auth.log にログイン記録が残ります。ただ、これを見るだけでは大変なので、可能であれば「AWS CloudWatch Logs」のような外部サービスにログを転送し、異変があればすぐに通知が来るように設定しておきましょう。
—
今日からできる「一歩」のまとめ
セキュリティは一度やって終わりではありません。以下の3つを今日から意識してみてください。
1. パブリックサブネットを減らす: 必要なサーバー以外は、インターネットから切り離す。
2. 鍵を厳重にする: SSH鍵認証を必須にし、パスワード認証は捨てる。
3. 隙間を埋める: 使っていないサービスやポートは、迷わず停止する。
「少し面倒だな」と感じるかもしれませんが、それが最強の防犯です。
最初は小さなことからで大丈夫。一歩ずつ、強固なインフラを一緒に作っていきましょう!
もし設定で迷ったり、怖いなと感じたりしたときは、いつでも相談してくださいね。セキュリティは、知れば知るほど面白くなる世界ですよ。
コメント