セキュリティ上の理由でユーザーシェルを無効にする

セキュリティ上の理由でユーザーシェルを無効にする

システム間のファイル転送、監視など、きめ細かい権限を必要とする自動化されたタスク用に複数のユーザーアカウントを作成しました。

これらの「ユーザー」がシェルを持たずにログインできないように、これらのユーザーアカウントをどのようにロックできますか?誰かがSSH経由でこれらのユーザーアカウントの1つとしてログインするのを防ぎたいと思います。

答え1

usermodこのコマンドを使用して、ユーザーのログインシェルを変更できます。

usermod -s /sbin/nologin myuser

または

usermod -s /usr/sbin/nologin myuser

オペレーティングシステムが/sbin/nologinを提供していない場合は、シェルを/bin/falseなどのNOOPコマンドで設定できます。

usermod -s /bin/false myuser

答え2

ログインシェルを変更しても必ずしもユーザー認証がブロックされるわけではありません(一部のチェックでユーザーシェルが言及されるサービスを除く/etc/shells)。

人々はまだシステムがUNIXユーザーに提供するさまざまなサービスに対して認証を受けることができます。

シェルを変更したり、シェル/bin/false/usr/sbin/nologin実行したりするために使用できるサービス(コンソールログイン、ssh、telnet、rlogin、rexec...)でコマンドを実行しないようにすることで影響を受けます。承認する特定のサービスにのみ使用できます。

これにより、まだポート転送(例ssh:。

passwd -lパスワード認証は無効になりますが、ユーザーはまだ他の認証方法(たとえば)を使用できauthorized_keysますssh

pam少なくともLinuxでは、このモジュールを使用して、許可されpam_shellsたシェル(参考資料に記載されているシェル)を使用しているユーザーに認証または許可を制限できます/etc/shells。認証するには、ssh認証()レベルでこれを行う必要があります。accountsshdpam また他の認証方法(たとえば)に接続するかauthorized_keys(たとえば、友達など)sshd_configの指示を使用してこれを実行できます。/etc/ssh/sshd_configAllowUsers

ただし、グローバル pam 認証にいくつかの制限を追加すると、cronこれらのユーザーでタスクが実行されないことがあります。

答え3

まず、無効なパスワードを使用してくださいpasswd -l username

manforオプションのページも参照してください。passwd-l

   -l, --lock
       Lock the password of the named account. This option disables a password by changing it to a value which matches no
       possible encrypted value (it adds a ´!´ at the beginning of the password).

       Note that this does not disable the account. The user may still be able to login using another authentication token
       (e.g. an SSH key). To disable the account, administrators should use usermod --expiredate 1 (this set the account's
       expire date to Jan 2, 1970).

       Users with a locked password are not allowed to change their password.

答え4

chsh コマンドを使用できます。

~# chsh myuser

必要に応じて新しいシェルの詳細を入力します。

Login Shell [/bin/sh]: /bin/nologin

またはより短いバージョン:

~# chsh myuser -s /bin/nologin

関連情報