システム間でのファイル転送、監視など、きめ細かな権限が必要な自動化タスク用に作成したユーザーアカウントがいくつかあります。
これらの「ユーザー」がシェルを持たず、ログインできないように、これらのユーザーアカウントをどのようにロックダウンしますか?これらのユーザーアカウントの1つとして誰かがSSHでログインできる可能性を回避したいと考えています。
usermod
コマンドを使用して、ユーザーのログインシェルを変更できます。
usermod -s /sbin/nologin myuser
または
usermod -s /usr/sbin/nologin myuser
OSが/ sbin/nologinを提供していない場合は、シェルを/ bin/falseなどのNOOPコマンドに設定できます。
usermod -s /bin/false myuser
ログインシェルを変更しても、必ずしもユーザーの認証が妨げられるわけではありません(ユーザーのシェルが/etc/shells
に記載されているかどうかを確認する一部のサービスを除く)。
人々は依然として、システムがUNIXユーザーに提供するさまざまなサービスに対して認証を行うことができ、おそらく任意のコマンドを直接実行しないとはいえ、いくつかのアクションを実行することを許可されている可能性があります。
シェルを/bin/false
または/usr/sbin/nologin
に変更すると、コマンドの実行に使用できるサービス(コンソールログイン、ssh、telnet、rlogin、rexec ...)でコマンドを実行できなくなるだけなので、影響しますauthorization一部のサービスのみ。
たとえば、ssh
の場合は、ポート転送を実行できます。
passwd -l
はパスワード認証を無効にしますが、ユーザーは他の認証方法(authorized_keys
とssh
など)の使用を許可される場合があります。
少なくともLinuxのpam
では、pam_shells
モジュールを使用して、許可されたシェル(/etc/shells
で言及されているもの)を持つユーザーの認証または承認を制限できます。 ssh
の場合は、認証(account
)レベルで認証を行う必要があります。sshd
はpam
を使用しますさらに =他の認証方法(authorized_keys
など)、またはsshd_config
の/etc/ssh/sshd_config
ディレクティブ(AllowUsers
など)で実行できます。
ただし、グローバルpam承認にいくつかの制限を追加すると、それらのユーザーとしてcron
ジョブを実行できなくなる可能性があることに注意してください。
/etc/passwd
ファイルを編集し、ユーザーのシェルを/bin/bash
または/bin/sh
から/sbin/nologin
に変更します
まず、passwd -l username
を使用してパスワードを無効にします。
オプション-l
のman
のpasswd
ページにも注意してください:
-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.
Chshコマンドを使用できます。
~# chsh myuser
要求されたら、新しいシェルの詳細を入力します。
Login Shell [/bin/sh]: /bin/nologin
または短いバージョン:
~# chsh myuser -s /bin/nologin
ユーザーがログに記録したり、ポート転送を有効にするsshを介した認証( here Stephaneで説明されている)を禁止したりすることを防ぐために、システムのnobody
ユーザーに類似するようにユーザーを変更します。
/etc/shadow
でブロックされたパスワード認証(適切なフィールドで*
または!!
を使用)/etc/passwd
で無効なシェル(たとえば、適切なフィールドで/sbin/nologin
)/etc/passwd
内の読み取り専用ホームディレクトリ(たとえば、適切なフィールドでの/
)