場合によっては、パスワードのないサーバーが好きであることを認めなければなりません。一般的なサーバーは、物理的にアクセスできるすべてのユーザーに対して脆弱です。そのため、場合によっては物理的にロックしてから、物理的なアクセスを信頼することが実用的です。
基本概念
理論的には、このようなサーバーに物理的にアクセスする場合root
、ログインとして入力するだけでパスワードなしで管理タスクを実行でき、パスワードを要求されることはありません。同じことがユーザーアカウントにも当てはまりますが、実際には物理的にアクセスすることはありません。したがって、(時々)ローカルアクセスにシステムパスワードは必要ありません。
管理またはユーザーアカウントのいずれかでサーバーにリモートでアクセスする場合、常にSSH秘密キーを使用することを期待しています。作成したばかりのアカウントにSSHキーを設定するのは非常に簡単なので、(通常の)リモートアクセスにシステムパスワードは必要ありません。
# user=...
#
# useradd -m "$user"
# sudo -i -u "$user"
$ keyurl=...
$
$ mkdir -p .ssh
$ curl -o .ssh/authorized_keys "$keyurl"
結論は理論的には、我々はneeedいないだろう、ということですどのようなユースケースのためのシステムパスワードを。そこで問題は、システムとユーザーアカウントをどのように構成して、それを一貫性のある安全な方法で実現するかです。
ローカルアクセスの詳細
パスワードなしでrootアカウントにローカルにアクセスできるようにするにはどうすればよいですか?passwd -d
ルートアクセスを許可しすぎて、権限のないユーザーが無料でルートに切り替えることができるため、使用できないと思います。これは間違っています。passwd -l
ログインできないため使用できません。
ローカルアクセスは、ローカルキーボードを使用したアクセスのみに関することに注意してください。したがって、有効なソリューションでは、ユーザーの切り替えを許可してはなりません(su
またはを使用sudo
)。
リモートアクセスの詳細
最近まで上記のソリューションは機能していましたが、SSHはロックされたユーザーアカウントのチェックを開始しました。passwd -d
同じ理由で使用できない可能性があります。それがpasswd -u
何をもたらすのか不平を言っているだけなので、私たちは使用できませんpasswd -d
。
この部分にダミーのパスワードを使用する回避策があります。
user=...
echo -ne "$user:`pwgen 16`\n" | chpasswd
SSHでロックされたアカウントチェックを完全にオフにすることも可能かもしれませんが、ロックされたアカウントのサポートを保持し、それらのロックを解除できる方がよいでしょう。
最終ノート
私が興味を持っているのは、パスワードなしで、ローカルアカウントと、rootを含むすべてのアカウントにリモートでログインできるソリューションです。一方、ソリューションは、特にリモートユーザーがルートアカウントまたは他のユーザーのアカウントにアクセスできるようにすることによって、明示的に説明されている方法を除き、セキュリティに影響を与えてはなりません。ソリューションは、間接的にセキュリティ問題を引き起こさないように、十分に堅牢でなければなりません。
承認されて授与された回答には、個々のツールの詳細な構成が記載されている場合とされていない場合がありますが、記載された目標を達成するための重要なポイントを含める必要があります。これはおそらくのようなツールの従来の使用では解決できないことに注意してくださいpasswd
、ssh
、su
、sudo
などが挙げられます。
最初の回答を読んだ後のアイデア
アイデア-ローカルルートアクセスは、ログインプロセスの代わりにルートシェルを起動することで実現できます。ただし、公開鍵認証ではなく、パスワード認証のみをロックする必要があります。