এই নিবন্ধে আমরা Kerberos ব্যবহার করে সক্রিয় ডিরেক্টরিতে Zabbix 4.0 (বা নতুন) এর জন্য একটি স্বচ্ছ SSO (একক সাইন-অন) প্রমাণীকরণের ধাপে ধাপে কনফিগারেশন বিবেচনা করব।
শেষ ফলাফল হল যে একজন ব্যবহারকারী স্বয়ংক্রিয়ভাবে শংসাপত্র প্রবেশ না করেই Zabbix ফ্রন্টপেজে প্রমাণীকৃত হয়। এটি করার জন্য, একজন ব্যবহারকারীকে অবশ্যই Zabbix-এ নির্দিষ্ট করা অ্যাক্টিভ ডিরেক্টরি ডোমেন অ্যাকাউন্টের অধীনে Windows-এ লগ ইন করতে হবে। উপরন্তু, ব্যবহারকারীকে অবশ্যই ব্রাউজার কনফিগার করতে হবে (Kerberos সমর্থন অবশ্যই সক্ষম হতে হবে এবং বিশ্বস্ত ইন্ট্রানেট সাইটগুলি অবশ্যই IE-তে সেট করতে হবে)।
একটি শোকেস:
- উবুন্টু সার্ভার 18.04 LTS;
- ফাংশনাল লেভেল 2008 (বা উচ্চতর) সহ সক্রিয় ডিরেক্টরি ডোমেন
- Zabbix সার্ভার 4.0.11, Apache2 একটি ওয়েব সার্ভার হিসাবে (Zabbix ইনস্টলেশনের নির্দেশিকা)
সক্রিয় ডিরেক্টরিতে Zabbix LDAP প্রমাণীকরণ
প্রথমত, আপনাকে ডোমেন ব্যবহারকারীদের Zabbix-এ আবদ্ধ করতে হবে। এটি করার জন্য, AD ডোমেনের মতো একই লগইন সহ Zabbix-এ একজন ব্যবহারকারী তৈরি করা যথেষ্ট। উদাহরণস্বরূপ, যদি আপনার লগইন (sAMAccountName অ্যাট্রিবিউট) user_5 হয়, তাহলে Zabbix-এর একজন ব্যবহারকারীর অবশ্যই একই লগইন থাকতে হবে।
এটি প্রত্যেক ব্যবহারকারীর জন্য করুন যারা Zabbix ব্যবহার করবে৷
৷তারপর আপনার ডোমেনে জ্যাবিক্সকে আবদ্ধ করতে সক্রিয় ডিরেক্টরিতে একটি পৃথক ব্যবহারকারী অ্যাকাউন্ট তৈরি করুন। অনুশীলনে, আপনি যে কোনও ডোমেন অ্যাকাউন্ট ব্যবহার করতে পারেন, তবে একটি পৃথক পরিষেবা অ্যাকাউন্ট তৈরি করা ভাল। আমার ক্ষেত্রে, এটি zabbix_admin হবে . AD এ একজন ব্যবহারকারী তৈরি করতে, আমি PowerShell cmdlet New-ADUser ব্যবহার করব:
নতুন-ADUser -নাম "zabbix_admin" -প্রদত্ত নাম "zabbix_admin" -সামনাম "zabbix_admin" -SamAccountName "zabbix_admin" -AccountPassword (Read-Host -AsSecureString "পাসওয়ার্ড:") -"$Ed_admin" -Displayable কোড>
PowerShell কনসোলে উপরে দেখানো কমান্ডটি চালান এবং একটি ব্যবহারকারীর পাসওয়ার্ড সেট করুন। আপনার নতুন ব্যবহারকারী আপনার ডোমেনের রুটে ব্যবহারকারী কন্টেইনারের অধীনে অবস্থিত হবে।
আসুন Zabbix-এ LDAP প্রমাণীকরণ কনফিগার করি। Zabbix ফ্রন্টএন্ডে প্রশাসন -এ LDAP সেটিংস ট্যাবে যান -> প্রমাণিকরণ . LDAP প্রমাণীকরণ সক্ষম করুন চেক করুন৷ এবং নিম্নলিখিত ক্ষেত্রগুলি পূরণ করুন:
- LDAP হোস্ট:
ldap://dc1.domain.local
- পোর্ট:
389
- বেস DN:
DC=domain, DC=local
- অনুসন্ধান বৈশিষ্ট্য:
sAMAccountName
- Bind 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 খুলুন এবং নিম্নলিখিত কমান্ডটি চালান:
zabbix.config সেট authentication_type='0' যেখানে configid='1';
আপডেট করুন
Zabbix (Apache2, krb5-ব্যবহারকারী) এ একটি স্বচ্ছ (একক সাইন অন) প্রমাণীকরণ কনফিগার করুন
প্রথমত, /etc/hostname-এ আপনার সার্ভারের FQDN নাম উল্লেখ করুন যা আপনার ডোমেনের DNS রেকর্ডের সাথে মেলে। আমার ক্ষেত্রে, এটি zabbix.domain.local .
এছাড়াও স্থানীয় IP ঠিকানার জন্য আপনার সার্ভারের FQDN এবং /etc/hosts-এ আপনার সার্ভারের IP ঠিকানা লিখুন।
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
CentOS 8 এ সময় সিঙ্ক্রোনাইজ করতে Chrony ব্যবহার করা হয়। 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
- আপনার Zabbix সার্ভারের /etc/apache2/ ডিরেক্টরিতে C:\zabbix.keytab ফাইলটি অনুলিপি করুন।
Apache2:
-এর জন্য Kerberos প্যাকেজ এবং একটি মডিউল ইনস্টল করুন
#apt install krb5-user libapache2-mod-auth-kerb
krb5-ব্যবহারকারী কনফিগার করুন। সম্পাদনা করুন /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
নিশ্চিত করুন যে লিনাক্সে Kerberos প্রমাণীকরণ কাজ করছে:
kinit -kV -p HTTP/zabbix.domain.local –t /etc/apache2/zabbix.keytab

আপনি এই ত্রুটি দেখতে পারেন:
kinit: Client 'HTTP/zabbix.domain.local@DOMAIN.LOCAL’ not found in Kerberos database while getting initial credentials
এই ক্ষেত্রে, অন্য ব্যবহারকারীর শংসাপত্র ব্যবহার করে প্রমাণীকরণ করার চেষ্টা করুন:
kinit -pV লগইন
যদি প্রমাণীকরণ সফল হয়, সমস্যাটি আপনার কীট্যাব ফাইলের সাথে। নিশ্চিত করুন যে আপনি এটি সঠিকভাবে তৈরি করেছেন। একটি কীট্যাব ফাইল তৈরি করতে আপনি সঠিক কমান্ডটি দিয়েছেন কিনা তা পরীক্ষা করুন৷
নিশ্চিত করুন যে আপনার 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.
ServerName zabbix.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 কীট্যাব ফাইলে নির্দিষ্ট করা নামের সাথে মেলে না, একটি ত্রুটি ঘটে। তাই আপনি যে কোনো সেট করতে পারেন পরীক্ষার সময় মান। সিস্টেম কাজ করছে তা নিশ্চিত করার পরে, বৈধ পরিষেবার নাম উল্লেখ করুন। আপনি এটি ব্যবহার করে পরীক্ষা করতে পারেন:
klist -le /etc/apache2/zabbix.keytab
Kerberos প্রমাণীকরণের জন্য ব্রাউজারগুলি কীভাবে কনফিগার করবেন?
Zabbix-এ Kerberos প্রমাণীকরণ ব্যবহার করার জন্য Internet Explorer-এর জন্য, আপনাকে এর URL স্থানীয় ইন্ট্রানেট-এ যোগ করতে হবে সাইট Google Chrome ইন্টারনেট এক্সপ্লোরার সেটিংস ব্যবহার করে, তাই আপনাকে এটি আলাদাভাবে কনফিগার করার দরকার নেই৷
৷ দ্রষ্টব্য . আপনার Zabbix সাইটের URL অবশ্যই বিশ্বস্ত সাইটের তালিকার অন্তর্ভুক্ত নয়, অন্যথায় Kerberos কাজ করবে না। সাইটটি শুধুমাত্র ইন্ট্রানেট সাইটগুলিতে নির্দিষ্ট করা আবশ্যক৷
বিকল্প খুলুন -> IE-তে নিরাপত্তা।

সাইট এ ক্লিক করুন স্থানীয় ইন্ট্রানেটে, নীচের স্ক্রিনশটে দেখানো বিকল্পগুলি পরীক্ষা করুন এবং উন্নত ক্লিক করুন৷

আপনার Zabbix সার্ভার URL লিখুন৷
৷

উন্নত-এ যান ট্যাব করুন এবং ইন্টিগ্রেটেড উইন্ডোজ প্রমাণীকরণ সক্ষম করুন চেক করুন .

এছাড়াও, আপনি গোষ্ঠী নীতিগুলি (কম্পিউটার কনফিগারেশন -> প্রশাসনিক টেমপ্লেট -> উইন্ডোজ উপাদান -> ইন্টারনেট এক্সপ্লোরার -> ইন্টারনেট কন্ট্রোল প্যানেল -> নিরাপত্তা পৃষ্ঠা -> সাইট টু জোন অ্যাসাইনমেন্ট ব্যবহার করে স্থানীয় ইন্ট্রানেট জোনে Zabbix URL রাখতে পারেন তালিকা . ইন্ট্রানেট সাইটের জন্য জোন কোড 1 ব্যবহার করুন।

about:config
-এর নিম্নলিখিত প্যারামিটারগুলিতে আপনার Zabbix সার্ভারের URL যোগ করুন আপনার মজিলা ফায়ারফক্সের জন্য:
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 মডিউল ত্রুটি পরীক্ষা করুন।
এটিকে আরও সুবিধাজনক করতে, আইপি ঠিকানা দ্বারা এন্ট্রিগুলি ফিল্টার করতে এই কমান্ডটি ব্যবহার করুন:
tail -f /var/log/apache2/error.log | grep 'আপনার আইপি ঠিকানা'
Kerberos-এর সাথে কাজ করতে এবং নির্ণয় করতে, আপনি kinit ব্যবহার করতে পারেন এবং klist কমান্ড।
kinit হল Kerberos টিকিট পেতে এবং ক্যাশে করার একটি টুল, উদাহরণস্বরূপ:
kinit –V -k -t /etc/apache2/zabbix.keytab –p HTTP/zabbix.domain.local@DOMAIN.LOCAL
আপনি যদি আপনার কীট্যাব ফাইলটি সঠিকভাবে তৈরি করে থাকেন, তাহলে কমান্ডটি চলবে, এবং আপনি একটি বার্তা পাবেন যে প্রমাণীকরণ সফল হয়েছে৷
klist ব্যবহার করা হচ্ছে , আপনি ক্যাশ করা Kerberos টিকেট দেখতে পারেন:
klist -a