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インストールのガイド)
ActiveDirectoryでのZabbixLDAP認証
まず、ドメインユーザーをZabbixにバインドする必要があります。これを行うには、ADドメインと同じログインでZabbixにユーザーを作成するだけで十分です。たとえば、ログイン(sAMAccountName属性)がuser_5の場合、Zabbixのユーザーは同じログインを持っている必要があります。
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。
構成を完了する前に、テストログイン(テスト)を実行して、設定が有効であることを確認してください。 ボタン)。ユーザー名(以前にアカウントを作成しました)とADパスワードを指定します。
テストが成功した場合は、設定を保存し、Zabbixの認証タイプを内部から LDAPに変更します 。
HTTP認証を有効にする(HTTP設定->HTTP認証を有効にする 。
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
次に、ドメインコントローラーでキータブファイルを生成する必要があります。 キータブ 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
このエラーが表示される場合があります:
kinit: Client 'HTTP/[email protected]’ 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
ユーザーのログイン名がHTTP/zabbix.domain.localに変更されていることを確認してください。
変更されていない場合は、手動で変更してください。
次に、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サーバーのURLを入力します。
詳細strong>に移動します タブをクリックし、統合Windows認証を有効にするをオンにします 。
また、グループポリシーを使用してZabbix URLをローカルイントラネットゾーンに配置することもできます([コンピューターの構成]->[管理用テンプレート]->[Windowsコンポーネント]->[InternetExplorer]->[インターネットコントロールパネル]->[セキュリティページ]->[サイトからゾーンへの割り当て]リスト 。イントラネットサイトにはゾーンコード1を使用します。
ZabbixサーバーのURLをabout:config
の次のパラメータに追加します Mozilla Firefoxの場合:
network.automatic-ntlm-auth.trusted-uris network.negotiate-auth.delegation-uris network.negotiate-auth.trusted-uris
問題が発生した場合は、ブラウザーでのKerberos構成に関する詳細な記事を参照してください。
その後、構成は終了します。 ZabbixサーバーのURLにアクセスしようとすると、自動的に認証され、パスワードの入力を求められることはありません。
ApacheでのKerberos認証のデバッグとトラブルシューティング
問題がある場合は、apache2でデバッグモードを有効にしてください:
/etc/apache2/sites-available/000-defaults.confのタグを閉じる前に、次のように入力します。
LogLevel trace8
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
-
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 サーバーは、ネットワーク
-
Active Directory でユーザーの最終ログイン時間を表示する方法
ユーザーが Active Directory に最後にログインした日付と時刻を表示する場合は、このチュートリアルを読み続けてください。このチュートリアルには、Active Directory ユーザーの最終ログイン時刻を確認するための 2 つの方法が含まれています。 AD ユーザーが任意のワークステーションから Active Directory にログオンするたびに、システムはログオンの日時を次の属性に記録します:lastLogon &lastLogonTimestamp. この 2 つのうち、最も正確な属性は lastLogon、 です。 これは、特定のドメイン コントローラによって認証さ