ユーザーのためのさまざまなレベルのパスワードセキュリティを設計する方法

ユーザーのためのさまざまなレベルのパスワードセキュリティを設計する方法

PAMマルチレベルパスワードを使用してログインを実装するための拡張バージョンが可能かどうか疑問に思います。

たとえば、私は1つのパスワードの代わりに3つの異なるパスワードを連続して入力する必要があるタスクを実行したいと思いますsudo

[user@hostname][/home]# sudo echo ok
[sudo] password 1 for user:
[sudo] password 2 for user:
[sudo] password 3 for user:
ok

ベストアンサー1

ssh回避策として使用することをお勧めします。

基本的なアイデア

sudouserユーザー(コマンドの実行が許可されているsudo)と中間ユーザーを作成するとしますmiddleman。元のユーザー(john)もコマンドをmiddelman実行できませんsudo

これで、byへのすべての呼び出しを初期コマンドを実行するsudovia toのjohn2段階アクセスに置き換えます。sshこのチェーンに配置する仲介者の数に応じて、暗号化ステップの数が定義されます。私の例では、次のいずれかを使用します。johnmiddlemansudousersudo

誰でもそのアカウントに直接suアクセスすると、そのアカウントのパスワードがロックされます。パスワードのない権限は、パスワードの障壁を追加する目的でのみ付与され、存在します。sudousermiddlemansudousersudomiddleman

johnパスワードなしでアクセスができるように設定したあと、パスワードRSAキーを利用してアクセスするようにします。つまり、パスワードはRSAキーのパスワードになります。 (したがって、注意してください:各仲介者には暗号化RSAキーが必要です)sshmiddlemanmiddlemansudouser


1.sudoerssudouserファイルに追加

私はあなたがこれを知っていると仮定します。しかし、完全性を理由に追加しました。/etc/sudoers次の行を追加して、パスワードのないsudoコマンドを付与しますvisudo

 sudouser ALL=(ALL) NOPASSWD: ALL

それでは、このユーザーは非常に危険なユーザーなので、パスワード(たとえばroot)を無効にしてみましょう。

 passwd -l sudouser

su暗号化ステップをスキップして最後の仲介者を直接抑制するために、すべての仲介者に対して同じことを行います。


2. SSH 鍵ペアの生成

再び正常に動作します。両方johnに - パスワード認証を実装するには、RSAキーのパスワードが必要です。これは必須ではありませんが、これは可能です(おそらくこの目的に使用される特定のRSAキーにのみ別の暗号化ステップを追加するだけです)。middlemanssk-keygenmiddlemanjohn


ssh3. forceコマンドを使用して-accessを設定します。

今楽しい部分は次のとおりです。 force コマンドを使用して 'sjohnに追加しますmiddleman。つまり、fromを介してアクセスすると、thisコマンドとthisコマンドのみが実行されます。~/.ssh/authorized_keysmiddlemansshjohn

cat /home/middleman/.ssh/authorized_keys
command="ssh -t sudouser@localhost $SSH_ORIGINAL_COMMAND" <john's public key> john@localhost

したがって、最初のステップ(pass)sudouserで指定したコマンドを渡すためにSSHセッションを直接開始します。$SSH_ORIGINAL_COMMAND

johnこれだけが許可され、localhostセキュリティ上の理由から他のすべてのアクセスは拒否されます。command"...",no-port-forwarding,no-x11-forwarding,no-agent-forwardingセキュリティを強化するために、-を介して転送制限を追加することができます。

sudouserファイルの場合、以下からのみアクセスがauthorized_keys許可されます。middlemanlocalhost

cat /home/middleman/.ssh/authorized_keys
ssh-rsa <middleman's public key> middleman@localhost

それでは/etc/ssh/sshd_config、アクセスを少しロックします。

Match User middleman,sudouser
    PasswordAuthentication no
    AuthenticationMethods publickey

したがって、RAS公開鍵とファイルで指定された必須コマンドを介してのみアクセスできますmiddleman。以前にユーザーパスワードをロックしたため、設定が重複する可能性があります。sudousersshauthorized_keysPasswordAuthentication no


4. エイリアスsudo

これでsudo、コマンドを次のように置き換える必要があります。

ssh -t middleman@localhost "sudo <command>"

これを行うには、単純なシェルスクリプトとエイリアスを使用します。

#sudo_alias_script.sh
#!/bin/bash
ssh -t middleman@localhost "sudo $@"

そして alias sudo='/home/john/.bin/sudo_alias_script.sh'


私は2つの仲介者を通してこれをうまく試しました。かさばりますが、必要な機能を実行します。いくつかのテキスト出力が必要な場合は、forceコマンドをechoテキストスクリプトに置き換えて次の手順に進みますssh。すべてが実際にセキュリティを向上させるかどうかはわかりません。

おすすめ記事