ウェブサイト検索

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


このページでは

  1. OpenSSH セキュリティ
    1. 強力なパスワードを使用する
    2. SSH のデフォルト ポートを変更する
    3. 常にプロトコル 2 を使用する
    4. root ログインを無効にする
    5. ユーザーを制限する
    6. 鍵ベースの認証を使用する

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

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

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

    OpenSSH セキュリティ

    これらは、SSH サーバーの設定を保護するための最も重要な 6 つのタスクです。

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

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

    パスワードは、ID を証明するためのユーザー認証またはリソースへのアクセスを取得するためのアクセス承認に使用される単語または文字列です。サーバーへのアクセスを許可されていない人には秘密にしておいてください。複雑で長いパスワードを使用してください。覚えやすく、自分にとっては一意である必要がありますが、他の人にとっては推測しにくいものでなければなりません。推測しやすい \admin123\ や \admin\ などは使用しないでください。誕生日や妻の名前なども使用しないでください。適切なパスワードには、.!;/ のような特殊文字も含める必要があります (文字だけでなく、 a-c および 0-9)。パスワードには大文字と小文字を使用してください。

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

    SSH サービスのデフォルトの Post は 22 です。これを変更して、サーバーが SSH サービスを実行していることを目立たなくする必要があります。 SSH 構成ファイルは /etc/sshd/ ディレクトリにあります。構成ファイル /etc/ssh/sshd_config を編集する必要があります。

    nano /etc/ssh/sshd_config

    \Port\ 行を検索します。

    Port 22

    お気に入りのポート番号に変更します。例: 1337

    Port 1337

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

    netstat -ntap

    このコマンドを実行すると、開いているすべてのポートと接続を示す非常に長いリストが作成されます。目的のポートが利用可能かどうかを確認したい場合は、代わりに次のコマンドを使用します。

    netstat -ntap | grep 4422

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

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

    SSH には、安全でない古いプロトコル 1 と新しいプロトコル 2 の 2 つのプロトコル バージョンがあります。

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

    root スーパーユーザーの名前に対するブルート フォース攻撃が多数あるため、root ユーザーの直接ログインを無効にする必要があります。重要: root アカウントを無効にする前に、ssh ログインに使用する予定の root 以外の代替ユーザーで SSH ログインをテストしてください。

    PermitRootLogin no

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

    ユーザーを制限する

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

    AllowUsers ruiko mikoto

    /etc/ssh/sshd_config で、これらのユーザーへの SSH アクセスを制限します。

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

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

    次のコマンドを使用して、公開鍵と秘密鍵のペアを作成できます。

    ssh-keygen -t rsa -b 4096

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

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

    ssh-copy-id -i ~/.ssh/id_rsa.pub 

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

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

    nano /etc/ssh/sshd_config

    次の行のコメントを外します。

    AuthorizedKeysFile     %h/.ssh/authorized_keys

    最後に ssh サーバーを再起動します。

    systemctl restart sshd

    サーバーに接続してみます。

    ssh -p '4422' ''

    結論

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

関連記事: