パスワードのないSSHの意味は何ですか?

パスワードのないSSHの意味は何ですか?

UNIXユーザーがSSHを介してサーバーにアクセスし、公開鍵ログインのみを許可したい場合は、このリストに追加するときに考慮すべき他の項目がありますか?

  1. サーバーにファイルを許可しますpubkey loginsshd_config
  2. 基本パスワードに関する注意事項。「!」または「*」

答え1

どのSSHサーバーとどのUnixシステムセットが必要かを教えてください。

!または(この項目を読み取るために使用されます)、その項目を表示するときと*パスワードはありません。/etc/passwd/etc/shadowgetent

アカウントにパスワードがあるかロックされているかを示すフラグ。

これは、PAM の構成とバージョンとディストリビューションによって異なる重要な違いです。Linuxを使用している場合。ロックされているとログインできないようですが、古いシステムではすぐに動作する可能性があります(少なくとも私の経験ではそうでした)。

(スーパーユーザーとして)passwd -l <name>アカウントをロックしたり(!passwd -d <name>アカウントからパスワードを削除したり(*)、2つを組み合わせて既存のパスワードを削除したりできますpasswd -dl <name>

私は言っていませんが、/etc/ssh/sshd_configOpenSSH(パスは異なる場合があります)の関連ガイドラインが次のとおりです。

HostKey ...

サーバーにはRSA2またはDSAのホストキーが必要です(より近代的な実装には2つの楕円曲線実装も追加されています)。 RSA1は、すべての一般的なSSHサーバー実装で長く使用されていません。

それから:

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no

また、私は常にSSH()を介してログインを設定し/etc/sudoersて完全に無効にすることをお勧めします。ただし、このより安全な設定には、ディスクがいっぱいになり、権限のないメンバーがディスクに書き込めない場合(予約済みスペースのため)、小さな欠点がある可能性があります。だからYMMV。rootPermitRootLogin nosudoroot

2つの追加提案

SSHアクセスを制限するためのグループの割り当て

グループssh-users(または希望の名前)を作成し、適切なディレクティブを設定しますsshd_configroot上記の情報に基づいて選択したポリシーに従って、グループがグループのメンバーであることを確認してください。

AllowGroups ssh-users

ユーザーを制限するには、グループを割り当てます。ただSFTPアクセス

次のステップsshd_configは、ユーザーがエスケープできないようにし、/home特定の機能を無効にすることです。

Match group sftponly
    ChrootDirectory /home
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    PasswordAuthentication no

結論として

はい。 Linuxでは、PAMを考慮事項として追加する必要があります。

また、プロキシ転送を許可するのか、それともユーザーに任せるのかが含まれます。

最後に重要なのは、ポートまたはX11接続転送が許可されるかどうかです。特にポートは、ユーザがサーバをプロキシとして使用できるので、望ましくない場合がある。

また、このMatchディレクティブを使用すると、ユーザーが接続できる場所を制限できます(ファイアウォールまたはTCPラッパーもこれを行うことができます)。

ユーザーがキーを管理できるようにしますか、または抽象化してauthorized_keysユーザーが直接アクセスできないようにしますか?

もちろん、より多くの側面がありますが、ほとんどはより細かい詳細レベルにあるので、上記の点に対するバリエーションです。

答え2

ユーザーが望むものであれ、パスワードの複雑さに関するポリシーを検討してください。 SSHを介した唯一のアクセスでPasswordAuthenticationあり、場所は次のとおりです。nosshd_config、パスワードが何であるかは重要ではありません。またshadow!は暗号化されたパスワードなので、値は*そうではありません。パスワード- ただし、文字列は有効な暗号化値ではないため、パスワードベースのログインはできません。

答え3

OpenSSHを含むRHEL / CentOSのようなものを実行すると仮定すると、パスワードがないときに通常行うことは次のとおりです。

  • 公開鍵認証のみを許可するようにsshd_configを設定する(PubkeyAuthentication yes, PasswordAuthentication no, ChallengeResponseAuthentication no, UsePAM no
  • 既存のすべてのユーザーを無効なパスワードに設定する(chpasswd -e 'pubkey!!' <username>
  • 既存のユーザーのパスワードの有効期限をすべて削除する(chage -M -1 <username>
  • sudoを使用している場合は、すべてのユーザー仕様がNOPASSWDとマークされていることを確認してください(例%wheel ALL=(ALL) NOPASSWD: ALL:)
  • ユーザー作成プロセスがこれらの要件を満たしていることを確認してください(例useradd -p 'pubkey!!' -K MAX_PASS_DAYS=-1 <username>:)。

パスワードアクセスをロックする前に、公開鍵で正常に認証できることをもう一度確認してください。 /homeパーティションがネットワークマウント(または常に利用できない可能性がある他のパーティション)にないことを確認してください。公開鍵にアクセスできないため、サーバーにアクセスできないよりも悪いことはありません。システムがヘッドレスの場合は、緊急時にコンソールにすばやく直接アクセスできる方法(KVM、仮想コンソール、クラッシュカートなど)があることを確認してください。

その場合は、sudo アクセス権のあるすべてのアカウントに対してパスワードを設定し、sudo ユーザーにパスワードの提供を要求するように設定することを検討します。他のすべてが上記のように設定されていても、このパスワードを使用してサーバーにログインすることはできませんが、コマンドプロンプトに座って「bad(tm)」を実行している人にいくつかの追加の保護を提供します。

答え4

rcommandLinuxではなくUNIX(HP UX)システムの場合は、sshdアカウントの下のpam.confに追加する必要があります。

sshd     account sufficient /usr/lib/security/libpam_ldap.1 rcommand

そうしないと、システムにSSHで接続しようとするとパスワードプロンプトが表示されますが、これは表示されません。

関連情報