Sunday, March 10, 2019

Understanding Kerberos Authentication

              အခုပြောမယ့် အကြောင်းအရာကတော့ Kerberos authentication အကြောင်းဖြစ်ပါတယ်။ RHCE objective တွေထဲက တစ်ခုအနေနဲ့လည်းပါ၀င်ပါတယ်။ Kerberos ရဲ့အလုပ်လုပ်ပုံက Client နဲ့ Server ကြား ဆက်သွယ်မှုကို network အပေါ်မှာ password-based authentication အနေနဲ့မဟုတ်ပဲ symmetric-key cryptography based authentication ပုံစံဖြင့်အလုပ်လုပ်ပါတယ်။ 
               တစ်နည်းအားဖြင့် Kerberos KDC "Key Distribution Center" က Client and Server ကြားတွင် authentication server အနေနဲ့လုပ်ဆောင်ပေးပါတယ်။ KDC မှာ service နှစ်ခုပါရှိပါတယ် Authentication Server (AS) နှင့် TGS (Ticket Granting Server) service ဆိုပြီးနှစ်မျိူး ပါရှိပါတယ်။ User က AS ကို authentication request လုပ်တဲ့အခါမှာ unique identity လို့ခေါ်တဲ့ တစ်နည်းအားဖြင့် user principle ID နဲ့ KDC က identify ပြုလုပ်ပါတယ်။ ထို့နောက် ရလာတဲ့ principle id ကို ticket ပြန်လည်ထုတ်ပေးဖို့အတွက် TGS Database ထဲမှာ request လုပ်ထားတဲ့ principle ID ကို ရှိမရှိစစ်ဆေးပြီး ID match ဖြစ်တဲ့အခါမှာ Ticket ကို generate လုပ် encrypt လုပ်ပြီး user ဆီကိုပြန်လည် ပေးပို့ပါတယ်။ ထို့နောက်မှ user က ရရှိလာတဲ့ ticket ကို Kerberos authentication အသုံးပြုထားတဲ့ services ကို authenticate လုပ်ပြီး အသုံးပြုပါတယ်။


Installing Required Packages 
အရင်ဆုံး Kerberos Server တစ်ခု setup လုပ်ဖို့ရန်အတွက် လိုအပ်သော packages များကို install ပြုလုပ်မှာဖြစ်ပါတယ်။ 


Configuring Kerberos Server
Packages install လုပ်ပြီးသွားပြီဆိုရင်တော့ configuration လုပ်ဖို့ရန်အတွက် အရင်ဆုံး /var/kerberos အောက်မှာရှိတဲ့ krb5 and krb5dc directory နှစ်ခုကို changes တွေပြုလုပ်ရမှာဖြစ်ပါတယ်။ အရင်ဆုံး krb5dc directory ထဲမှာရှိတဲ့ kdc.conf file ထဲမှ မိမိသတ်မှတ်ထားတဲ့ Domain Name ကိုပြောင်းပေးရမှာဖြစ်ပါတယ်။ Default ကတော့ EXAMPLE.COM ဖြစ်ပါတယ်။ 




 ထို့နောက် နောက်ထပ် config file တစ်ခုဖြစ်တဲ့ kadm5.acl file ထဲမှာလည်း DOMAIN NAME ကိုပြောင်းပေးရမှာဖြစ်ပါတယ်။




 နောက်တစ်ဆင့်အနေနဲ့ /etc/krb5.conf ကိုပြင်ရမှာဖြစ်ပါတယ်။ Domain Name တွေကို မိမိရဲ့ kerberos domain name ပြောင်းပေးရမှာပါ။ kdc နဲ့ admin_server မှာတော့ လက်ရှိ kerberos server အနေနဲ့အသုံးပြုမယ့် node ရဲ့  FQDN name အပြည့်အစုံထည့်ပေးရမှာဖြစ်ပါတယ်။ config file တွေထဲကို ၀င်ပြင်တဲ့အခါ case sensitive ရှိပါတယ် အကြီးအသေး သတိထားပြီး ဖြည့်ပေးပါ။ 


 Creating a Kerberos Database
နောက်တစ်ဆင့်အနေနဲ့ကတော့ kerberos database တစ်ခု တည်ဆောက်ခြင်း ဖြစ်ပါတယ်။ #kdb5_util ကိုအသုံးပြုပြီး database တည်ဆောက်ရမှာဖြစ်ပါတယ်။ 


Enabling Kerberos Services
ပြီးသွားရင်တော့ kerberos services တွေကို start and enable လုပ်ပေးရပါမယ်။


Adding Principle for admin and users
အခုနောက်တစ်ဆင့်အနေနဲ့ Kerberos authentication လုပ်ဖို့ရန် principle များကိုထည့်သွင်းမှာဖြစ်ပါတယ်။ Local admin အတွက်ရယ် နောက် user account တစ်ခုအတွက်ရယ် principle ထည့်သွင်းမှာဖြစ်ပါတယ်။ user account ကို kerberos principle မှာတည်ဆောက်ပြီးရင် အပြင်မှာလဲ #useradd command ဖြင့် တည်ဆောက်ပေးရပါမယ်။



Adding KDC Host Principle

နောက်တစ်ခုအနေနဲ့ user က authenticate လှမ်းလုပ်ဖို့ရန်အတွက် KDC host principle ကို add ပေးရပါမယ်။ ဒီနေရာမှာ user က တစ်ခြား node eg.node02.private.com ကနေလှမ်း၀င်ပြီး authenticate လုပ်မယ်ဆိုရင်လဲ တစ်ခြား node ရဲ့  FQDN name ဖြင့် host principle တစ်ခုဆောက်ပေးရမှာဖြစ်ပါတယ်။


Creating a Keytab file
အထက်မှာ create လုပ်ခဲ့တဲ့ ဟာတွေအားလုံးကို local copy အနေနဲ့ keytab file တစ်ခု create လုပ်ပြီး /etc အောက်မှာသွားသိမ်းထားမှာဖြစ်ပါတယ်။


Enable Kerberos Servers at Firewall
Kerberos configuration တွေပြီးပြီဆိုရင်တော့ Kerberos services တွေအတွက် firewall မှာ allow လုပ်ပေးရမှာဖြစ်ပါတယ်။


Setup Kerberos Client
ဒီ Article ကနောက်ပိုင်းမှာ Kerberos NFS setup ပိုင်းနဲ့ ဆက်စပ်မှာဖြစ်ပြီး အခုလောလောဆယ်ကတော့ NFS မပါသေးဘဲ ssh နဲ့ Kerberos authentication ပြုလုပ်ပြသွားဖြစ်ပါတယ်။

Install Required Packages
အရင်ဆုံး လိုအပ်သော packages များကို client စက်ပေါ်မှာ installation အရင်ဆုံးပြုလုပ်ပါမယ်။


Change DOMAIN Name at /etc/krb5.conf
/etc/krb5.conf config file ထဲမှာ မိမိသတ်မှတ်ထားတဲ့ DOMAIN NAME ကိုပြောင်းပေးရမှာဖြစ်ပါတယ်။ 

Create Kerberos User account and Create keytab file
Kerberos server မှာ create လုပ်ခဲ့တဲ့ same user account ကို ssh ၀င်ဖို့ရန် client စက်ပေါ်မှာတည်ဆောက်ပေးရပါမယ်။


Change SSH Configuration for Kerberos Authentication
နောက်တစ်ခုအနေနဲ့ ssh config file /etc/ssh/ssh_config ထဲမှာ kerberos authentication သုံးဖို့အတွက် GSSAPIAuthentication and GSSAPIDelegateCredentials နှစ်ခုကို edit လုပ်ပေးရပါမယ်။
Edit လုပ်ပြီးရင်တော့ #systemctl restart sshd ပြုလုပ်ပေးပါ။


   ထို့နောက် #authconfig command ကိုသုံးပြီး Kerberos authentication ကို update ပြုလုပ်ပါမယ်။


Testing user1 to authenticate Kerberos via SSH
Configuration ပိုင်းတွေပြီးရင် အခု Kerberos server ကို authentication ပြုလုပ်တာ စမ်းသပ်မှာဖြစ်ပါတယ်။ အရင်ဆုံး Kerberos server ဖက်မှာ principle create လုပ်ထားတဲ့ user1 account ဖြင့် login ၀င်ကြည့်ပါ ပြီးရင် #kinit (Kerberos initialize) command ဖြင့် Kerberos initialize အစပြုပါ password မှာ Kerberos server ဖက်မှာပေးခဲ့တဲ့ password ဖြင့် login ၀င်ရမှာဖြစ်ပါတယ်။ ပြီးရင် #klist command ဖြင့် လက်ရှိ login ၀င်ထားတဲ့ user1 အတွက် login session expire time တွေကို check လုပ်နိုင်ပါတယ်။ ပြီးရင်တော့ #ssh node01.private.com ဖြင့် ၀င်ကြည့်လျှင် password authentication ကိုအသုံးပြုခြင်းမဟုတ်ပဲ Kerberos based authentication ကို အသုံးပြုပြီး ၀င်လို့ရနိုင်သည်ကို တွေ့ရမှာဖြစ်ပါတယ်။


အခုဆိုရင် SSH ကို Password Authentication အစား Kerberos authentication ကိုအသုံးပြုပြီး remote login ပြုလုပ်ပြတာဖြစ်ပါတယ်။  နောက် article မှပဲ RHCE objective ဖြစ်တဲ့ NFS server Kerberos authentication အသုံးပြုပြီး ချိတ်ဆက်ပုံကိုပြပေးပါမယ်။

Long Time No See and Enjoy Reading!!! Thank You!!! :) 
Please also Like and Follow Root Of Info Page






Share:

0 comments:

Post a Comment