導入
新しくサーバーを立ち上げた時、OSをインストールしただけの「素」の状態でインターネットに公開するのは非常に危険です。なぜなら、世界中の攻撃者は常にデフォルト設定のサーバーを探し出し、侵入を試みているからです。
私自身がサーバーを構築する際に必ず行う、最低限これだけはやっておくべきSSHの初期セキュリティ設定を、備忘録も兼ねてご紹介します。この2つの設定を行うだけで、サーバーの安全性は劇的に向上します。
なぜ初期セキュリティ設定が重要なのか?
サーバーへの侵入の多くは、SSH (Secure Shell) という遠隔操作のための通用口から行われます。攻撃者は、このSSHのデフォルト設定(ポート番号22、rootユーザー)を狙って、自動化されたプログラムで執拗に攻撃を仕掛けてきます。
家の玄関の鍵が、ありふれた番号で、しかも大家さん(root)のマスターキーでいつでも開けられる状態だとしたら、不安ですよね?
これから紹介する設定は、この「玄関の場所」と「マスターキーの使用ルール」を変更し、空き巣(攻撃者)から家(サーバー)を守るための、最も基本的で効果的な対策です。
設定1:SSHのポート番号を変更する
SSHは通常、22番ポートを使用します。攻撃者はまずこの22番ポートに対して攻撃を仕掛けてくるため、ポート番号を変更して「玄関の場所」を分かりにくくしてしまいましょう。
手順
1. SSHの設定ファイル /etc/ssh/sshd_config をエディタで開きます。
sudo vi /etc/ssh/sshd_config
2. ファイルの中にある #Port 22 という行を探し、コメントアウト(#)を解除して、任意のポート番号に変更します。(例: 10022番)
# 変更前
#Port 22
# 変更後 (1024〜49151の範囲で、他のサービスと重複しない番号を選ぶのが一般的)
Port 10022
設定2:rootユーザーでの直接ログインを禁止する
rootユーザーはサーバーの全ての操作が可能な最強の権限を持っています。万が一、このユーザーで侵入された場合の被害は甚大です。
そのため、日常的な作業は一般ユーザーで行い、必要な時だけsudo
コマンドを使う運用が推奨されます。SSHでrootとして直接ログインできないように設定を変更しましょう。
手順
- (最重要) 事前に、
sudo
が使える一般ユーザーを必ず作成しておいてください。 - 同じく
/etc/ssh/sshd_config
を開きます。 #PermitRootLogin yes
という行を探し、以下のように変更します。
# 変更前
#PermitRootLogin yes
# 変更後
PermitRootLogin no
設定の反映と接続確認【最重要ステップ】
設定を変更したら、SSHサービスを再起動して反映させます。
1. ファイアウォールで新しいポートを開ける
サービスを再起動する前に、新しいポート(この例では10022番)での通信を許可します。
# firewalldの場合
sudo firewall-cmd --add-port=10022/tcp --permanent
sudo firewall-cmd --reload
2. SSHサービスを再起動する
sudo systemctl restart sshd
3. 【必ず確認!】接続テスト
現在ログインしているターミナルは絶対に閉じずに、別の新しいターミナルを開いて、新しい設定でログインできるか試します。
# -p オプションで新しいポート番号を指定
ssh your_user@your_server_ip -p 10022
無事にログインできることを確認してから、元のターミナルを閉じてください。これを怠ると、設定ミスがあった場合にサーバーにログインできなくなってしまいます。
まとめ
今回は、サーバー構築後すぐに行うべきSSHの初期セキュリティ設定として、「ポート番号の変更」と「rootログインの禁止」をご紹介しました。
どちらも設定ファイルの一行を書き換えるだけの簡単な作業ですが、サーバーの安全性を何倍にも高めることができます。
あなたの貴重なサーバーを守るため、ぜひ実践してみてください。
コメント