
パスワードのないルートユーザーを持つ Fedora VPS があります。SSH キーを使用してログインします。
そのサーバーには、Web 管理に使用する、権限の少ない別のアカウントがありました。そのパスワードも削除しました。
サーバーにパスワードを持つユーザーがいない場合、たとえば SSH キーを紛失すると、具体的に何が起こるのでしょうか? サーバーにログインする方法がないため、サーバーは永久に使用できなくなるのでしょうか?
また、sudo
ルートも呼び出し元ユーザーもパスワードを持っていない場合、プログラムはどのように動作するのでしょうか? 試してみたところ、パスワードを尋ねられることすらありませんでした。sudoersuser ALL=(ALL) ALL
ファイルにその行があるため、そのまま動作しました (変更したほうがよいでしょうか?)
答え1
ファイルの 2 番目のフィールドを削除すると/etc/passwd
、ユーザーは何のチャレンジも受けずにログインできます。ログインを試みるだけで、ユーザーはログインを許可されます。したがって、このようなことはおそらく望ましくないでしょう。
root:$1$iM/2lekk$rXUAcF5fY8ddLL.B1bkH63:12242:0:99999:7:::
/etc/passwd 入門
- ユーザー名: ユーザーがログインするときに使用されます。長さは 1 文字から 32 文字にする必要があります。
- パスワード: x 文字は、暗号化されたパスワードが /etc/shadow ファイルに保存されていることを示します。
- ユーザー ID (UID): 各ユーザーにはユーザー ID (UID) を割り当てる必要があります。UID 0 (ゼロ) はルート用に予約されており、UID 1 ~ 99 はその他の定義済みアカウント用に予約されています。さらに、UID 100 ~ 999 はシステムによって管理者およびシステム アカウント/グループ用に予約されています。
- グループID (GID): プライマリグループID (/etc/group ファイルに保存)
- ユーザー ID 情報: コメント フィールド。ユーザーのフルネーム、電話番号など、ユーザーに関する追加情報を追加できます。このフィールドは、finger コマンドによって使用されます。
- ホームディレクトリ: ユーザーがログインしたときのディレクトリへの絶対パス。このディレクトリが存在しない場合は、ユーザーディレクトリは / になります。
- コマンド/シェル: コマンドまたはシェルの絶対パス (/bin/bash)。通常、これはシェルです。シェルである必要はないことに注意してください。
パスワードログインを無効にする
このフィールドが空白で x ( :x:
) が含まれていることと、ファイル:!:
内にが含まれていることの間には微妙な違いがあります/etc/shadow
。これは、アカウントが意図的にログインできないように設定されていることを意味し、おそらくこれがあなたが求めているものです。
/etc/シャドウ
root:!:15669:0:99999:7:::
ssh
同じことはどのアカウントに対しても実行できますが、公開キー/秘密キーを使用したログインのみを許可したい場合は、おそらくこの方法をお勧めします。
その他の質問
サーバーにパスワードを持つユーザーがいない場合、たとえば SSH キーを紛失すると、具体的に何が起こるのでしょうか? サーバーにログインする方法がないため、サーバーは永久に使用できなくなるのでしょうか?
サーバーに物理的にアクセスできる限り、いつでもシステムにアクセスできます。再起動が必要で、VPS を使用すると少し難しいかもしれませんが、おそらく可能です。
通常、システムをシングル ユーザー モードで起動し、その時点で必要に応じて/etc/passwd
&ファイルを編集できます。/etc/shadow
また、ルートも呼び出し元ユーザーもパスワードを持っていない場合、sudo プログラムはどのように動作するのでしょうか? 試してみたところ、パスワードを尋ねられることすらありませんでした。sudoers ファイルに user ALL=(ALL) ALL 行があるため、そのまま動作しました (これを変更する必要がありますか?)
はい、パスワードなしでは使用がsudo
難しくなります。 を扱う際に他のソースを使用する方法がありますsudo
。次の U&L Q&A を参照してください。ログインパスワードとは異なるsudoパスワードを設定する。
答え2
「パスワードの削除」と呼ばれるものがいくつかあることに注意してください。Linux の場合:
passwd -d USER
パスワードなしでログインできるようにアカウントを設定します。(一部のサービス、特に ssh は、この場合ログインをブロックするように設定される傾向があります。)passwd -l USER
アカウントのパスワードをロックします。パスワードは受け入れられません。SSH キーや sudo などの他の手段でログインすることは可能です。`usermod -e 1 USER
アカウントをロックします(パスワードの有効期限を過去の日付に設定することにより):どのサービス経由でもこのアカウントにログインできなくなります。
2 番目の意味を指していると思います。つまり、これらのアカウントはパスワードではログインできないようにしましたが、キーを使用した ssh または sudo 経由ではアクセス可能になっています。
アカウントのパスワードを無効にした場合、sudo は使用できなくなります。猶予期間があり、その間は sudo はパスワードを再度要求しません。その後は、デフォルト設定を通常とは異なる方法で変更しない限り、sudo はパスワードを要求しますが、パスワードがなくなるため入力できなくなります。これは、タグ付きの sudoers ルールには適用されませんNOPASSWD
。
パスワードを削除しても、強力なパスワードを選択する場合よりもシステムのセキュリティが強化されるわけではありません。VPS が仮想コンソールでログインする方法を提供している場合は、ルート アカウント用に長くてランダムなパスワードを生成し、それが機能することをテストし、それを印刷して金庫に保管してください。こうすることで、何か問題が発生した場合 (「おっと、ssh からロックアウトされた」または「おっと、sudo からロックアウトされた」など)、システムへのアクセスを回復する方法が得られます。アカウントには、記憶できる短いパスワードを選択し、SSH ログインのパスワードを無効にして (オプション)、パスワードを入力してsudo
ルートになります。通常のアカウントからルートへの認証レベルを追加すると便利です。これは、非ルート アカウントに検出されないトロイの木馬を仕掛けることがはるかに困難になるためです。
答え3
ほとんどの場合、パスワードを設定しなくても問題ありません。
はい、SSH キーによる認証のみを許可し、SSH キーを紛失した場合、ログインできなくなります。この場合、たとえばライブ CD を起動し、元のシステムをマウントして、ルート パスワードを追加することができます。(このようなオプションがない場合は、念のためルート パスワードを用意しておく方がよいでしょう。)
Sudo はパスワードを尋ねないように設定できます。NOPASSWD:
これを有効にするオプションがあります。( を参照してくださいman sudoers
。)
認証には他にも多くの方法があります。設定することで有効にすることができます。パムシステム。