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

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

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

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

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

答え1

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

設定では、ユーザーのパスワードはsudo認証にのみ使用されます。特に、ユーザーのSSHキーが破損している場合、攻撃者はサーバーからroot権限に昇格できません。攻撃者はアカウントにキーロガーを植えることができますが、他のユーザーはキーロガーを検出して自動的に監視することもできます。

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

パスワードの確認を選択的に無効にできます。お客様の場合、SSH およびその他のサービスでパスワード認証を無効にします。ほとんどの最新のユニーク(Ubuntuを含む)では、ほとんどのサービスはポリアクリルアミド認証方法を設定します。 Ubuntuでは、PAM設定ファイルはにあります。/etc/pam.dパスワード認証を無効にするにはauth … pam_unix.so。また、sshdの組み込みパスワード認証を無効にしていることを/etc/pam.d/common-auth確認してください。PasswordAuthentication no/etc/ssh/sshd_config

特定の管理ユーザーがパスワードでログインできるようにしたり、コンソールでパスワード認証を許可したりできます。これはPAMを介して達成できますが(非常に柔軟性があります)、方法を直接知ることはできません。助けが必要な場合は別途ご質問ください。

答え2

はい、それは非常に安全ではなく、ユーザーが他のユーザーのパスワードにアクセスできる可能性がありますが、sudoがあるため、できることはあまりありません。

デフォルトでは、次の操作を行います。

$ sudo -i

今私たちは根です。私たちはすべてにアクセスできます。

# passwd $username

$ usernameは誰でもユーザー名にすることができます。

新しいUNIXパスワードを入力してください。

新しいUNIXパスワードを再入力してください。 passwd: パスワード更新の成功

ブーム、パスワードが変更されました。繰り返しますが、誰でも変更できるので、非常に安全ではありませんが、動作しますが動作します。お勧めしませんが、この回答を例として提供してください。いいえします。

答え3

あなたはそれを使用することができます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/sudoersvisudo

これで、すべてのユーザーがsudo(配信またはローカル)SSHエージェントを介して認証できるようになります。または彼らのパスワード。ssh-add -cすべての通話に少なくともある程度の確認が必要であることをユーザーに要求することは賢明ですsudo

答え4

短い答え

はいすべてのユーザーがsudoパスワードなしで使用できるようにする必要があります。sudoディストリビューションでデフォルトグループを変更したくない場合は、たとえば別のグループを作成し、sudoers_without_passwordこの新しいグループを話すと、このグループだけがパスワードなしでsudoを実行できます。ただし、とにかくパスワードなしでパスワードを使用できるユーザーを作成するには、sudoパスワードなしでパスワードを使用できる必要があります。

長い答え

Chef、ansible、puppetなどのツールを使用してSSH公開鍵でのみログインできるパスワードなしでユーザーを作成することは、今日一般的な慣行であり、さまざまな理由で非常に良い慣行と見なすことができます(特にSSH鍵は非常に安全でパスワード管理は難しく安全ではありません。

今、すべてのユーザーを作成したので、いくつかの問題に固執しました。それらの中には少なくともsudoを使用する必要があり、多くのディストリビューションではsudoを使用するためのパスワードをお勧めします...しかし、ユーザーはそのような権限を持っていません。パスワード!

完璧な世界でしなければならないユーザーはSSHキーを使用して安全にログインし、パスワードを定義し(標準passwdコマンド付き)、sudoコマンドを使用できます。

残念ながら、私たちは完璧な世界に住んでおらず、ユーザーが新しいパスワードを設定しようとするとpasswd機能しません。

実際にははいこの場合、コマンドを動作させることは可能ですpasswdが、その意味が非常に悪い考えになります。

パスワードなしでユーザーを作成し、ユーザーが自分のパスワードを変更できるようにすることは完全に可能です。正解はこのマニュアルページ。 (とにかくやってはいけないので完全に説明しません。)

Linuxシステムには、2種類の「パスワードのない」ユーザーがいます。

  • 障害者ユーザー。これらのユーザーの!キューには通常、またはあります。何らかの理由で無効になっているユーザー*/etc/shadowまだ秘密鍵認証でSSHを使用するなどの方法でログインします(少なくともほとんどのデフォルトのSSHサーバー構成の場合)。障害者ユーザー許可されていませんパスワードを設定してください。
  • パスワードのないユーザーです。ユーザー行/etc/shadowにパスワードがありません。これらのユーザーは自分のパスワードを変更できます。

問題はパスワードのないユーザーです。非常に非常にだから落胆誰でもそれらとしてログインできます。一般に、OpenSSHはこれらのユーザーの1つとしてログインすることを拒否します(まだ問題ではありません)。

  • 他のユーザーは、suこのコマンドを使用してこのユーザーに切り替えることができます。ルートではなく、sudoグループに属していなくても
  • コンピュータに物理的にアクセスできる人は誰でもパスワードなしでユーザーとしてログインできます(コンピュータに画面、キーボード、マウスがあると仮定)。

そのため、パスワードのないユーザーアカウントを作成することはお勧めできません。通常、ほとんどの自動化ツールによってブロックされます。そのため、Chefを使用してユーザーを作成すると、パスワードのないユーザーの代わりに無効なユーザーが作成されます。他のほとんどの同様のツール(ansible、puppetなど)も同じことを行います。クリエイターがユーザーの足に銃を撃てたくないからです。

したがって、ユーザーが公開鍵を使用してSSHを使用してログインできるようにしたい場合は、障害のあるユーザーは後で自分でパスワードを作成できなくなっても同じです。

「Sudoでパスワードを使用する必要がありますか?」という質問に戻ると、この場合2つの矛盾するベストプラクティスがあります。

  • 一方、これらのユーザーは障害のある無効になっているユーザーはパスワードを変更できないため、パスワードを変更できません。私たちできる代わりに、パスワードのないユーザーを作成してください。しかし、これは以前に見たように深刻なセキュリティ問題を引き起こす。
  • 一方、ほとんどの人は、sudoユーザーがパスワードを入力せずに使用できるようにするのは悪い習慣だと思います(設定によっては、sudoにはパスワードの有無を許可することができます)。これは、不注意な管理者が誤ってsudoを使用してコマンドを入力して望ましくない結果をもたらす可能性があるためです。

これら2つのベストプラクティスは同時に従うことができないので、選択する必要があります。しかし、ここには強力な勝者がいます。つまり、パスワードのないユーザーを許可することは、パスワードのないsudoを許可するよりも危険です。

したがって、この場合は、sudoパスワードのないコマンドを許可するようにグループを構成するだけです。これは私が知っている限り他の解決策がないので、とにかく最善の方法です。

関連情報