SSH (Secure Shell) を使用してサーバーに接続することは、システム管理者や開発者にとって基本的なタスクです。SSH は暗号化されたチャネルを提供しますが、不正アクセスからサーバーを保護

SSH (Secure Shell) を使用してサーバーに接続することは、システム管理者や開発者にとって基本的なタスクです。SSH は暗号化されたチャネルを提供しますが、不正アクセスからサーバーを保護するために安全に構成することが不可欠です。このガイドでは、安全な SSH 接続のための重要な実践方法を説明します。

Beginner

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_configPort 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_configPermitRootLogin no を設定します。常に通常のユーザーとしてログインし、管理タスクには sudo を使用してください。
  • 特定のユーザー/グループを許可する: sshd_configAllowUsers または 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 接続のセキュリティを大幅に向上させ、サーバーを不正アクセスから保護できます。