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/sudoers
)visudo
。
これで、すべてのユーザーが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
パスワードのないコマンドを許可するようにグループを構成するだけです。これは私が知っている限り他の解決策がないので、とにかく最善の方法です。