何千人ものユーザーの認証にLDAPを使用しています。ユーザーがアカウントを削除せずにログインできないようにするために採用してきた主な戦術は、LDAP属性「loginShell」を「/ bin/bash」ではなく「None」や「NA」などに変更することです。これは、ログインの試行時にユーザーに「アクセス許可が拒否されました」をスローします。 LDAPと「loginShell」を使用したこのセットアップがUNIX標準なのか、それともここの環境に固有のものなのかはわかりません。
私の質問は、これはアカウントを無効にしてユーザーがログインできなくなるための十分な手段ですか?ユーザーがまだログインできるホールや回避策はありますか?アカウントを無効にするために実行できる他の手順はありますか?
ユーザーのシェルを変更すると、ユーザーがログインしてシェルを起動しようとした場合に実行される内容が「確実に」変更されるだけです。それ自体がアクセスを無効にすることはありません。したがって、誰かがコマンドを実行するためにssh Host -t /bin/sh
を実行できる場合もあれば、このリポジトリを使用してftpまたはWebアプリを介してログインできる場合もあります。
ただし、アクセスを許可する前に有効なログインシェルを確認することで、これを機能させることができます。 LDAPフィルターを使用してこれを行うことができます。または、ほとんどのLinuxシステム(および他のいくつかのPAM対応UNIXバリアント)では、アクセスを許可する前にユーザーのシェルが/ etc/shellsにリストされているかどうかを確認するpam_shellsのようなものを使用できます。
従来、シェルベースのログインアクセスは、シェルを/ bin/falseに設定するか、/ bin/nologin(存在する場合)に設定することによって行われます。 pam_shellsまたはLDAPフィルターを使用すると、これらのソリューションは「ほとんど」無意味になります。ただし、/ bin/trueを/ etc/shellsに配置して、一部のユーザーがscpなどでアクセスできるようにしながら、シェルアクセスを阻止できるようにします。次に、それらを取得してはならないユーザーのために/ bin/falseを入力し、シェルを使用して切り替えを行うサービスでpam_shellsを使用します。
ほとんどの場合、LDAPを使用すると、アクセスを制御する属性を提供できます。 Linux pam_ldapでは、「pam_check_service_attr」オプションを使用すると、このユーザーが認証できる特定のPAMサービスを一覧表示できます(「authorizedService」属性を使用)。ホストベースのアクセス属性もあります。
しかし、実際には、あなたの質問に対する答えは、LDAPに接続しているソフトウェアの機能に非常に強く依存します。 :)