私のLinuxとFreeBSDシステムのいくつかは何十人ものユーザーを持っています。ワーカーはこれらの「sshゲートウェイ」ノードを使用して、SSHを介して他の内部サーバーにアクセスします。
それらの一部が暗号化されていないSSH秘密鍵(鍵なしの鍵)を使用していることが懸念されます。パスワード。これは良くないクラッカーがこのコンピュータから自分のアカウントにアクセスできる場合は、秘密鍵を盗み、同じキーを使用してすべてのコンピュータにアクセスできるためです。セキュリティ上の理由から、すべてのユーザーはSSH秘密鍵をパスワードで暗号化する必要があります。
秘密鍵が暗号化されていない(パスワードが含まれていない)かどうかはどうすればわかりますか? ASCII以外のArmoredキーと比較して、ASCII Armoredキーでこれを行う他の方法はありますか?
修正する:
これを明確にするために、私はコンピュータにスーパーユーザーアクセスを持っており、誰もが秘密鍵を読むことができるとしましょう。
答え1
パスワードが空のOpenSSH秘密鍵は実際には暗号化されません。
暗号化秘密鍵は秘密鍵ファイルで宣言されています。たとえば、
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,7BD2F97F977F71FC
BT8CqbQa7nUrtrmMfK2okQLtspAsZJu0ql5LFMnLdTvTj5Sgow7rlGmee5wVuqCI
/clilpIuXtVDH4picQlMcR+pV5Qjkx7BztMscx4RCmcvuWhGeANYgPnav97Tn/zp
...
-----END RSA PRIVATE KEY-----
そのように
# grep -L ENCRYPTED /home/*/.ssh/id_[rd]sa
これで問題が解決します。
答え2
この質問についてあちこち探してみましたが、満足のいく答えが見つかりませんでしたが、そのように答えを整理することができました。
有効な場合はファイルが更新されるため、テスト中のキーを持つユーザーが気付かないようにするには、まずキーをコピーすることをお勧めします。 OTOH、ちょうどパスワードのないキーでユーザーをキャプチャしたので、ユーザーが気づいたとしても気にしないかもしれません。 :D
$ ssh-keygen -p -P '' -N '' -f ~/.ssh/KEYTEST
Key has comment '/home/rlpowell/.ssh/KEYTEST'
Your identification has been saved with the new passphrase.
$ echo $?
0
$ ssh-keygen -p -P '' -N '' -f ~/.ssh/KEYTEST
Bad passphrase.
$ echo $?
1
答え3
秘密鍵にアクセスできる場合は、パスワードなしで公開鍵を認証するために使用できるようです。これがうまくいけば、パスワードがないことがわかります。存在する場合は、エラーメッセージが表示されます。
秘密鍵にアクセスできない場合は、それを検出できるかどうか疑問です。パスワードの目的は、秘密鍵を「ロック解除」することであり、公開鍵には何の影響もありません。
実際、これはシステムのセキュリティを強化しません。人々は、公開鍵を使用してパスワードを復号化する無差別代入攻撃やその他の攻撃を試みるために使用できます。