Computer >> Máy Tính >  >> Hệ thống >> Linux

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Trong bài viết này, chúng tôi sẽ xem xét cấu hình từng bước của xác thực SSO (Đăng nhập một lần) minh bạch cho Zabbix 4.0 (hoặc mới hơn) trong Active Directory bằng cách sử dụng Kerberos.

Kết quả cuối cùng là người dùng được tự động xác thực trên trang chủ Zabbix mà không cần nhập thông tin đăng nhập. Để thực hiện, người dùng phải đăng nhập vào Windows bằng tài khoản miền Active Directory được chỉ định trong Zabbix. Ngoài ra, người dùng phải định cấu hình trình duyệt (hỗ trợ Kerberos phải được bật và các trang web mạng nội bộ đáng tin cậy phải được đặt trong IE).

Một cuộc trưng bày:

  • Máy chủ Ubuntu 18.04 LTS;
  • Miền Active Directory có cấp chức năng 2008 (hoặc cao hơn)
  • Zabbix Server 4.0.11, Apache2 làm máy chủ web (hướng dẫn cài đặt Zabbix)
Lưu ý . Để triển khai SSO, Apache2 với libapache2-mod-auth-curb mô-đun sẽ được sử dụng trong bài viết này. Nginx sẽ không được thảo luận ở đây, nhưng nó có spnego-http-auth-nginx-module phải được bật riêng khi biên dịch Nginx.

Xác thực Zabbix LDAP trên Active Directory

Trước hết, bạn phải ràng buộc người dùng miền với Zabbix. Để làm điều đó, chỉ cần tạo một người dùng trong Zabbix với thông tin đăng nhập giống như họ có trong miền AD là đủ. Ví dụ:nếu thông tin đăng nhập của bạn (thuộc tính sAMAccountName) là user_5, thì người dùng trong Zabbix phải có cùng thông tin đăng nhập.

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Làm điều đó cho từng người dùng sẽ sử dụng Zabbix.

Sau đó, tạo một tài khoản người dùng riêng trong Active Directory để liên kết Zabbix với miền của bạn. Trên thực tế, bạn có thể sử dụng bất kỳ tài khoản miền nào, nhưng tốt hơn là tạo một tài khoản dịch vụ riêng. Trong trường hợp của tôi, nó sẽ là zabbix_admin . Để tạo người dùng trong AD, tôi sẽ sử dụng lệnh ghép ngắn PowerShell New-ADUser:

New-ADUser -Tên "zabbix_admin" -GivenName "zabbix_admin" -Tên "zabbix_admin" -SamAccountName "zabbix_admin" -AccountPassword (Read-Host -AsSecureString "Password:") -DisplayNbled "zabbix_ad $ true mã>

Chạy lệnh hiển thị ở trên trong bảng điều khiển PowerShell và đặt mật khẩu người dùng. Người dùng mới của bạn sẽ được đặt trong vùng chứa Người dùng trong thư mục gốc của miền của bạn.

Hãy định cấu hình xác thực LDAP trong Zabbix. Trong giao diện người dùng của Zabbix, chuyển đến tab cài đặt LDAP trong Quản trị -> Xác thực . Chọn Bật xác thực LDAP và điền vào các trường sau:

  • Máy chủ LDAP: ldap://dc1.domain.local
  • Cổng: 389
  • DN cơ sở: DC =domain, DC =local
  • Thuộc tính tìm kiếm: sAMAccountName
  • Ràng buộc DN: CN =zabbix_admin, OU =Users, DC =domain, DC =local

Bạn có thể đọc mô tả của bất kỳ thông số nào trong xác thực LDAP phần tài liệu Zabbix:https://www.zabbix.com/documentation/current/manual/web_interface/frontend_section/administration/authentication.

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Trước khi hoàn tất cấu hình, hãy đảm bảo rằng cài đặt của bạn hợp lệ bằng cách thực hiện đăng nhập thử nghiệm ( Kiểm tra khuy ao). Chỉ định tên người dùng (chúng tôi đã tạo tài khoản trước đó) và mật khẩu AD.
Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Nếu kiểm tra thành công, hãy lưu cài đặt của bạn và thay đổi loại xác thực trong Zabbix từ Nội bộ thành LDAP .

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Bật xác thực HTTP (Cài đặt HTTP -> Bật xác thực HTTP ).

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Xác thực LDAP được định cấu hình.

Mẹo . Nếu máy chủ LDAP của bạn không khả dụng, bạn sẽ không thể truy cập Zabbix. Để quay lại xác thực nội bộ, hãy mở MySQL và chạy lệnh sau:

update zabbix.config sethentic_type ='0' where configid ='1';

Định cấu hình Xác thực minh bạch (Đăng nhập một lần) trong Zabbix (Apache2, krb5-user)

Trước hết, hãy chỉ định tên FQDN của máy chủ của bạn trong / etc / hostname phải khớp với bản ghi DNS trong miền của bạn. Trong trường hợp của tôi, đó là zabbix.domain.local .

Đồng thời ghi FQDN của máy chủ của bạn cho địa chỉ IP cục bộ và địa chỉ IP của máy chủ của bạn trong / etc / hosts.

 127.0.0.1 localhost zabbix.domain.local10.1.1.10 zabbix.domain.local 

Để xác thực Kerberos hoạt động chính xác, hãy đồng bộ hóa thời gian với bộ điều khiển miền của bạn. Cài đặt ntpdate gói và liên kết nó với bộ điều khiển miền.

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

Chrony được sử dụng để đồng bộ hóa thời gian trong CentOS 8. ntp ntpdate các gói không có sẵn trong kho lưu trữ chính thức.

Bây giờ bạn cần tạo tệp keytab trên bộ điều khiển miền. Keytab là một tệp chứa SPN và các khóa được mã hóa. Keytab được sử dụng để xác thực dựa trên Kerberos.

  • Đăng nhập vào bộ điều khiển miền của bạn và chạy dấu nhắc lệnh với tư cách quản trị viên. Chuyển đến C:\.
  • Nhập thông tin sau:
    ktpass -princ HTTP/zabbix.domain.local@DOMAIN.LOCAL -mapuser zabbix_admin -pass STRONGPASS -crypto ALL -ptype KRB5_NT_PRINCIPAL -out zabbix.keytab -setupn –setpass
  • Sao chép tệp C:\ zabbix.keytab vào thư mục / etc / apache2 / trên máy chủ Zabbix của bạn.

Cài đặt các gói Kerberos và một mô-đun cho apache2:

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

Định cấu hình krb5-người dùng. Chỉnh sửa /etc/krb5.cnf :

 [logging] default =FILE:/var/log/krb5libs.logkdc =FILE:/var/log/krb5kdc.logadmin_server =FILE:/var/log/kadmind.log [libdefaults] default_realm =DOMAIN.LOCALdefault_keytab_name =/ etc / apache2 / zabbix.keytabdns_lookup_kdc =falsedns_lookup_realm =falsenticable =trueticket_lifetime =24h [domains] DOMAIN.LOCAL ={kdc =dc.domain.localdefault_domain =DOMAIN.LOCALadmin_server =dc.domain.realmcal]. [domain .LOCALdomain.local =DOMAIN.LOCAL 

Chỉ định miền của bạn. Ở một số nơi, tên miền được viết bằng chữ hoa, hãy tuân theo quy tắc này.

Lưu ý . Nhìn vào dòng chứa đường dẫn tệp keytab “default_keytab_name =/etc/apache2/zabbix.keytab” và đảm bảo rằng tệp có sẵn ở đó. Cấp quyền đọc trên www-data và chạy: chown www-data:www-data /etc/apache2/zabbix.keytab

Đảm bảo rằng xác thực Kerberos đang hoạt động trong Linux:

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

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Bạn có thể thấy lỗi này:

 kinit:Không tìm thấy ứng dụng khách 'HTTP/zabbix.domain.local@DOMAIN.LOCAL' trong cơ sở dữ liệu Kerberos khi nhận được thông tin đăng nhập ban đầu 

Trong trường hợp này, hãy thử xác thực bằng thông tin đăng nhập của người dùng khác:

kinit -pV ĐĂNG NHẬP

Nếu xác thực thành công, vấn đề là với tệp keytab của bạn. Đảm bảo rằng bạn đã tạo nó một cách chính xác. Kiểm tra xem bạn đã nhập đúng lệnh để tạo tệp keytab hay chưa.

Đảm bảo rằng bản ghi SPN cho tài khoản dịch vụ Zabbix của bạn tồn tại trong AD. Nhập lệnh sau vào bộ điều khiển miền:

setspn -l zabbix_admin

Bạn sẽ thấy một thông báo như thế này. Nó phải ở định dạng HTTP / zabbix.domain.local. Nếu không có bản ghi, hãy thêm nó.

setspn -a HTTP / zabbix.domain.local zabbix_admin

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Đảm bảo rằng tên đăng nhập của người dùng đã thay đổi thành HTTP / zabbix.domain.local.

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Nếu chưa, hãy thay đổi thủ công.

Sau đó, chỉnh sửa tệp cấu hình apache2 - /etc/apache2/sites-available/000-default.conf.

Thêm phần sau vào dòng ServerName zabbix.domain.local:

  AuthType KerberosAuthName "Kerberos đã xác thực" KrbAuthRealms DOMAIN.LOCAL # KrbServiceName HTTP / zabbix.domain.localKrbServiceName AnyKrb5Keytab /etc/apache2/zabbix.keytabKrn 

Nếu KrbServiceName không khớp với tên được chỉ định trong tệp keytab, thì sẽ xảy ra lỗi. Vì vậy, bạn có thể đặt Bất kỳ giá trị trong khi thử nghiệm. Sau khi đảm bảo rằng hệ thống đang hoạt động, hãy chỉ định tên dịch vụ hợp lệ. Bạn có thể kiểm tra nó bằng cách sử dụng:
klist -le /etc/apache2/zabbix.keytab

Cách định cấu hình trình duyệt để xác thực Kerberos?

Để Internet Explorer sử dụng xác thực Kerberos trên Zabbix, bạn sẽ phải thêm URL của nó vào Local Intranet các trang web. Google Chrome sử dụng cài đặt Internet Explorer, vì vậy bạn không cần phải định cấu hình riêng.

Lưu ý . URL của trang web Zabbix của bạn không được thuộc danh sách Trang web đáng tin cậy, nếu không Kerberos sẽ không hoạt động. Trang web phải được chỉ định trong các trang Intranet.

Mở Tùy chọn -> Bảo mật trong IE.

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Nhấp vào Trang web trong mạng nội bộ Cục bộ, hãy kiểm tra các tùy chọn được hiển thị trong ảnh chụp màn hình bên dưới và nhấp vào Nâng cao.

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Nhập URL máy chủ Zabbix của bạn.

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Đi tới Nâng cao và chọn Bật xác thực Windows tích hợp .

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Ngoài ra, bạn cũng có thể đặt URL Zabbix vào vùng Mạng nội bộ bằng cách sử dụng Chính sách nhóm (Cấu hình máy tính -> Mẫu quản trị -> Thành phần Windows -> Internet Explorer -> Bảng điều khiển Internet -> Trang bảo mật -> Gán site thành vùng Danh sách . Sử dụng mã vùng 1 cho các trang mạng nội bộ).

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Thêm URL của máy chủ Zabbix của bạn vào các thông số sau của about:config cho Mozilla Firefox của bạn:

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

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Nếu bạn gặp bất kỳ vấn đề nào, hãy xem bài viết chi tiết về cấu hình Kerberos trong trình duyệt.

Sau khi cấu hình kết thúc. Nếu bạn cố gắng truy cập vào URL máy chủ Zabbix của mình, bạn sẽ được xác thực tự động và sẽ không được nhắc nhập mật khẩu của bạn.

Gỡ lỗi &gỡ rối xác thực Kerberos trong Apache

Nếu bạn gặp bất kỳ sự cố nào, hãy bật chế độ gỡ lỗi trong apache2:

Nhập nội dung sau trước thẻ đóng trong /etc/apache2/sites-available/000-defaults.conf:

 LogLevel trace8 

Zabbix:Xác thực Đăng nhập Một lần (SSO) trong Active Directory

Khởi động lại apache và kiểm tra lỗi mô-đun Kerberos trong tệp error.log.

Để thuận tiện hơn, hãy sử dụng lệnh này để lọc các mục nhập theo địa chỉ IP:

tail -f /var/log/apache2/error.log | grep ‘Địa chỉ IP của bạn’

Để làm việc với và chẩn đoán Kerberos, bạn có thể sử dụng kinit klist lệnh.

kinit là một công cụ để lấy và lưu vào bộ nhớ cache các vé Kerberos, ví dụ:

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

Nếu bạn đã tạo đúng tệp keytab của mình, lệnh sẽ chạy và bạn sẽ nhận được thông báo rằng xác thực đã thành công.

Sử dụng klist , bạn có thể xem các vé Kerberos đã lưu trong bộ nhớ cache:

klist -a