サーバーの「玄関」を守る:SSHを鉄壁の要塞にするための第一歩
こんにちは。セキュリティの世界へようこそ。
初めてサーバーを立ち上げるとき、ワクワクしますよね。でも、そのサーバーをインターネットに公開した瞬間、世界中の「泥棒」たちがあなたの玄関をノックし始めます。
今回は、サーバーを守るための基本中の基本、「SSH(Secure Shell)」の守りを固める方法についてお話しします。難しく考えず、家の防犯に例えて一歩ずつ見ていきましょう。
—
1. なぜ「パスワード」だけではダメなのか?
皆さんが普段サーバーにログインするとき、パスワードを入力していますよね。
でも、インターネット上の攻撃者にとって、パスワードとは「何度でも試せる鍵」のようなものです。
彼らは「ブルートフォース攻撃(総当たり攻撃)」という手法を使います。これは、辞書に載っている単語や、よく使われるパスワードのリストを、機械を使って1秒間に何百回も試す行為です。あなたのパスワードがどれだけ長くても、計算機にとっては「数打ちゃ当たる」の世界。
「パスワード認証」を許可しているということは、玄関の鍵を「誰かが正しい鍵を見つけるまで、いくらでもガチャガチャ開け閉めしていいよ」と放置しているのと同じ状態なのです。
—
2. 鉄壁の防犯対策:公開鍵認証と設定の変更
私たちが目指すのは、「パスワードという脆い鍵を捨て、本人しか持っていない特別な電子証明書(公開鍵)でしか開けられないようにする」という状態です。
以下の手順で、サーバーの防犯性能を一気に引き上げましょう。
手順:/etc/ssh/sshd_config を書き換える
まずは、設定ファイルを開きます。このファイルがサーバーの「防犯ルールブック」です。
# 設定ファイルを開く(sudo権限が必要です)
sudo nano /etc/ssh/sshd_config
ここで、以下の3つのポイントを確実に修正してください。
① ルートログインを禁止する (PermitRootLogin no)
root とは、サーバーの「管理人」権限のことです。泥棒はまず「管理人がログインしているはずだ」と狙いを定めます。そもそも「管理人です」と名乗るアカウントでのログインを拒否してしまえば、攻撃者の狙いは大きく外れます。
# 管理人アカウント(root)での直接ログインを禁止する
PermitRootLogin no
② パスワード認証を無効化する (PasswordAuthentication no)
これが一番重要です。パスワード自体を「無効」にすることで、どんなに複雑なパスワードを知っていても、それだけではログインできないようにします。
# パスワードによるログインを禁止する
PasswordAuthentication no
③ 公開鍵認証を有効にする (PubkeyAuthentication yes)
パスワードの代わりに、「鍵ペア」を使います。あなたのPCの中に「秘密の鍵」を隠し持ち、サーバーには「この鍵の持ち主だけが通れるよ」という「公開鍵」を預けておく仕組みです。
# 公開鍵認証を有効にする
PubkeyAuthentication yes
—
3. 設定を反映する前の「最後の確認」
設定が終わったら、すぐにサーバーからログアウトしてはいけません!もし設定を間違えていたら、二度とログインできなくなってしまいます。
必ず、「別のターミナルを開いて、ログインできることを確認してから」、設定を反映させましょう。
# 設定ファイルに間違いがないかチェック
sudo sshd -t
# 問題なければ、サービスを再起動して設定を読み込ませる
sudo systemctl restart sshd
—
防犯の心得:終わりなき道
今回ご紹介した設定を行うだけで、世界中のボットによる攻撃の99%は無力化できます。なぜなら、彼らは「パスワードを試す」という効率的な方法を好むからです。
「面倒だな」と感じるかもしれません。でも、セキュリティとは「泥棒が『この家は面倒くさいから隣の家にしよう』と思うような環境を作ること」です。
今日からあなたも、自分のサーバーを守るプロフェッショナルです。まずはこの設定から、安全なインフラ生活を始めてみてくださいね。何か不安なことがあれば、いつでもまた聞きに来てください。一歩ずつ、強くなっていきましょう!
コメント