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へのすべての呼び出しを初期コマンドを実行するsudo
via toのjohn
2段階アクセスに置き換えます。ssh
このチェーンに配置する仲介者の数に応じて、暗号化ステップの数が定義されます。私の例では、次のいずれかを使用します。john
middleman
sudouser
sudo
誰でもそのアカウントに直接su
アクセスすると、そのアカウントのパスワードがロックされます。パスワードのない権限は、パスワードの障壁を追加する目的でのみ付与され、存在します。sudouser
middleman
sudouser
sudo
middleman
john
パスワードなしでアクセスができるように設定したあと、パスワードRSAキーを利用してアクセスするようにします。つまり、パスワードはRSAキーのパスワードになります。 (したがって、注意してください:各仲介者には暗号化RSAキーが必要です)ssh
middleman
middleman
sudouser
1.sudoerssudouser
ファイルに追加
私はあなたがこれを知っていると仮定します。しかし、完全性を理由に追加しました。/etc/sudoers
次の行を追加して、パスワードのないsudoコマンドを付与しますvisudo
。
sudouser ALL=(ALL) NOPASSWD: ALL
それでは、このユーザーは非常に危険なユーザーなので、パスワード(たとえばroot
)を無効にしてみましょう。
passwd -l sudouser
su
暗号化ステップをスキップして最後の仲介者を直接抑制するために、すべての仲介者に対して同じことを行います。
2. SSH 鍵ペアの生成
再び正常に動作します。両方john
に - パスワード認証を実装するには、RSAキーのパスワードが必要です。これは必須ではありませんが、これは可能です(おそらくこの目的に使用される特定のRSAキーにのみ別の暗号化ステップを追加するだけです)。middleman
ssk-keygen
middleman
john
ssh
3. forceコマンドを使用して-accessを設定します。
今楽しい部分は次のとおりです。 force コマンドを使用して 'sjohn
に追加しますmiddleman
。つまり、fromを介してアクセスすると、thisコマンドとthisコマンドのみが実行されます。~/.ssh/authorized_keys
middleman
ssh
john
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
許可されます。middleman
localhost
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
。以前にユーザーパスワードをロックしたため、設定が重複する可能性があります。sudouser
ssh
authorized_keys
PasswordAuthentication 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
。すべてが実際にセキュリティを向上させるかどうかはわかりません。