Linux
 Computer >> コンピューター >  >> システム >> Linux

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

この記事では、Kerberosを使用したActiveDirectoryでのZabbix4.0(またはそれ以降)の透過的なSSO(シングルサインオン)認証の段階的な構成について検討します。

その結果、ユーザーはクレデンシャルを入力せずにZabbixフロントページで自動的に認証されます。これを行うには、ユーザーはZabbixで指定されたActiveDirectoryドメインアカウントでWindowsにログインする必要があります。さらに、ユーザーはブラウザーを構成する必要があります(Kerberosサポートを有効にし、信頼できるイントラネットサイトをIEで設定する必要があります)。

ショーケース:

  • Ubuntu Server 18.04 LTS;
  • 機能レベル2008(またはそれ以上)のActiveDirectoryドメイン
  • Zabbix Server 4.0.11、WebサーバーとしてのApache2(Zabbixインストールのガイド)
。 SSOを実装するには、 libapache2-mod-auth-kerbを使用したApache2 この記事ではモジュールを使用します。 Nginxについてはここでは説明しませんが、 spnego-http-auth-nginx-moduleがあります Nginxをコンパイルするときに個別に有効にする必要があります。

ActiveDirectoryでのZabbixLDAP認証

まず、ドメインユーザーをZabbixにバインドする必要があります。これを行うには、ADドメインと同じログインでZabbixにユーザーを作成するだけで十分です。たとえば、ログイン(sAMAccountName属性)がuser_5の場合、Zabbixのユーザーは同じログインを持っている必要があります。

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

Zabbixを使用するユーザーごとに実行します。

次に、Active Directoryに別のユーザーアカウントを作成して、Zabbixをドメインにバインドします。実際には、任意のドメインアカウントを使用できますが、別のサービスアカウントを作成することをお勧めします。私の場合、 zabbix_adminになります 。 ADでユーザーを作成するには、PowerShellコマンドレットNew-ADUserを使用します:

New-ADUser -Name "zabbix_admin" -GivenName "zabbix_admin" -Surname "zabbix_admin" -SamAccountName "zabbix_admin" -AccountPassword(Read-Host -AsSecureString "Password:")-DisplayName "zabbix_admin" -Enabled $ true

PowerShellコンソールで上記のコマンドを実行し、ユーザーパスワードを設定します。新しいユーザーは、ドメインのルートのユーザーコンテナの下に配置されます。

ZabbixでLDAP認証を設定しましょう。 Zabbixフロントエンドで、管理の[LDAP設定]タブに移動します ->認証LDAP認証を有効にするをオンにします 次のフィールドに入力します:

  • LDAPホスト: ldap://dc1.domain.local
  • ポート: 389
  • ベースDN: DC =domain、DC =local
  • 検索属性: sAMAccountName
  • バインドDN: CN =zabbix_admin、OU =Users、DC =domain、DC =local

LDAP認証のパラメータの説明を読むことができます Zabbixドキュメントのセクション:https://www.zabbix.com/documentation/current/manual/web_interface/frontend_sections/administration/authentication。

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

構成を完了する前に、テストログイン(テスト)を実行して、設定が有効であることを確認してください。 ボタン)。ユーザー名(以前にアカウントを作成しました)とADパスワードを指定します。
Zabbix:Active Directoryでのシングルサインオン(SSO)認証

テストが成功した場合は、設定を保存し、Zabbixの認証タイプを内部から LDAPに変更します 。

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

HTTP認証を有効にする(HTTP設定->HTTP認証を有効にする

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

LDAP認証が構成されています。

ヒント 。 LDAPサーバーが利用できない場合、Zabbixにアクセスできなくなります。内部認証に戻るには、MySQLを開き、次のコマンドを実行します。

update zabbix.config set authentication_type ='0' where configid ='1';

Zabbix(Apache2、krb5-user)で透過的な(シングルサインオン)認証を構成する

まず、ドメインのDNSレコードと一致する必要があるサーバーのFQDN名を/ etc/hostnameに指定します。私の場合、それは zabbix.domain.local

また、ローカルIPアドレスとサーバーのIPアドレスのサーバーのFQDNを/ etc/hostsに書き込みます。

127.0.0.1 localhost zabbix.domain.local
10.1.1.10 zabbix.domain.local

Kerberos認証が正しく機能するようにするには、ドメインコントローラーと時刻を同期します。 ntpdateをインストールします パッケージ化してドメインコントローラーにバインドします。

apt-get install ntp ntpdate
ntpdate dc.domain.local

Chronyは、CentOS8で時刻を同期するために使用されます。ntp およびntpdate パッケージは公式リポジトリでは利用できません。

次に、ドメインコントローラーでキータブファイルを生成する必要があります。 キータブ SPNと暗号化されたキーを含むファイルです。 KeytabはKerberosベースの認証に使用されます。

  • ドメインコントローラーにログインし、管理者としてコマンドプロンプトを実行します。 C:\に移動します。
  • 次のように入力します:
    ktpass -princ HTTP / zabbix.domain.local @ DOMAIN.LOCAL -mapuser zabbix_admin -pass STRONGPASS -crypto ALL -ptype KRB5_NT_PRINCIPAL -out zabbix.keytab -setupn –setpass
  • C:\zabbix.keytabファイルをZabbixサーバーの/etc /apache2/ディレクトリにコピーします。

Kerberosパッケージとapache2用のモジュールをインストールします:

#apt install krb5-user libapache2-mod-auth-kerb

krb5-userを設定します。 /etc/krb5.cnfを編集します :

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = DOMAIN.LOCAL
default_keytab_name = /etc/apache2/zabbix.keytab
dns_lookup_kdc = false
dns_lookup_realm = false
forwardable = true
ticket_lifetime = 24h
[realms]
DOMAIN.LOCAL = {
kdc = dc.domain.local
default_domain = DOMAIN.LOCAL
admin_server = dc.domain.local
}
[domain_realm]
.domain.local = DOMAIN.LOCAL
domain.local = DOMAIN.LOCAL

ドメインを指定します。ドメイン名が大文字で書かれている場所もありますが、このルールに従ってください。

。キータブファイルパス「default_keytab_name=/etc/apache2/zabbix.keytab」を含む行を見て、ファイルがそこで利用可能であることを確認します。 www-dataの読み取り権限を付与し、次を実行します: chown www-data:www-data /etc/apache2/zabbix.keytab

LinuxでKerberos認証が機能していることを確認してください:

kinit -kV -p HTTP / zabbix.domain.local –t /etc/apache2/zabbix.keytab

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

このエラーが表示される場合があります:

kinit: Client 'HTTP/zabbix.domain.local@DOMAIN.LOCAL’ not found in Kerberos database while getting initial credentials

この場合、別のユーザーの資格情報を使用して認証してみてください:

kinit -pV LOGIN

認証が成功した場合、問題はキータブファイルにあります。正しく生成されていることを確認してください。キータブファイルを作成するための正しいコマンドを入力したかどうかを確認してください。

ZabbixサービスアカウントのSPNレコードがADに存在することを確認してください。ドメインコントローラで次のコマンドを入力します。

setspn -l zabbix_admin

このようなメッセージが表示されます。 HTTP/zabbix.domain.local形式である必要があります。レコードがない場合は追加します。

setspn -a HTTP / zabbix.domain.local zabbix_admin

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

ユーザーのログイン名がHTTP/zabbix.domain.localに変更されていることを確認してください。

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

変更されていない場合は、手動で変更してください。

次に、apache2構成ファイル(/etc/apache2/sites-available/000-default.conf)を編集します。

ServerNamezabbix.domain.local行の下に以下を追加します。

<Location />
AuthType Kerberos
AuthName "Kerberos authenticated"
KrbAuthRealms DOMAIN.LOCAL
#KrbServiceName HTTP/zabbix.domain.local
KrbServiceName Any
Krb5Keytab /etc/apache2/zabbix.keytab
KrbMethodNegotiate On
KrbSaveCredentials on
KrbLocalUserMapping on
Require valid-user
</Location>

KrbServiceNameがkeytabファイルで指定された名前と一致しない場合、エラーが発生します。したがって、任意を設定できます テスト中の値。システムが機能していることを確認した後、有効なサービス名を指定してください。次のコマンドを使用して確認できます:
klist -le /etc/apache2/zabbix.keytab

Kerberos認証用にブラウザを設定する方法

Internet ExplorerがZabbixでKerberos認証を使用するには、そのURLをローカルイントラネットに追加する必要があります。 サイト。 GoogleChromeはInternetExplorerの設定を使用するため、個別に構成する必要はありません。

。 ZabbixサイトのURLは、信頼済みサイトのリストに含まれていてはなりません。含まれていないと、Kerberosが機能しません。サイトはイントラネットサイトでのみ指定する必要があります。

[オプション]->[IEのセキュリティ]を開きます。

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

サイトをクリックします ローカルイントラネットで、下のスクリーンショットに示されているオプションを確認し、[詳細設定]をクリックします。

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

ZabbixサーバーのURLを入力します。

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

詳細に移動します タブをクリックし、統合Windows認証を有効にするをオンにします 。

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

また、グループポリシーを使用してZabbix URLをローカルイントラネットゾーンに配置することもできます([コンピューターの構成]->[管理用テンプレート]->[Windowsコンポーネント]->[InternetExplorer]->[インターネットコントロールパネル]->[セキュリティページ]->[サイトからゾーンへの割り当て]リスト 。イントラネットサイトにはゾーンコード1を使用します。

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

ZabbixサーバーのURLをabout:configの次のパラメータに追加します Mozilla Firefoxの場合:

network.automatic-ntlm-auth.trusted-uris
network.negotiate-auth.delegation-uris
network.negotiate-auth.trusted-uris

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

問題が発生した場合は、ブラウザーでのKerberos構成に関する詳細な記事を参照してください。

その後、構成は終了します。 ZabbixサーバーのURLにアクセスしようとすると、自動的に認証され、パスワードの入力を求められることはありません。

ApacheでのKerberos認証のデバッグとトラブルシューティング

問題がある場合は、apache2でデバッグモードを有効にしてください:

/etc/apache2/sites-available/000-defaults.confのタグを閉じる前に、次のように入力します。

LogLevel trace8

Zabbix:Active Directoryでのシングルサインオン(SSO)認証

Apacheを再起動し、error.logファイルでKerberosモジュールエラーを確認します。

より便利にするには、次のコマンドを使用して、IPアドレスでエントリをフィルタリングします。

tail -f /var/log/apache2/error.log | grep「あなたのIPアドレス」

Kerberosを操作および診断するには、 kinitを使用できます。 およびklist コマンド。

kinitは、Kerberosチケットを取得してキャッシュするためのツールです。例:

kinit –V -k -t /etc/apache2/zabbix.keytab –p HTTP / zabbix.domain.local @ DOMAIN.LOCAL

キータブファイルを正しく生成すると、コマンドが実行され、認証が成功したことを示すメッセージが表示されます。

klistの使用 、キャッシュされたKerberosチケットを表示できます:

klist -a


  1. Active Directory Server 2003 を Active Directory Server 2016 に段階的に移行する方法

    このチュートリアルでは、Windows Server 2003 Active Directory を Windows Server 2016 AD に移行する方法を紹介します。ご存じのとおり、Windows Server 2003 のサポートと更新は 2015 年 7 月に終了し、多くの企業が既に移行しているか、Windows Server 2003 サーバーを Windows Server 2012R2 または Windows Server 2016 にアップグレードする予定です。 Active Directory の移行は、重要かつ深刻な手順です。なぜなら、AD サーバーは、ネットワーク

  2. Active Directory でユーザーの最終ログイン時間を表示する方法

    ユーザーが Active Directory に最後にログインした日付と時刻を表示する場合は、このチュートリアルを読み続けてください。このチュートリアルには、Active Directory ユーザーの最終ログイン時刻を確認するための 2 つの方法が含まれています。 AD ユーザーが任意のワークステーションから Active Directory にログオンするたびに、システムはログオンの日時を次の属性に記録します:lastLogon &lastLogonTimestamp. この 2 つのうち、最も正確な属性は lastLogon、 です。 これは、特定のドメイン コントローラによって認証さ