web-dev-qa-db-ja.com

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

システム間でのファイル転送、監視など、きめ細かな権限が必要な自動化タスク用に作成したユーザーアカウントがいくつかあります。

これらの「ユーザー」がシェルを持たず、ログインできないように、これらのユーザーアカウントをどのようにロックダウンしますか?これらのユーザーアカウントの1つとして誰かがSSHでログインできる可能性を回避したいと考えています。

64
Suman

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

usermod -s /sbin/nologin myuser

または

usermod -s /usr/sbin/nologin myuser

OSが/ sbin/nologinを提供していない場合は、シェルを/ bin/falseなどのNOOPコマンドに設定できます。

usermod -s /bin/false myuser
69
jordanm

ログインシェルを変更しても、必ずしもユーザーの認証が妨げられるわけではありません(ユーザーのシェルが/etc/shellsに記載されているかどうかを確認する一部のサービスを除く)。

人々は依然として、システムがUNIXユーザーに提供するさまざまなサービスに対して認証を行うことができ、おそらく任意のコマンドを直接実行しないとはいえ、いくつかのアクションを実行することを許可されている可能性があります。

シェルを/bin/falseまたは/usr/sbin/nologinに変更すると、コマンドの実行に使用できるサービス(コンソールログイン、ssh、telnet、rlogin、rexec ...)でコマンドを実行できなくなるだけなので、影響しますauthorization一部のサービスのみ。

たとえば、sshの場合は、ポート転送を実行できます。

passwd -lはパスワード認証を無効にしますが、ユーザーは他の認証方法(authorized_keyssshなど)の使用を許可される場合があります。

少なくともLinuxのpamでは、pam_shellsモジュールを使用して、許可されたシェル(/etc/shellsで言及されているもの)を持つユーザーの認証または承認を制限できます。 sshの場合は、認証(account)レベルで認証を行う必要があります。sshdpamを使用しますさらに =他の認証方法(authorized_keysなど)、またはsshd_config/etc/ssh/sshd_configディレクティブ(AllowUsersなど)で実行できます。

ただし、グローバルpam承認にいくつかの制限を追加すると、それらのユーザーとしてcronジョブを実行できなくなる可能性があることに注意してください。

22

/etc/passwdファイルを編集し、ユーザーのシェルを/bin/bashまたは/bin/shから/sbin/nologinに変更します

4
Mark Cohen

まず、passwd -l usernameを使用してパスワードを無効にします。

オプション-lmanpasswdページにも注意してください:

   -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
mdpc

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

~# chsh myuser

要求されたら、新しいシェルの詳細を入力します。

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

または短いバージョン:

~# chsh myuser -s /bin/nologin
2
Let'sTalk

ユーザーがログに記録したり、ポート転送を有効にするsshを介した認証( here Stephaneで説明されている)を禁止したりすることを防ぐために、システムのnobodyユーザーに類似するようにユーザーを変更します。

  • /etc/shadowでブロックされたパスワード認証(適切なフィールドで*または!!を使用)
  • /etc/passwdで無効なシェル(たとえば、適切なフィールドで/sbin/nologin
  • /etc/passwd内の読み取り専用ホームディレクトリ(たとえば、適切なフィールドでの/
1
keypress