Linuxで、
「rootユーザーにパスワードを設定しない
=rootで直接ログインさせない」
方法があります。
AWSのLinuxとかでは実装います。
レジュメ
環境・前提条件
AWS上の
- Redhat 8
- Amazon Linux 2
環境でこちらの記事は確認しています。
結論、rootユーザーのパスワードを未設定(ロックする)コマンドは
前置きが長くなりましたが、rootユーザーのパスワード未設定(ロック)するコマンドは、
passwd -l root
で、出来ます。「パスワード設定無し」というよりもパスワード「ロック」という表現ですね。
Linuxでrootのパスワードなし(パスワード未設定状態)とは
AWS上のLinuxはデフォルトでrootユーザーはパスワード未設定(ロックされた状態)で提供されます。
なので、rootユーザーのパスワード未設定は意外と普通にあります。
以下、AWS上のLinuxのデフォルトで提供されたrootユーザーパスワード状態です。
- Redhat 8
- Amazon Linux
/etc/shadow ファイル内のrootパスワードフィールドが、「!」もしくは「*」で記載されています。
これは、rootユーザーに(他のデーモンユーザーと同じく)パスワードを未設定状態にしているということを意味します。
※ 通常は暗号化(crypt)されたパスワードが入る箇所です。
shadowファイルのパスワードフィールドが「!」または「*」記載の意味
上記画面は、shadowファイルのman(マニュアル)です。
shadowsファイルのパスワードフィードの箇所に、
If the password field contains some string that is not a valid result of crypt(3), for instance ! or *, the user will not be able to use a unix password to log in (but the user may log in thesystem by other means).
日本語に訳しますと、
「パスワードフィールドに無効な文字列が含まれている場合
たとえば、crypt(3)の結果!または*、
ユーザーはUNIXパスワードを使用してログインすることはできません(ただし、ユーザーは他の方法でシステムにログインできます)。」
ということです。
実は、
cryptのハッシュでは使用されない文字があります。
ハッシュ化されたパスフレーズは、空白や文字「:」、「;」、「*」、「!」、または「\」は含まれないんです。
パスワード未設定状態ではrootユーザーでsshログイン出来ないの?(キーペア)
ちなみに、
AWS Redhat8ではキーペアでsshログイン出来るようになっていましたが、ログインしてもメッセージを表示させプロンプトが閉じる(exit)ようになっていました。
上の画面を見ますと、
echo 'Please login as the user \"ec2-user\" rather than the user \"root\".';
echo;
sleep 10;
exit 142
と書かれていることがわかりますね。
rootユーザーのパスワードを未設定(ロックする)を解除するコマンドは
passwd root
コマンドで再度パスワードを設定してあげる事も出来ます。
また、この状態で、
passwd -l root
コマンドでrootユーザーのパスワードをロックして、
passwd -u root
コマンドでrootユーザーのパスワードを復活(ロック解除だけ)することも出来ます。