SSH(Secure Shell)は、リモートマシンでテキストベースのシェルセッションを安全な方法で開始するための暗号化ネットワークプロトコルです。
OpenSSHは、ほとんどのLinuxディストリビューションで使用される標準のSSHクライアントおよびサーバーです。これは、ほとんどの管理者がLinuxおよび*BSDサーバーで作業するために依存している接続ツールです。 OpenSSHは、すべてのトラフィック(パスワードを含む)を暗号化して、盗聴、接続ハイジャック、およびその他の攻撃を効果的に排除します。つまり、「OpenSSHはサーバーへの接続が安全であることを保証します」ということです。 SSHの詳細については、ウィキペディアの記事を参照してください。
このチュートリアルでは、SSHサーバーを安全に構成するためのベストプラクティスについて説明します。
OpenSSHセキュリティ
SSHサーバーのセットアップを保護するための6つの最も重要なタスクは次のとおりです。
- 強力なパスワードを使用してください。
- SSHのデフォルトポートを変更します。
- 常にプロトコルバージョン2を使用します。
- ルートログインを無効にします。
- ユーザーアクセスを制限します。
- 認証にキーベースを使用します。
パスワードは、リソースへのアクセスを取得するための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 22
好きなポート番号に変更します。例:1337
Port 1337
サーバーでまだ使用されていないポートを選択してください。次のコマンドで現在使用されているポートのリストを取得できます:
netstat -ntap
このコマンドを実行すると、開いているすべてのポートと接続を示す非常に長いリストが表示されます。目的のポートが使用可能かどうかを確認したい場合は、代わりに次のコマンドを使用してください。
netstat -ntap | grep 4422
この例では、ポート4422が空いているかどうかを確認します。コマンドが結果を返さない場合、ポートは使用可能であり、SSHに使用できます。
SSHには、安全でない古いプロトコル1と新しいプロトコル2の2つのプロトコルバージョンがあります。したがって、sshサーバーには常にプロトコル2を使用してください。これは、プロトコル1よりも安全です。詳細はこちら
ルートスーパーユーザーの名前に対するブルートフォース攻撃が多数あるため、ルートユーザーの直接ログインを無効にする必要があります。重要: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 /ディレクトリに2つのファイルが作成され、id_rsaが秘密鍵、id_rsa.pubが公開鍵になります。パスワードの入力を求められた場合は、空白のままにするか、パスワードを入力できます。キーを保護するためにパスワードを使用することをお勧めします。
次に、ssh-copy-idコマンドを使用して公開鍵id_rsa.pubをサーバーにアップロードします。
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
サーバー内のファイル〜/ .ssh /authorized_keys/に公開鍵が自動的に書き込まれます。
次に、サーバーに戻り、sshファイルの構成を再度編集します。
nano /etc/ssh/sshd_config
この行のコメントを解除します:
AuthorizedKeysFile %h/.ssh/authorized_keys
最後にsshサーバーを再起動します:
systemctl restart sshd
次に、サーバーに接続してみてください:
ssh -p '4422' '[email protected]'
OpenSSHは、暗号化されていないtelnetプロトコルに代わる、*Unixライクなサーバーへの安全なリモートアクセスの標準です。 SSH(およびそのファイル転送サブプロトコルSCP)は、ローカルコンピューターからサーバーへの接続が暗号化されて安全であることを保証します。 OpenSSHの基本インストールはすでに非常に安全ですが、上記のガイドに従うことで改善できます。