注: SUDOers LDAP はアドオン機能です
Foxpass を使用すると、LDAP インターフェイスを介して SUDOer 構成を管理できます。通常、Foxpass では、特定のユーザーがホストで sudo を使用できるようになっています。この機能を使用すると、sudo コマンドとオプションをホスト上のユーザーまたはグループに制限または許可できます。
LDAP SUDOer エントリは、7 つの異なる属性で構成されます。
- ルールが適用されるユーザー (またはグループ)
- ルールが適用されるホスト
- 実行できるコマンドと実行できないコマンド
- 環境固有のオプション
- コマンドの「実行」が許可または禁止されているユーザーまたはグループ
- エントリが有効な場合のオプションの開始時間または終了時間
- 競合するルールがある場合にどのエントリが優先されるかを確立する「順序」値
SUDOers の詳細、および通常の SUDOers 構成と LDAP 構成の違いについては、以下のリンクを参照してください:
https://www.sudo.ws/man/1.8.17/sudoers.man.html
https://www .sudo.ws/man/1.8.17/sudoers.ldap.man.html
通常の SUDOers ファイルと LDAP SUDOers エントリの最大の違いは、LDAP では順序が保証されないことです。「順序」値を指定することにより、LDAP で順序を設定できます。順序はデフォルトで 0 で、数値が大きいほど優先されます。
さらに、すべてのユーザーに適用されるデフォルト オプションを設定するための「デフォルト」セクションがあります。「デフォルト」セクションの変数は、すべてのユーザーにグローバルに適用されます。
「SUDOer Default」セクションで、グローバルに適用するデフォルトの SUDO オプションを入力します。
いくつかの一般的なオプションのリストを次に示します:
https://www.sudo.ws/man/1.8.17/sudoers.man.html#SUDOERS_OPTIONS
SUDOer のデフォルト
たとえば、上の図のデフォルトでは、sudo アクセス権を持つすべてのユーザーがパスワードを使用せずにコマンドを実行できます。
エントリを作成し、名前を付けます。デフォルトでは、少なくともすべての SUDOer エントリは、単一または一連のユーザー (またはグループ)、エントリが適用されるホスト、および実行できるコマンドを指定する必要があります。そのタイプのエントリをすべて削除しようとすると、デフォルトの「ALL」が設定されます。
注: SUDOer エントリは静的であり、動的ではありません
これは、Foxpass でユーザー名またはグループ名を変更した場合、SUDOer エントリを手動で更新する必要があることを意味します。
デフォルトの SUDOer エントリ
3. エントリを構成する
さまざまなフィールドに設定を追加して、SUDOer エントリを構成します。有効/無効フラグは、「!」を追加するのと同じです。設定の前に。
オプションなどの複雑な変数の場合は、必ず文字列全体を入力してください。たとえば、SSH_AUTH_SOCK 変数を保持したい場合は、この 'env_keep+=SSH_AUTH_SOCK' を入力します。
SUDOerエントリー
上記のエントリにより、ユーザー「richard」を除く「security」グループのすべてのメンバーが、任意のホストで ls および cd コマンドを実行できるようになります。
UbuntuでのSUDOersの設定またはCentOSでのSUDOersの設定のオペレーティング システムの手順に従って、SUDOer オプションを使用するようにホストの 1 つを設定します。
注: SUDOers LDAP はアドオン機能です
Ubuntu 18.04設定ページ (またはそれぞれの Ubuntu バージョンのページ)の指示に従って、Foxpass をインストールし、ホストで動作させます。
次のコマンドを実行して、「sudo-ldap」パッケージをインストールします。
root パスワードの設定を求めるエラーが表示され、コマンドが失敗する場合があります。その場合は、次のコマンドを実行して、新しいルート パスワードを設定します。
次に、apt-get
コマンドを再実行し、sudo-ldap
をインストールします。
/etc/sudo-ldap.conf
ファイルを開いて、例のように編集します。独自のバインダー情報を入力し、会社のベース DN を使用するようにsudoers_base
変数を変更する必要があります。タイムアウト、デバッグ情報、時間指定された SUDOer ルールのサポートなど、ファイルで変更できるその他の設定がいくつかあります。
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
URI ldaps://ldap.foxpass.com
BINDDN cn=sudo-binder,dc=example,dc=com
BINDPW xxxxxxx
# The amount of time, in seconds, to wait while trying to connect to
# an LDAP server.
bind_timelimit 30
#
# The amount of time, in seconds, to wait while performing an LDAP query.
timelimit 30
#
# Must be set or sudo will ignore LDAP; may be specified multiple times.
sudoers_base ou=SUDOers,dc=example,dc=com
#
# verbose sudoers matching from ldap
sudoers_debug 0
#
# Enable support for time-based entries in sudoers.
sudoers_timed yes
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
# TLS certificates (needed for GnuTLS)
TLS_CACERT /etc/ssl/certs/ca-certificates.crt
SUDOer で使用する新しいバインダーを作成するか、古いバインダーを再利用できます。このファイルをコピーするときは、sudoers_base エントリに会社の情報と、BINDDN および BINDPW の SUDOer バインダー情報を必ず入力してください。
さらに、LDAP リクエストのタイムアウトを変更したり、「Not Before/After」SUDOer 機能を有効または無効にしたりできます。
nsswitch.conf ファイルに sudoers のエントリを追加します。デフォルトの Foxpassの設定では、「foxpass-sudo」グループのすべてのユーザーが、パスワードなしで任意の sudo コマンドを実行できます。nsswitch sudoers エントリに変数files
を含めることで、このデフォルトを含めることができます。
LDAP ルールをローカルのデフォルトよりも優先する場合は、以下に示すように「ldap」の前に「files」を置きます。
sudoers: files ldap
...
注:ldap しか入力しない場合は、SUDOers の接続が正しく行われていることを確認してください。SUDOersのLDAP接続の設定が間違っていると、ファイルの編集からロックアウトされ、設定を修正できなくなる可能性があります。
sudo -l を呼び出すと、サインインしているユーザーの現在の設定が表示されます。Foxpassユーザーとしてサインインしている場合は、FoxpassのSUDOers情報が反映されているはずです。マシンのアカウントでサインインしている場合は、マシンからログアウトしてFoxpassのユーザーでログインし直します。
LDAP SUDOer ルールがローカルルールより優先されるように設定されている場合、sudo -l コマンドを実行すると、ローカルルール(デフォルトでは (ALL : ALL) NOPASSWD : ALL)の下に LDAP ルールが表示されるはずです。
LDAPエラーが表示される場合は、sudo-ldap.confファイルでsudoers_debugの値を1または2に変更します。そうすると、sudo の操作中に LDAP 接続から接続や解析のエラーが出力され、デバッグの際に役に立ちます。
注: SUDOers LDAP はアドオン機能です
CentOS 7設定ページの指示に従って、Foxpass をホストにインストールして動作させます。
etc/openldap/ldap.conf ファイルを開き、編集します。
SUDOERS_BASE ou=SUDOers,dc=example,dc=com の行を追加し、自分の組織の dn を代入します。
URI ldaps://ldap.foxpass.com
BASE dc=example,dc=com
SUDOERS_BASE ou=SUDOers,dc=example,dc=com
...
/etc/ssd/sssd.confファイルを編集用に開き、以下の3行を追加します。
- ldap_sudo_search_base ou=SUDOers,dc=<example>,dc=comを追加します。
- sssd サービスに sudo を追加する
- [sudo] セクションを追加
- (オプション) SUDOers の "Not Before/After" タイムバウンド機能を使用したい場合は、 sudo_timed = true オプションを追加します。
- (オプション) sudoの更新間隔をデフォルトから変更するためにldap_sudo_full_refresh_intervalとldap_sudo_smart_refresh_interval値を設定する。
完全な手順については、https ://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/sssd-ldap-sudo を参照してください。
...
ldap_search_base = dc=example,dc=com
ldap_sudo_search_base = ou=SUDOers,dc=example,dc=com
ldap_sudo_full_refresh_interval = 21600 # optional: in minutes, default is 6 hours
ldap_sudo_smart_refresh_interval = 900 # optional: in minutes, default is 15 minutes
...
...
[sssd]
services = nss, pam, autofs, sudo
...
...
[sudo]
sudo_timed = true # optional
...
/etc/nsswitch.confファイルを開いて編集します。
sudoers: files sss.という行を追加します。
sudoers: files sss
...
この行は、ローカルの sudo ファイルがリモートの LDAP sudo ルールよりも優先されることを意味します。LDAP 接続の構成を誤ると sudo ロックアウトが発生する可能性があるため、通常はこの順序を維持することをお勧めします。
設定を有効にするために、sssd サービスを再起動します。
sudo -l を実行すると、サインインしているユーザーの現在の設定が表示されます。Foxpassユーザーとしてサインインしている場合は、FoxpassのSUDOers情報が反映されているはずです。マシンやローカルアカウントでサインインしている場合は、マシンからログアウトしてFoxpassのユーザーでログインし直してください。
Ubuntu とは異なり、Centos は、必要に応じて LDAP サーバーから要求する代わりに、リモート sudo ルールをキャッシュします。このようにして、LDAP が停止した場合でも sudo は引き続き機能し、キャッシュ内の sudo ルールを使用し続けることができます。
ホストは、2 つの別々のスケジュールで LDAP をポーリングします。デフォルトでは、15 分ごとにスマート リフレッシュして、作成または更新されたルールを確認します。また、作成、更新、および削除されたすべてのルールを 6 時間ごとに完全に更新してプルします。このため、最大 15 分後まで Foxpass の変更がホストに反映されません。
別の値 (分単位) を指定することにより、ステップ 3 でリフレッシュ時間を変更できます。スマート リフレッシュの値は、フル リフレッシュの値よりも低くなければならないことに注意してください。現時点では、Foxpass は、変更されたルールだけでなく、スマート リフレッシュ中にすべてのルールを返します。今後は、変更されたルールのみを返すことを目指しています。
キャッシュの更新を待ちたくない場合は、sss_cache -R を実行して sssd から sudo ルールキャッシュをクリアすることができます。
sss_cache -R を実行して、sssd から sudo ルールキャッシュを消去してください。