Linuxユーザーは、現在のパスワードを知らなくてもパスワードを変更できますか?


25

いくつかのubuntuボックスをセットアップchefし、設定ツールとしてopscodeを使用しています。これらの各サーバーに各ユーザーの公開キーをインストールし、パスワード認証を無効にすることは非常に簡単です。

ただし、ユーザーにはsudo特権も必要です。デフォルトではパスワードが必要です。

ユーザーの公開キーをアクセス管理の方法として使用し、ユーザーのsudo権限を許可する場合、NOPASSWD: ALLinを使用してユーザーを設定するvisduo必要がありますか、またはユーザーが自分のパスワードを変更できる方法があります公開鍵認証のみがありますか?



@sr-これが主流の方法であるように見えません
...-cwd

なぜユーザーにsudo特権を持たせたいのですか?これによりルートアクセスを許可することを知っていることを願っています。ここで少し時間をかけて、sudoに関連して使用できるコマンドのサブセットのみを許可する可能性があります(安全性が低下する可能性があります)。Go man sudoersは、ユーザーパスワードをまったく必要とせずに、特定のコマンドをsudoで実行できるという情報を生成します。シェルスクリプトを/ etc / sudoersに追加して、事前のパスワードを必要とせずにユーザーごとの「自己パスワード」設定を許可することもできます。
humanityANDpeace

@humanityANDpeace-私はこれを実現しています。チームメンバー全員が、当社が管理するクラウドサーバーへのルートアクセスを必要とします。現在、chefを使用してユーザーの公開キーを管理しNOPASSWD: ALLており、チームメンバーが所属するsysadminグループがあります。より良い解決策を提案できる場合は、回答として投稿してください。
cwd

回答:


21

sudoは、最も一般的な構成で、ユーザーにパスワードの入力を要求します。通常、ユーザーはすでにパスワードを使用してアカウントへの認証を行っており、パスワードを再度入力することで、正当なユーザーが自分のコンソールを放棄してハイジャックされていないことを確認できます。

設定では、ユーザーのパスワードはsudoの認証にのみ使用されます。特に、ユーザーのSSHキーが侵害された場合、攻撃者はサーバーのルート権限に昇格できません。攻撃者はアカウントにキーロガーを植え付けることができますが、このキーロガーは他のユーザーによって検出され、自動的に監視される可能性さえあります。

ユーザーは通常、現在のパスワードを知ってから別のパスワードに変更する必要があります。passwdこの検証プログラムは、(それがないように構成することができますが、これは役に立つか、シナリオ内のすべての望ましくではありません)。ただし、rootは古いパスワードを知らなくても、ユーザーのパスワードを変更できます。したがって、sudo powersを持つユーザーはpasswd、を実行してプロンプトでパスワードを入力せずに自分のパスワードを変更できますsudo passwd $USER。場合はsudo、ユーザーのパスワードを要求するように設定され、ユーザーはにパスワードを入力しておく必要がありますsudoとにかく。

パスワード認証を選択的に無効にできます。あなたの状況では、sshおよび他のサービスでパスワード認証を無効にします。最新のユニックスのほとんどのサービス(Ubuntuを含む)は、PAMを使用して認証方法を構成します。Ubuntuでは、PAM構成ファイルはにあり/etc/pam.dます。パスワード認証を無効にするには、のauth … pam_unix.so行をコメント化します/etc/pam.d/common-auth。また、あなたが持っている作るPasswordAuthentication no/etc/ssh/sshd_config無効にsshdの組み込みのパスワード認証に。

一部の管理ユーザーがパスワードでログインできるようにするか、コンソールでパスワード認証を許可することができます。これはPAMで可能です(かなり柔軟です)が、私の頭のてっぺんからどれだけ外れているかを説明できませんでした。ヘルプが必要な場合は、別の質問をしてください。


SSH鍵認証との組み合わせでPAMを使用しての1つの便利な方法は、経由でpam_ssh_agent_auth(理論的には、より安全な)によってプロンプトパスワードを交換するという利点があり、鍵認証SSHはとにかく使用することができます
トビアスKienzler

あなたはsudo passwdsudoユーザーではなく現在のユーザーのパスワードを変更すると言っていますか?
-still_dreaming_1

1
@ still_dreaming_1いいえ、コマンドを実行できるユーザーsudoは自分のパスワードを変更できると言っています。正確なコマンドは実際には重要ではありませんが、より詳細に説明すると、ユーザーの名前がsudo passwd bobどこbobにあるか、または同等のものになります。引数なしで、sudo passwd実際にルートのパスワードを変更します。
ジル 'SO-悪であるのをやめる'

7

pam_ssh_agent_authモジュールを使用できます。コンパイルするのは非常に簡単で、エントリを追加するだけです

auth       sufficient pam_ssh_agent_auth.so file=~/.ssh/authorized_keys

の他のauth(またはinclude)エントリの/etc/pam.d/sudo

そして

Defaults    env_keep += "SSH_AUTH_SOCK"

から/etc/sudoers(経由visudo)。

これで、すべてのユーザーがsudo(転送またはローカルの)SSHエージェントまたはパスワードを介して認証できます。ssh-add -csudo呼び出しで少なくとも何らかの確認が必要になるように、ユーザーに使用を依頼するのが賢明かもしれません。


関連する問題として、pam_sshがあります。これにより、ログインにUNIXパスフレーズの代わりにSSHパスフレーズを使用して、エージェントを自動的に起動してキーを追加できるため、シングルサインオンが可能になります。
トビアスキンツラー

1

はい、それは信じられないほど安全ではなく、ユーザーが他のユーザーのパスワードにアクセスすることもできますが、sudoを持っているので、できることはあまりありません。

基本的に、次のことを行います。

$ sudo -i

今、私たちはルートです。すべてにアクセスできます。

# passwd $username

$ usernameは、誰のユーザー名でもかまいません。

新しいUNIXパスワードを入力します。

新しいUNIXパスワードを再入力:passwd:パスワードは正常に更新されました

ブーム、パスワードが変更されました。繰り返しになりますが、誰でも変更できるため、非常に安全ではありませんが、機能しますが、機能します。私はそれをお勧めしませんが、何をすべきでないかの例としてこの答えを提供します。


よさそうですが、ここで何が起こっているのか詳しく説明できますか?
cwd

4
sudo -i現在のユーザーパスワードなしでは実行できません。
クラベミール

@ミロ。あなたの言うとおりです。ファイルsudo bash内のセットアップを考えると、まだパスワードなしの可能性があり/etc/sudoersます。私が言ったように@jrgが、ここでより多くの須藤との不安の問題に焦点を当てていると思う
humanityANDpeace

1
正直なところ、あなたはする必要はありません、あなたは@Miroに直接sudo -iジャンプすることができます、あなたsudo passwd $usernameは現在のユーザーパスワードを知る必要はありません。sudoを使用するには、rootパスワードを知っている必要があります
Antony 14年

0

パスワードのポイントは、ユーザーのキーを取得したり、無人の端末を見つけたハッカーがルートアクセスを取得できないようにすることです。このため、パスワードなしのsudoを含むソリューションはお勧めしません。

シンプルにすることをお勧めします。おそらく、できるだけ早く変更するための厳密な指示とともにデフォルトのパスワードをユーザーにメールで送信する.profile.login、最初のログインで新しいパスワードを要求するスクリプトを挿入します。完了すると自動的に無効になる可能性があります。またexpect、既存のパスワードを入力して、パスワードを知らなくても済むようにすることもできます。


0
#% useradd -g somegroup someuser
#% usermod -p "" someuser
#% chage -d 0 someuser
#% sed -i "s/^.*PasswordAuthentication .*/PasswordAuthentication no/" /etc/sshd/sshd_config
#% /sbin/service sshd restart
#% cp -r ~/.ssh `echo ~someuser`
#% chown -R someuser `echo ~someuser`/.ssh
#% chgrp -R somegroup `echo ~someuser`/.ssh
#% echo "%somegroup  ALL=(ALL)   ALL" >> /etc/sudoers

>これにより、公開鍵のみを使用してログインでき、ログインにパスワードを使用できないユーザーを許可できます。ただし、最初にログインするときにパスワードを変更する必要がありますが、ダミーのパスワードを事前に伝える必要はありません...ユーザーは単にパスワードをリセットするように求められ、その後はsudoにのみ使用できますそのパスワードを使用してログイン(ssh)することはできません。ここでのコツは、ユーザーにパスワードを変更する必要がある場合にログイン時に入力する必要があるダミーのパスワードをユーザーに伝えないことです...ナッツシェルでは、admin(root)からの通信はありません実際のユーザーに必要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.