セキュリティ · 1 min read · Nov 14, 2025

OpenSSHのセキュリティベストプラクティス

SSH (Secure Shell) は、リモートマシン上でテキストベースのシェルセッションを安全に開始するための暗号化ネットワークプロトコルです。

OpenSSHは、ほとんどのLinuxディストリビューションで使用される標準のSSHクライアントおよびサーバーです。これは、ほとんどの管理者がLinuxおよび*BSDサーバーで作業するために依存している接続ツールです。OpenSSHは、すべてのトラフィック(パスワードを含む)を暗号化し、盗聴、接続ハイジャック、その他の攻撃を効果的に排除します。言い換えれば、「OpenSSHは、サーバーへの接続が安全であることを保証します」。SSHに関する詳細な解説については、Wikipediaの記事を参照してください。

このチュートリアルでは、SSHサーバーを安全に構成するためのベストプラクティスを説明します。

OpenSSHのセキュリティ

これらは、SSHサーバーのセットアップを保護するための6つの最も重要なタスクです:

  1. 強力なパスワードを使用する。
  2. SSHのデフォルトポートを変更する。
  3. 常にプロトコルバージョン2を使用する。
  4. ルートログインを無効にする。
  5. ユーザーアクセスを制限する。
  6. 認証にはキーを使用する。

強力なパスワードを使用する

パスワードは、ユーザー認証に使用される単語または文字列で、アイデンティティを証明したり、リソースへのアクセスを承認したりするために使用されます。サーバーにアクセスすることが許可されていない人からは秘密にしてください。複雑で長いパスワードを使用してください。あなたにとって覚えやすくユニークであるべきですが、他の人にとっては推測しやすくあってはなりませんadmin123adminなど、推測しやすいものや、誕生日、妻の名前などは使用しないでください。良いパスワードには、’.!;/‘のような特殊文字も含めるべきです(a-cおよび0-9の文字だけではありません)。パスワードには大文字と小文字の文字を使用してください。

SSHのデフォルトポートを変更する

SSHサービスのデフォルトポートは22であり、サーバーがSSHサービスを実行していることを明らかにしないように変更するべきです。SSHの設定ファイルは/etc/sshd/ディレクトリにあり、設定ファイル/etc/ssh/sshd_configを編集する必要があります。

nano /etc/ssh/sshd_config

“Port”行を検索します:

Port 22

そして、お好みのポート番号に変更します。例:1337

Port 1337

SSHポートデフォルト

サーバーでまだ使用されていないポートを選択してください。現在使用中のポートのリストは、次のコマンドで取得できます:

netstat -ntap

このコマンドは、すべてのオープンポートと接続を示すかなり長いリストを返します。希望するポートが利用可能かどうかを確認したい場合は、代わりにこのコマンドを使用してください:

netstat -ntap | grep 4422

この例では、ポート4422が空いているかどうかを確認します。コマンドが結果を返さない場合、そのポートは利用可能であり、SSHに使用できます。

常にプロトコル2を使用する

SSHには、古いプロトコル1(安全でない)と新しいプロトコル2の2つのプロトコルバージョンがあります。したがって、SSHサーバーには常にプロトコル2を使用してください。これはプロトコル1よりも安全です。詳細はこちら。

プロトコル2 SSH

ルートログインを無効にする

ルートユーザーの直接ログインを無効にするべきです。これは、ルートスーパーユーザーの名前に対するブルートフォース攻撃が多いためです。重要:ルートアカウントを無効にする前に、SSHログインに使用する予定の代替の非ルートユーザーでSSHログインをテストしてください。

PermitRootLogin no

ルートログインを無効にする

“PermitRootLogin”を”no”に設定すると、正しいパスワードを使用してもルートアカウントでログインできなくなります。

ユーザーを制限する

サーバーにログインするための新しいユーザーを追加するべきです。ruikoとmikotoというユーザーを作成したと仮定すると、次の行を追加できます:

AllowUsers ruiko mikoto

ユーザーを制限する

これにより、これらのユーザーにSSHアクセスを制限するために/etc/ssh/sshd_configに追加します。

キーベースの認証を使用する

このオプションを使用することをお勧めします。なぜなら、設定が非常に簡単で、パスワードベースの認証よりも安全だからです。まず、ローカル(デスクトップ)コンピュータで公開鍵と秘密鍵のペアを作成する必要があります。私はLinuxを使用して作成します。

次のコマンドで公開鍵/秘密鍵のペアを作成できます:

ssh-keygen -t rsa -b 4096

これにより、~/.ssh/ディレクトリにid_rsa(秘密鍵)とid_rsa.pub(公開鍵)の2つのファイルが作成されます。パスワードの入力を求められた場合は、空白のままにするか、パスワードを入力できます。鍵を保護するためにパスワードを使用することをお勧めします。

鍵生成SSH

次に、ssh-copy-idコマンドを使用して公開鍵id_rsa.pubをサーバーにアップロードします。

ssh-copy-id -i ~/.ssh/id_rsa.pub user@serverip

これにより、公開鍵がサーバーの~/.ssh/authorized_keys/ファイルに自動的に書き込まれます。

サーバーに戻り、再度sshファイルの設定を編集します。

nano /etc/ssh/sshd_config

この行のコメントを解除します:

AuthorizedKeysFile     %h/.ssh/authorized_keys

公開鍵を追加

最後に、SSHサーバーを再起動します:

systemctl restart sshd

サーバーに接続してみてください:

ssh -p '4422' 'user@serverIP'

結論

OpenSSHは、暗号化されていないtelnetプロトコルに代わって*Unix系サーバーへの安全なリモートアクセスの標準です。SSH(およびそのファイル転送サブプロトコルSCP)は、ローカルコンピュータからサーバーへの接続が暗号化され、安全であることを保証します。OpenSSHの基本インストールはすでにかなり安全ですが、上記のガイドに従うことでさらに改善できます。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。