パスワードなしの接続でSSHをセキュリティ強化する
紹介
SSHはすべてのLinuxユーザーにとって必須のツールですが、多くの人々はその強力な機能、特に鍵を使った安全なログインを最大限に活用していません。
SSHキーのペアは、ログインターゲットとペアになった暗号化キーを持つコンピュータのみがログインできるように制限することで、より安全にログインすることを可能にします。パスワードとは異なり、これらのキーは推測できないため、誰かがあなたのコンピュータやサーバーに侵入するために数千のパスワードを試すことを心配する必要はありません。キーがなければアクセスはできません。
いいニュースは、これらのキーは非常に簡単に設定して使用できるため、設定を維持したり、長いセットアッププロセスを経る必要がないということです。
鍵の必要性
公開用のマシンを運用している場合は、これらのキーが必要です。申し訳ありませんが、パスワード認証を使用している場合は、より脆弱です。
パスワードはひどいものです。それはずっと前からよく知られています。パスワードに依存するほとんどの主要なウェブアプリケーションやユーティリティは、最も強力なパスワードの欠陥を認識しているため、2要素認証を提供しています。SSHの場合、鍵が2つ目の認証要素となります。それは、システムへのアクセスが許可されたものであることを保証するための第2のステップを提供します。
鍵ペアを生成する
ここでの作業の大部分は、あなたが希望するクライアントシステム上で行われ、ペアのキーの1つをアクセスしたいサーバーに送信します。
キー生成プロセスをカスタマイズすることにあまり関与したくないのであれば、それは実際に問題ありません。キーを生成するコマンドで提供されるオプションの大半は、一般的な状況ではそれほど役に立たないものです。
キーを生成する最も基本的な方法は、次のLinuxコマンドを使用することです。
ssh-keygen -t rsaそのコマンドを使用すると、ほとんどすべてがデフォルトで実行されます。指定する必要がある唯一のことは、使用される暗号化の種類、すなわちrsaです。
キーにパスワードを含めるかどうか尋ねられます。これは必ずしも必要ではなく、多くの人はそうしません。もし、追加のセキュリティ層を望むのであれば、強力なパスフレーズも追加してください。ただし、そのキーを使用して接続するたびに、それを入力する必要があることを覚えておいてください。
キーにさらにセキュリティを追加したい場合に使用できる別のオプションがあります。-bフラグをssh-keygenコマンドに追加することで、使用するビット数を指定できます。デフォルトは2048で、ほとんどの場合はこれで問題ありません。以下はその例の見た目です。
ssh-keygen -b 4096 -t rsaサーバーへのキーの転送
全体が機能するためには、接続しようとしているマシンに鍵ペアの一部を渡す必要があります。だからこそ、鍵ペアは生成されるのです。その.keyがついたファイルはあなたの秘密鍵です。それを共有したり配布したりしないでください。しかし、.pub拡張子のついたファイルは、接続したいマシンに送信する必要があります。
ほとんどのLinuxシステムには、接続したいマシンに公開鍵を送信するための非常にシンプルなスクリプトが付属しています。このスクリプト、ssh-copy-idを使うと、1つのコマンドだけで鍵を発送することができます。
ssh-copy-id -i ~/.ssh/id_rsa.pub username@192.168.1.1もちろん、ターゲットマシンで接続するユーザーのユーザー名と、そのコンピュータの実際のIPアドレスを入れ替えることになります。ドメイン名やホスト名でも機能します。
サーバーを別のポートでSSHを使用するように設定している場合は、ssh-copy-idに
-p
フラグを使用して希望のポート番号を指定できます。ログイン中
SSHでログインすることは以前とほぼ同じで、検証にはキー ペアを使用することになります。通常通りSSHで接続してください。
ssh username@192.168.1.1鍵にパスワードを設定しなかった場合、自動的にログインします。パスワードを追加した場合、システムがログインする前にそれを入力するように求められます。
パスワードログインの無効化
SSHキーを使用してログインしているので、SSHのパスワードベースのログインを無効にすることをお勧めします。これにより、誰かがあなたのアカウントのパスワードを発見して使用するリスクを避けることができます。すべてのパスワードログインが無効になります。
接続したいマシン、推測するにサーバーですが、SSHの設定ファイルを見つけてください。それは通常、/etc/ssh/sshd_configにあります。そのファイルをお好みのテキストエディタでroot権限またはsudoを使用して開いてください。
vim /etc/ssh/sshd_config行を見つけて、PasswordAuthenticationのコメントを解除し、必要であれば、その値をnoに設定してください。
PasswordAuthentication noそのセクションでより良いセキュリティのために変更したい他のいくつかのオプションがあります。これにより、あなたのキーでのログインのみが許可されます。
PasswordAuthentication no
PermitEmptyPasswords no
HostbasedAuthentication no
作業が完了したら、ファイルを保存して終了してください。変更を反映させるために、SSHサービスを再起動する必要があります。
systemctl restart sshdまたは
/etc/init.d/sshd restart締めくくりの考え
最小限の努力で、あなたのサーバーのSSH接続はずっと安全になりました。パスワードは多くの面で問題がありますし、SSHはインターネット上で最も攻撃されるサービスの一つです。SSHキーを使用する時間を取り、サーバーがパスワード攻撃から守られていることを確認してください。