SSH (Secure Shell) を使用してサーバーに接続することは、システム管理者や開発者にとって基本的なタスクです。SSH は暗号化されたチャネルを提供しますが、不正アクセスからサーバーを保護するために安全に構成することが不可欠です。このガイドでは、安全な SSH 接続のための重要な実践方法を説明します。
1. SSH キーベース認証を使用する
SSH キーはパスワードよりもはるかに安全です。これらには、暗号化キーのペアが含まれます。プライベートキー(ローカルマシン上で秘密に保持)と公開キー(サーバー上に配置)です。
- キーを生成する: ローカルマシンで
ssh-keygenを使用してキーペアを作成します。bash ssh-keygen -t rsa -b 4096プライベートキーのパスフレーズを入力するように求められます。強力なものを1つ使用してください。 - 公開キーをサーバーにコピーする:
ssh-copy-idを使用して、公開キーをサーバーに簡単に転送します。bash ssh-copy-id username@your_server_ipこのコマンドは、公開キーをサーバー上の~/.ssh/authorized_keysファイルに追加します。
2. パスワード認証を無効にする
SSH キー認証が機能したら、ブルートフォース攻撃を防ぐためにパスワードログインを無効にします。
- SSH 設定を編集する: サーバー上の SSH デーモン設定ファイルを開きます。
bash sudo nano /etc/ssh/sshd_config - 設定を変更する: 次の行を見つけて変更します。
PasswordAuthentication no # root ログインを使用している場合は、それも無効になっていることを確認してください: # PermitRootLogin no - SSH サービスを再起動する: SSH サービスを再起動して変更を適用します。
bash sudo systemctl restart sshd
3. デフォルトの SSH ポートを変更する
デフォルトの SSH ポート (22) は、自動スキャンの一般的なターゲットです。これを変更すると、不要なトラフィックを減らすことができます。
- SSH 設定を編集する:
/etc/ssh/sshd_configでPort 22行を見つけ、22を別の未使用のポート番号(例:2222)に変更します。Port 2222 - ファイアウォールを更新する: 新しいポートでトラフィックが許可されていることを確認します。
bash sudo ufw allow 2222/tcp sudo ufw delete allow ssh # ポート 22 の古いルールを削除します - SSH サービスを再起動する:
bash sudo systemctl restart sshd接続する際には、新しいポートを指定する必要があります:ssh -p 2222 username@your_server_ip。
4. ユーザーアクセスを制限する
SSH アクセスを必要なユーザーのみに制限します。
- ルートログインを無効にする:
/etc/ssh/sshd_configでPermitRootLogin noを設定します。常に通常のユーザーとしてログインし、管理タスクにはsudoを使用してください。 - 特定のユーザー/グループを許可する:
sshd_configのAllowUsersまたはAllowGroupsディレクティブを使用して、特定のアカウントをホワイトリストに登録します。AllowUsers your_user another_user
5. ファイアウォールを使用する
サーバーのファイアウォール(例:ufw)を、信頼できる IP アドレスまたはネットワークからの SSH 接続のみを許可するように構成します。
- UFW の例:
bash sudo ufw allow from trusted_ip_address to any port 2222 proto tcp # または特定のサブネットから許可する場合 # sudo ufw allow from 192.168.1.0/24 to any port 2222 proto tcpアプリケーションに必要な他のポートも許可することを忘れないでください。
6. Fail2Ban を実装する
Fail2Ban はログファイルをスキャンして悪意のあるアクティビティ(繰り返し失敗したログイン試行など)を見つけ、違反した IP アドレスを自動的にブロックするようにファイアウォール ルールを更新します。
- Fail2Ban をインストールする:
bash sudo apt install fail2ban - 構成する: 通常は SSH に対してそのまま機能しますが、
/etc/fail2ban/jail.localで設定をカスタマイズできます。
7. ソフトウェアを最新の状態に保つ
既知の脆弱性をパッチするために、サーバーのオペレーティング システムと SSH ソフトウェアを定期的に更新してください。
sudo apt update && sudo apt upgrade -y
これらの実践方法を実装することで、SSH 接続のセキュリティを大幅に向上させ、サーバーを不正アクセスから保護できます。