Ubuntu Server Hardening Part – 2

319

ဒီ ၂၀၁၆ အတွင်းမှာပထမဦးဆုံးရေးဖြစ်တဲ့ Basic Server Hardening ကိုဖတ်ပြီးကြပြီလို့မျှော်လင့်ပါတယ်။
ဒီတစ်ခုကတော့ပထမ Guide မှာပြုလုပ်ထားတဲ့နောက်ကွယ်ကအချက်တစ်ချို့ရယ်ကျန်နေသေးတဲ့ Basic
Step
တွေရယ်နဲ့ Ubuntu User တွေကိုအရမ်းရှင်းပြချင်နေတဲ့ User Account အကြောင်းပါ။ ဒါကိုဖတ်လိုက်
လို့ Security မဟုတ်ပါဘူး၊ ဖတ်နေလဲအပိုပါလို့ထင်ရင်တော့သင့်နေဖြင့်ကျော်သွားနိုင်ပါတယ်။ ကျနော်
User Account Setting
အကြောင်းကိုရေးရတာကတော့ Security ဆိုတဲ့ Topic ကိုအကျယ်ချဲ့လိုက်ရင်
User Account Security
ကဦးဆုံးအနေနဲ့ပါရှိတဲ့အတွက်ကြောင့်ဖြစ်ပါတယ်။ ခင်ဗျားတို့တက်ခဲ့တဲ့သင်တန်း
တွေကသင်တန်းဆရာတွေကဒီလိုအသေးစိတ်ရှင်းပြလိမ့်မယ်လို့လည်းမထင်တဲ့အတွက်ကြောင့်ဒီ Guide
ကိုရေးပေးရခြင်းဖြစ်ပါတယ်။ အိုကေ။ အဲ့တာဆိုရင်စလိုက်ကြရအောင် …

Server Hardening Part 1 ဟာလုံးဝ Basic ဖြစ်ပြီးထိုထဲမှာ Video ကြည့်ရုံနဲ့မသိနိုင်တဲ့အချက်တစ်ချို့
ရှိပါတယ်။ အဲ့တာကတော့ဆက်ပြီးရှင်းသွားပါမယ်။ အခုအရင်ဆုံး Server Hardening Part 1 မှာချန်ထား
ခဲ့တဲ့အချက်တစ်ချို့ ကိုဆက်ရှင်းပြပါမယ်။ Server ကို lock down လုပ်မယ်ဆိုရင်အရေးကြီးတဲ့အချက်တွေ
နဲ့ လူသုံးများတဲ့အချက်ဆိုပြီး ၂ မျိုးရှိပါတယ်။ တစ်ချို့ ကတော့သူများလုပ်လို့လိုက်လုပ်ပေမယ့်ကိုယ့်
Environment
နဲ့မကိုက်ညီတာမျိုးတွေရှိတတ်ပါတယ်။ အဲ့တော့အရင်ဆုံးလုပ်သင့်တာကိုစပါပြီ။

Disable Control + Alt + Del

ဒါကအလွန်အရေးကြီးပါတယ်။ ကျနော်လုပ်ခဲ့ဖူးတဲ့ Company ကြီးကြီးတစ်ခုမှာတောင်ဒါကိုထိန်းချုပ်ထား
တာမျိုးမတွေ့ ရပါ။ ဘာကြောင့်အရေးကြီးသလဲဆိုတော့ Windows သမားတိုင်းလိုလိုတောင်မှ Server or
Workstation freeze
ဖြစ်သွားရင် control alt del ကိုနှိပ်ပြီးတော့ restart လုပ်ရကောင်းမှန်းသိပါတယ်။
ဒီလိုပါပဲ။ Ubuntu Server မှာ Default အနေဖြင့်သင်ဟာ terminal မှာ control alt del ကိုနှိပ်လိုက်မည်
ဆိုလျှင် server သည် restart ဖြစ်သွားမှာဖြစ်ပါတယ်။ အဲ့တာကြောင့်မို့သင့်အနေဖြင့်ထို key ကိုပိတ်ထား
ရပါမည်။ ထိုသို့ပိတ်ထားရန်အတွက် သင်သည်အောက်ပါ command ကိုရိုက်ထည့်ရန်လိုအပ်မည်ဖြစ်ပါသည်။

$sudo vi /etc/init/control-alt-delete.conf

ထို့နောက်တွင် exec shutdown -r now “Control-Alt-Delete pressed” ဆိုသည့်စာကြောင်းရှေ့ ဆုံးတွင်
#
ကိုထည့်ပေးလိုက်ပြီး save လုပ်ပါ။ စာကြောင်းသည်အောက်ဖေါ်ပြပါအတိုင်းဖြစ်နေရပါမည်။

#exec shutdown -r now “Control-Alt-Delete pressed”

ဒါဆိုလျှင်တော့သင်သည် Server Hardening နှင့်ပါတ်သတ်ပြီးနောက်ထပ်တစ်ဆင့်ကိုပြုလုပ်ပြီးပါပြီ။

ထို့နောက်တွင်တော့မဖြစ်မနေလုပ်ရမည့်ကိစ္စတစ်ခုထပ်ရှိပါသေးသည်။ ၎င်းသည် login banner ဖြစ်ပါတယ်။

SSH Login Banner

Brown/Black Hacker များ server ကို penetration မလုပ်ခင်မှာသူတို့ကိုသတိပေးတဲ့စကားတွေပါ။
၎င်းသည်သင့်တရားရင်ဆိုင်သည့်နေရာတွင်အသုံးဝင်ပါလိမ့်မည်။ တော်ရုံတန်ရုံဆော့ကစားချင်တဲ့ကလေး
တွေကိုလည်းခြောက်လှန့်ပြီးသားဖြစ်ပါလိမ့်မည်။ ထို Banner ကိုပြုလုပ်ရန်သင်သည်ပထမဦးစွာအောက်
ပါ command ကိုရိုက်ပါ။

$sudo vi /etc/ssh/sshd_config

ထို့နောက်တွင်သင်သည် #Banner /etc/issue.net ဆိုသည့်နေရာတွင် # ကိုဖြုတ်ပြီး save လုပ်လိုက်ပါ။
ဒါဆိုလျှင်ပထမအဆင့်ပြီးမြောက်ပါပြီ။ ဒုတိယအဆင့်အနေဖြင့် Banner အတွက်စာကိုရိုက်ထည့်ပေးရန်
လိုအပ်ပြီး ssh service ကို restart ချပေးရန်လိုအပ်ပါသည်။ သင့်အနေဖြင့် Banner ကိုမိမိစိတ်ကြိုက်
စာသားများရိုက်ထည့်လိုကရိုက်ထည့်နိုင်ပါတယ်။ 
သင့်အနေဖြင့် banner ကို
ပြောင်းလဲရန်အောက်ပါ
command ကိုရိုက်ပါ။

$sudo vi /etc/issue.net

ထို့နောက်သင်ကြိုက်နှစ်သက်ရာစာသားကိုရိုက်ထည့်၍ထို file ကို save လုပ်ပါ။ ထို့နောက်တွင်နောက်ဆုံး
အဆင့်ဖြစ်သော ssh service ကို restart ချရန်အတွက်အောက်ပါ command ကိုရိုက်ပါ။

$sudo service ssh restart

ဤနေရာတွင်သင်သည် Server Hardening ၏နောက်ထပ်အချက်တစ်ချက်ကိုပြုလုပ်၍ပြီးစီးပါပြီ။
ထို့နောက်တွင်တော့နောက်ထပ်အရေးကြီးသည့်အချက်တစ်ချက်ဖြစ်သော
Login Grace Time ဆိုတာကိုဆက်လက်လုပ်ဆောင်ရပါမည်။

Login Grace Time

Login Grace Time ဆိုသည်မှာသင့် Server ကိုစတင်၍ connect
လုပ်သည့်အချိန်မှစ၍စက္ကန့်ဘယ်လောက်အတွင်းသာ Server ရဲ့ login ကိုပြုလုပ်ချိန်ပေးမယ်ဆိုတာဖြစ်ပြီး
သင်ပေးသောအချိန်များလေလေ Attacker အတွက်သင့် Server ကိုတိုက်ခိုက်ရန်အချိန်ပိုရလေလေဖြစ်
ပါသည်။ Ubuntu ကပေးထားသော Default အချိန်သည် ၂ မိနစ် (စက္ကန့် ၁၂၀) ဖြစ်ပြီးကျနော့်အနေဖြင့်
recommend
လုပ်ချင်သည်မှာ စက္ကန့် ၂၀ သာဖြစ်ပါသည်။ ဒါကတော့သင့်အနေဖြင့်သင့်ရဲ့ connection
မြန်ဆန်မှုအပေါ်မူတည်ပြီးသင့်စိတ်ကြိုက်ပြုပြင်ပြောင်းလဲနိုင်ပါသည်။ ထိုသို့ပြောင်းလဲရန်အတွက်သင့်အနေ
ဖြင့်အောက်ပါ command ကိုရိုက်ထည့်ရန်လိုအပ်ပါမည်။

$sudo vi /etc/ssh/sshd_config

ထို့နောက်တွင်သင်သည် LoginGraceTime 120 ဆိုသည့်နေရာတွင် LoginGraceTime 20 ဟုပြောင်း
လဲ၍ save လုပ်ပြီးထွက်လိုက်ပါ။ ထို့နောက်သင်သည် ssh service ကို restart ချပေးရန်လိုအပ်ပါလိမ့်မည်။
ဤနေရာတွင်ကျနော်ထပ်မံဖြည့်စွက်ပြောလိုသည်ကသင်သည် sshd_config ထဲမှ config များကိုအပြောင်း
အလဲပြုလုပ်ပြီးသည့်အခါတိုင်းတွင်သင့်အနေဖြင့် ssh service ကို restart ပြုလုပ်ပေးရန်လိုအပ်ပါလိမ့်မည်။
ထို့ကြောင့်သင့်အနေဖြင့်ဤ guide ကိုဖတ်ပြီးသည့်အခါတွင်လိုအပ်သည်များကိုတစ်ကြိမ်တည်းပြောင်း၍
တစ်ကြိမ်ပဲ restart ပြုလုပ်ပါကသင်သက်သာလိမ့်မည်ဖြစ်သည်။ … 😉 🙂 x) … … …..

Allow User

သင့်အနေဖြင့်သင့် Server ကိုလုံခြုံမှုရှိစေရန်အတွက်သင့် server အတွင်းသို့ပေးဝင်သည့် User ကို
အတိအကျသတ်မှတ်ပေးရန်လိုအပ်လိမ့်မည်ဖြစ်ပါတယ်။ ယခု Guide သည်ကျနော် Penetration
နှင့်ပါတ်သတ်၍ရေးသားသည်မဟုတ်သောကြောင့် Server Admin ဘက်မှစဉ်းစားနည်းတစ်ခုကိုသာ
ဥပမာဖေါ်ပြပေးပါမည်။ သင့်ရုံးတွင်သင်တစ်ယောက်တည်းသာ Admin မဟုတ်ဘဲအခြား Windows
ဘက်မှ Admin တစ်ယောက်လည်းရှိမည်ဆိုပါစို့။ ထို Windows Admin ကိုလည်းသင့်အထက်လူကြီး
အမိန့်အရသင်သည် Admin Access ပေးထားရသည်။ ထို Windows Admin သည် Company မှသူနှင့်
တူတူရာထူးတူသည့်သင့်ကိုခန့်လိုက်သောကြောင့် company ကိုရော၊ သင့်ကိုရောမကျေမနပ်ဖြစ်နေသူ
ဖြစ်သည်။ ထို့ကြောင့်သူသည် user account တစ်ခုကို create လုပ်ကာ admin right ပေးပြီးသင့် server
ထဲသို့ဝင်ရောက်ဖျက်ဆီးရန်ကြံစီခဲ့သည်ရှိသော်သင့်အနေဖြင့်ထိုအကောင့်ကိုယခု configuration က
တားဆီးပေးနိုင်လိမ့်မည်ဖြစ်သည်။ သင့်အနေဖြင့်ဆက်တွေးမိသည်များရှိပါကစိတ်ရှည်စွာစောင့်ပါဦးလို့
ကျနော်မေတ္တာရပ်ခံချင်ပါတယ်။ ကျနော့်အနေဖြင့်တစ်ဆင့်ပြီးမှတစ်ဆင့်သွားချင်သည့်အတွက်နောက်ဆက်
တွဲ Guide များတွင်သင်မေးလိုသည်များပါလာလိမ့်မည်ဟုအာမခံပါသည်။ ထိုမှမဟုတ်ရင်လည်းသင်သည်
ကျနော့် email: [email protected] ကိုလည်းကောင်း၊ Facebook: https://fb.com/ethankurt08
သို့လည်းကောင်းဆက်သွယ်၍မေးမြန်းနိုင်ပါသည်။ အိုကေသင့်အနေဖြင့် သင်သတ်မှတ်ထားသော user
များကိုသာ server ကို access လုပ်စေချင်လျှင်အောက်ပါ command ကိုရိုက်ထည့်ပါ။

$sudo vi /etc/ssh/sshd_config

ထို့နောက်တွင်တော့ သင်ကြိုက်နှစ်သက်သည့်နေရာတွင်အောက်ပါစာကြောင်းကိုရိုက်ထည့်လိုက်ပါ။

#Allow Users

AllowUsers USER_1 USER_2 USER_3

အပေါ်မှတစ်ကြောင်းသည် standard အရရိုက်ထည့်ထားသောစာကြောင်းသာဖြစ်သည်။ သင်မှတ်ထား
ရမည်က configuration တိုင်းတွင်စာကြောင်းအရှေ့ မှ # ခံထားလျှင် comment အဖြစ်ပြောင်းသွားပြီး
System
မှ # နောက်မှစကားလုံးများကို command ဟုမသတ်မှတ်ဘဲ comment ဟုသာသတ်မှတ်လိမ့်
မည်ဖြစ်တယ်ဆိုတာပါ။ ဒါကအရေးကြီးပါတယ်။ သင့်အနေဖြင့် configuration အသစ်တစ်ကြောင်းတိုး
ချင်လျှင်မူလရှိနေသော configuration ကို ဖျက်မပစ်ဘဲ # သာခံထားသင့်ကြောင်းကိုပါဒီနေရာမှတစ်ခါ
တည်းအကြံပြုပါရစေ။ ထို့နောက်တွင်တော့သင်သည်ထုံးစံအတိုင်း ssh service ကို restart ချပေး
ရန်လိုအပ်ပါလိမ့်မည်။

Denied to ssh login with password

ကျနော် Server Hardening Part – 1 တွင်ချန်ခဲ့သည့်နောက်ထပ်တစ်ခုဖြစ်ပါသည်။ စာဖတ်သူများရဲ့
feedback
ကိုစောင့်သော်ငြားလည်းမည်သူမှ feedback ပြန်မလာသည့်အတွက်ကြောင့်ယခု guide
တွင်ဖြည့်ပေးလိုက်ရခြင်းဖြစ်သည်။ အဲ့တာကတော့ ကျနော်တို့သည် server ကို private/public key
ဖြင့်သာဝင်ခွင့်ပြုသည်ဟုဆိုသော်ငြားလည်း password ဖြင့်ဝင်ရောက်သည်ကိုမပိတ်ရသေးသည့်အချက်
ဖြစ်ပါသည်။ အဲ့တာကိုမပြင်သမျှသင့် server သည် ssh key ဖြင့်သာမက password ဖြင့်သာ server
အတွင်းသို့ဝင်ရောက်ခွင့်ပြုနေမှာဖြစ်ပါတယ်။ ထိုအရာကိုပိတ်ရန်ယခုပင်ပြုလုပ်ပါတော့မည်။ ထိုသို့

ပြုလုပ်ရန်အတွက်ထုံးစံအတိုင်းအောက်မှ command ကိုရိုက်ထည့်ပါ။

$sudo vi /etc/ssh/sshd_config

ထို့နောက်တွင်သင်သည် #PasswordAuthentication yes ဆိုသည့်ရှေ့ က # ကိုဖြုတ်၍ no ဟု
ပြောင်းပေးရမည်ဖြစ်ပါသည်။ PasswordAuthentication no ဟုပြောင်းပြီးပါကထို config file ကို
save
လုပ်ပြီးထွက်လိုက်ပါ။ ထို့နောက် ssh service ကို restart ချပါ။

ကျနော် User Account Setting ကိုအရမ်းရှင်းချင်နေပြီဖြစ်ပေမယ့်အခုနောက်ဆုံးလက်ဆောင်အဖြစ်
ကျနော် ufw firewall ကိုအတိုချုံးပြီးပဲရှင်းပြလိုက်ပါတော့မယ်။ Server ကို lockdown လုပ်ရာတွင်
မဖြစ်မနေအရေးကြီးသည့်အချက်များရှိပါတယ်။ အဲ့တာတွေကတော့ Logical တင်မကဘဲ Physical
ပါဖြစ်တဲ့ Server Room ကိုအမြဲပိတ်ထားတာတို့၊ Server Room ကိုဘယ်အချိန်ကနေဘယ်အချိန်ထိ
ဝင်ခွင့်ပြုတာတို့၊ ဘာအကြောင်းကြောင့်ဝင်ရတာလဲတို့၊ ဝင်ခွင့်ရှိသူတွေကဘယ်သူတွေလဲဆိုတာတွေ၊
Server room
ရဲ့ တံခါးမှာ အခွင့်မရှိသူမဝင်ရ ဆိုတဲ့ဆိုင်းဘုတ်ကပ်ထားတာကအစပါဝင်ပါတယ်။
ဒါပေမယ့် Physical ကတော့မပြောပြတော့ဘဲ Logical ရဲ့ အခြေခံအချက်အလက်တွေကိုပြောရရင်

Securing user accounts
Securing passwords
Securing the filesystems
Securing software and services and
Monitoring the system

တို့ဖြစ်ပါတယ်။ ဒါကတော့ Basic ပါ။ Advanced မှာဆိုရင်တော့ Hashing, Verifying, Encrypt/Decrypt,
PAM, iptables, memory limitation
နဲ့အခြားသောအရာတွေပါပါတယ်။ Advanced တွေအကုန်လုံး
ကတော့ကျနော်နောင်ရေးမယ့် Guide များတွင်လည်းပါလာမှာမဟုတ်ပါ။ ဘာကြောင့်ဆိုတော့အကုန်လုံး
ကိုချပြလိုက်ရင်အရမ်းပေါတယ်ထင်တဲ့လူတွေများတဲ့အတွက်ကြောင့်ကျနော်ချပြမှာမဟုတ်လို့ပါ။ အဲ့တော့
ကျနော်တို့ဟာ security ကိုချဉ်းကပ်ပြီဆိုလျှင် firewall ဆိုတာကမရှိမဖြစ်အခန်းခဏ္ဏတစ်ခုကနေပါဝင်
လာပါတယ်။ အဲ့အတွက်ကြောင့်ရှင်းပြပေးတာဖြစ်ပါတယ်။ နောက်ထပ်ရေးမည့် guide တွင်တော့
firewall
ကို deeply ဖြစ်လာပြီးနောက်ဆက်တွဲ third-party software ဖြစ်တဲ့ fail2ban တို့၊ DenyHost
တို့ပါထည့်သွင်းဖေါ်ပြပေးမှာဖြစ်ပါတယ်။လောလောဆယ်တော့ဒါလေးနဲ့ကျေနပ်လိုက်ပါဦး။

Uncomplicated FireWall (UFW)

Ubuntu တွင် default အနေဖြင့် uncomplicated firewall လို့ခေါ်တဲ့ Firewall တစ်ခုပါလာပါတယ်။
ဒါကတော့စသုံးတဲ့ user တွေအနေဖြင့် AppArmor တို့ iptables တို့ကိုသွားပြီးပြင်၍အမှားတစ်ခုခုဖြစ်
လာရင်ဖြေရှင်းရခက်မှာစိုးတဲ့အတွက်ထည့်ပေးလိုက်တဲ့ firewall တစ်ခုပါ။ သူကနာမည်အတိုင်းပဲ အရမ်း
ကိုရိုးရှင်းပါတယ်။ သင်သည်သင့် server တွင် ufw ကို enable မလုပ်ခင်မှာတစ်ခုသတိထားရမှာရှိပါတယ်။
အဲ့တာကတော့သင့်အနေဖြင့် port 22 ဖြစ်တဲ့ ssh port ကိုရှေးဦးစွာ allow လုပ်တဲ့ rule ထည့်ပေးဖို့ပါပဲ။
သို့မှမဟုတ်ဘဲသင့်အနေဖြင့် ufw firewall ကို enable လုပ်လိုက်လျှင်သင်သည်သင့် server နှင့်ချိတ်ဆက်
ထားမှုပျက်တောက်သွားမှာဖြစ်တဲ့အတွက်ကြောင့်အလွန်ပင်အရေးကြီးပါတယ်။ အောက်တွင် command
များနှင့်ပြုလုပ်နည်းများကိုရှင်းပြပေးထားပါတယ်။

port 22 ကို allow ပြုလုပ်ခြင်း

$sudo ufw allow 22

port 22 တွင်မှ TCP protocol ကိုသာ allow ပြုလုပ်ခြင်း

$sudo ufw allow 22/tcp

ရှိနေသာ 22/tcp rule ကို delete ပြုလုပ်ခြင်း

$sudo ufw delete deny 22/tcp

service name ဖြင့် allow ပြုလုပ်ခြင်း

$sudo ufw allow ssh

http service ကို deny ပြုလုပ်ခြင်း

$sudo ufw deny http

သတ်မှတ်ထားသည့် ip address မှသာပေးဝင်ခြင်း

$sudo ufw allow from 10.20.30.40

attack လုပ်နေသည့် ip address အား deny လုပ်ခြင်း

$sudo ufw deny from 40.30.20.10

သတ်မှတ်ထားသည့် ip address အားသတ်မှတ်ထားသည့် port မှတဆင့်မည်သည့် protocol ကို
မဆိုလက်ခံခြင်း

$sudo ufw allow from 10.20.30.40 to any port 22

သတ်မှတ်ထားသည့် ip address အားသတ်မှတ်ထားသည့် port မှတဆင့် သတ်မှတ်ထားသော

protocol ကိုသာအသုံးပြုစေခြင်း

$sudo ufw allow from 10.20.30.40 to any port 22 proto tcp

ဒီလောက်ဆိုလျှင်သင်ဆက်တွေးကာသင်အလိုရှိသလိုအသုံးပြု၍ရနိုင်မည်ဟုကျနော်ယူဆပါသည်။
ထိုသို့ rule ထည့်ပြီးလျှင်တော့သင်သည် ufw ကို enable လုပ်ရမည်ဖြစ်ပါသည်။ မှတ်ချက်။ ။ ufw သည်
enable
မလုပ်ဘဲနှင့် status ကိုစစ်၍မရပါ။ ufw ကို enable လုပ်ချင်လျှင်အောက်ပါ command ရိုက်ပါ။

$sudo ufw enable

ထို့နောက် ufw ရဲ့ status ကိုကြည့်လိုလျှင်အောက်ပါ command ကိုရိုက်ပါ။

$sudo ufw status

အိုကေ။ အဲ့တာဆိုလျှင်ကျနော်တို့ဒီမှာတင် Server Hardening Part – 2 ကိုရပ်လိုက်ကြရအောင်။

ဆက်ပြီးတော့ကျနော့်အနေဖြင့်သင်တို့အားအလွန်တရာမှသိစေချင်သော User Account Settings
အကြောင်းကိုဆက်ရှင်းပြပါမယ်။

useradd

ကျနော်တို့အနေဖြင့် user account တစ်ခုကို Terminal မှာ Create လုပ်တော့မယ်ဆိုရင် adduser

ဆိုတဲ့ command ကိုအသုံးပြုရပါတယ်။ ထို command ရဲ့နောက်မှာ switch တွေအများကြီးရှိတဲ့အထဲ
ကနေမှအသုံးအများဆုံး switch တွေကိုဖေါ်ပြပေးလိုက်ပါတယ်။

-m, –create-home create the user’s home directory

ဒီ option ကတော့ user ကို create လုပ်ပြီဆိုတာနဲ့ထို user အတွက် user ရဲ့ login name နဲ့ထပ်တူ
ကျတဲ့ home directory ကို /home အောက်မှာသွားတည်ဆောက်ပေးတာပါ။ ထပ်ရှင်းပါမယ်။ ဥပမာ
စာဖတ်သူက $sudo useradd -m ethan ဆိုတဲ့ command ကိုရိုက်လိုက်လျှင် system မှထို user
အတွက် home directory ကို /home/ethan ဆိုပြီးအလိုအလျောက်တည်ဆောက်ပေးသွားပါတယ်။
မရှင်းသေးရင်အောက်ကိုဆက်ကြည့်ပါဦး။

-d, –home-dir HOME_DIR home directory of the new account

ဒါကတော့ပုံစံကွဲတစ်မျိုးပါ။ သင်ဟာ user ကို ethan ဆိုတဲ့နာမည်နဲ့တည်ဆောက်ခဲ့ပေမယ့် ethan ရဲ့
home directory name
ကို ethankurt ဆိုပြီးပေးချင်တယ်ဆိုရင်သုံးရတာပါ။ ဒါက LDAP တို့ SAMBA4
တို့ကို Manage လုပ်ချင်တဲ့လူရဲ့ format ပေါ်မူတည်ပြီးသုံးပါတယ်။ များသောအားဖြင့်ဒီ switch ကိုအသုံး
ပြုတာနည်းပါတယ်။ command ကတော့အောက်မှာပါ။

$sudo useradd -d /home/ethankurt ethan

-s, –shell SHELL login shell of the new account

သူကအရေးကြီးပါတယ်။ တစ်ခေတ်တစ်ခါကကျနော့်ရဲ့ အကြိုက်နှစ်သက်ဆုံး command ဖြစ်ခဲ့ဖူးပါတယ်။
Linux
မှာကျနော်တို့အသုံးများတဲ့ (လူတွေသိသိ၊ မသိသိ) သုံးနေကြတဲ့ SHELL နာမည်က Bourne Again Shell
လို့ခေါ်တဲ့
(bash) ဖြစ်ပါတယ်။ Ubuntu မှာ useradd ဆိုတဲ့ command ကိုအသုံးပြုရင် Default အနေနဲ့
ပေးသုံးတာက
Standard Shell ဖြစ်တဲ့ (sh) ပါ။ ဘာကွာလဲလို့မေးရင် sh မှာ bash လိုမျိုး $ or #
sign ရဲ့ ရှေ့ မှာ [email protected] မပါပါဘူး။ နောက်တစ်ခုဆိုးဝါးလှတာကတော့ Linux သမားတွေရဲ့
အသဲစွဲဖြစ်တဲ့ tab key အလုပ်မလုပ်နိုင်တာပါပဲ။ အဲ့တော့ ကျနော်ကတော့ bash ကိုပဲသဘောကျလို့
bash
ပဲသုံးဖြစ်တယ်ဗျ။ မေးစရာရှိလာတာက အဲ့လို
useradd နဲ့ user ထည့်လိုက်တဲ့အခါမှာ defaul ကို
bash shell
ကိုသုံးဖို့အတွက်ပြောင်းလို့မရဘူးလားဆိုတာပါ။ ရပါတယ်။ ပြောင်းလို့ရတဲ့နည်းကကျနော်သိ

သလောက် ၃ မျိုးရှိပါတယ်။ ပထမတစ်မျိုးကတော့
/etc/default/useradd အောက်မှာ SHELL=/bin/sh
ဆိုတာကို SHELL=/bin/bash ဆိုပြီးပြောင်းတဲ့နည်းပါပဲ။ အဲ့တာကနောက်ထပ်တိုးမယ့် user တွေအတွက်ပါ။
အရင်ရှိပြီးသား
user တွေကိုကျတော့ဘယ်လိုပြောင်းမလဲဆိုရင်အောက်က command အတိုင်းပြောင်းပေးလို့ရပါတယ်။

$sudo chsh -s /bin/bash USER_NAME

မိမိသုံးနေတဲ့ shell ကဘာ shell လဲဆိုတာသိချင်ရင်တော့ အောက်ပါအတိုင်းရိုက်ပြီးကြည့်နိုင်ပါတယ်။

$echo $SHELL

Available ဖြစ်တဲ့ shell တွေကိုကြည့်ချင်တယ်ဆိုရင်တော့အောက်က command ကိုရိုက်ပြီးကြည့်နိုင်ပါတယ်။

$cat /etc/shells

နောက်ဆုံးတစ်နည်းကျန်ပါသေးတယ်။ သို့ပေမယ့်အဲ့တာကိုအောက်မှာတစ်ခါတည်း
ရှင်းပြချင်တာဖြစ်လို့အခုမရှင်းတော့ပါဘူး။

-D, default

ကျနော်အကြိုက်ဆုံးတစ်ခုပါ။ $sudo useradd -D သင့်ကို useradd command ရဲ့ default တွေကို
ဖေါ်ပြပေးမှာပါ။ အဲ့ default ကိုတော့သင်ဟာအပေါ်မှာပြောထားတဲ့ /etc/default/useradd မှာသင့်
စိတ်ကြိုက်သွားရောက်ပြုပြင်နိုင်ပါတယ်။ UID တို့၊ Account Expire Date တို့၊ Email folder တို့၊
skel တို့ အစရှိသဖြင့်သင့်စိတ်ကြိုက်သင်ကြိုက်ရာကိုသွားရောက်ပြုပြင်နိုင်ပါတယ်။ ကြုံလို့တစ်ခါတည်း
ပြောပါရစေ Linux ရဲ့အားသာချက်က customize (သင့်စိတ်တိုင်းကျပြုပြင်ပြောင်းလဲနိုင်ခြင်း) ဆိုတာ
ကဒါတွေကိုပြောတာပါ။ သင်မကြိုက်နှစ်သက်တာကို Windows မှာလိုအောင့်အီးသည်းခံသုံးနေစရာမလို
အပ်ပါဘူး။ သင့် OS ဟာသင့်လက်ထဲမှာပါ။ သင့်စိတ်တိုင်းကျသင်အလိုရှိသလိုပြုပြင်ပြောင်းလဲနိုင်ပါတယ်။
ကျနော် switch တွေအကုန်ပြောချင်ပေမယ့်ရောထွေးကုန်မှာစိုးတဲ့အတွက်ကြောင့်အကုန်မပြောတော့ပါဘူး။
အပေါ်က switch တွေကတော်ရုံ Sys Admin တွေအသုံးပြုလို့ရတဲ့ command switch တွေပါ။ UID တို့
GID
တို့ password တို့ကနောက်မှလိုက်ပြောင်းလဲရတာဖြစ်တဲ့အတွက်ကြောင့်အထွေအထူးထပ်မပြော
တော့ပါ။

/etc/passwd

အခုပြောမှာကတော့နည်းနည်းလေးအရေးပါတဲ့အချက်ပါ။ အဲ့တာကဘာလဲဆိုတော့ /etc/passwd ဆိုတဲ့
File
ပါ။ သူကလူတိုင်းကို access ပေးမလုပ်ထားသင့်ပါဘူး။ Admin ထဲမှာတောင်မှ experience မရှိတဲ့
admin
ကိုပေးပြီး access မလုပ်ခိုင်းသင့်ပါဘူး။ ဘာကြောင့်ဆိုတော့ user နဲ့ပါတ်သတ်သမျှ information
တော်တော်များများကအဲ့အောက်မှာရှိနေလို့ပါပဲ။ စာဖတ်သူအနေဖြင့်

$sudo cat /etc/passwd

ဆိုတဲ့ command ကိုရိုက်လိုက်မည်ဆိုလျှင်အောက်ပါအတိုင်းတွေ့ မြင်ရမှာဖြစ်ပါတယ်။

ethan:x:1001:1001::/home/ethan:/bin/bash

ဒါကနမူနာတစ်ကြောင်းပဲပြထားတာပါ။ အဲ့လိုမျိုးအများကြီးတွေ့ ရမှာဖြစ်ပါတယ်။ တစ်ခုခြင်းစီရှင်းပြပေးပါမယ်။

ethan ဆိုတာကတော့ login username ပါ။

x ဆိုတာကထိုအကောင့်ရဲ့ shadowed password ကိုဆိုလိုပါတယ်။

shadow password ဆိုတာဘာလဲဆိုတော့ကျနော်တို့ user တစ်ယောက်အတွက် password ပေးလိုက်
ပြီဆိုရင် /etc/shadow ဆိုတဲ့နေရာမှာ encrypted လုပ်ပြီးထိုအကောင့်ရဲ့ password ကိုသွားသိမ်း
ပေးပါတယ်။
နမူနာအနေဖြင့်အောက်မှာမြင်တွေ့ ရမှာဖြစ်ပါတယ်။

ethan:$6$VUwZZYXw$rqAM/QknQnLkEiHzQ6PbN0D4ZQsEdsAHqENGT5U.5wbJdHRBr
XNVh0RtOAdCPYTPb
LmcpDklLP080PXLbsSG0:16829:0:99999:7:::

ဒီ file ကိုယူပြီး decrypt လုပ်မယ်ဆိုရင်သူတို့ password တွေကိုငါရပြီပဲလို့သင်တွေးနေသလား။
လက်လျှော့လိုက်ပါ။ ကျနော် SAM database ကိုလွယ်လင့်တကူ crack လုပ်လို့ရတဲ့ john-the-ripper တို့၊
bkhive
တို့၊ Hashcat တို့နဲ့ Ubuntu မှာရမလားစမ်းကြည့်ပါသေးတယ်။ ၂ ရက်လောက်လွှတ်ထားတာ
တောင် positive result မထွက်လာလို့ကျနော်လက်လျှော့လိုက်ပါတယ်။ Crack မလုပ်ဘဲအခြားနည်းနဲ့
တော့ access ယူလို့ရပေမယ့်ဒါက penetration အကြောင်းပြောနေတာမဟုတ်တဲ့အတွက်ဒီမှာတင်ရပ်
လိုက်ပါတော့မယ်။ ပြောချင်တာကဒီ file ကဘယ်လောက်အရေးကြီးသလဲဆိုတာရယ်၊ သွားကြည့်လိုက်လို့
တွေ့ နေရတဲ့အခါငါ crack လုပ်လိုက်လို့ရမှာပါလို့မထင်စေချင်တာရယ်အတွက်ကြောင့်ပါ။ သူသုံးထားတဲ့
Algorithm
က SHA-2 or SHA-512 ပါ။ ကျနော်သုံးတာက Ubuntu 14.04.03 LTS ပါ။ အဲ့တာကိုဘယ်လိုမျိုးခွဲသလဲ
ဆိုတာကိုပါပြောပြပေးပါမယ်။ သင်အပေါ်မှာပြထားတဲ့
encryption တွေရဲ့
အစကိုကြည့်လိုက်ပါ

$1$:
ဆိုရင် MD5 ပါ။ $5$: ဆိုရင် SHA-256 ပါ။ $6$: ဆိုရင်တော့ SHA-512 ဖြစ်ပြီး
$2a$: ဆိုရင်တော့ နေရာတော်တော်များများမှာ support မလုပ်တားတဲ့ blowfish ဖြစ်ပါတယ်။
အဲ့တာတွေနဲ့ကွဲလွဲနေတယ်ဆိုရင်တော့အဲ့တာဟာ DES ဖြစ်ပါတယ်။ သေချာတာကတော့ DES (or) 3DES
ကိုဘယ်သူမှမသုံးကြတော့ပါဘူး။ MD5 HASH တောင်မှ Theoryအရချိုးဖျက်နိုင်ပြီလို့ကြေငြာပြီးတဲ့
အတွက်ကြောင့်တော်တော်များများဟာ SHA ကိုသာဦးစားပေးသုံးလာကြပါတယ်။ ကျနော်ဟာ ဒါတွေနဲ့
ပါတ်သတ်ပြီးပြောရင်အဆုံးမသတ်နိုင်အောင်ပြောတတ်တဲ့အတွက်ကြောင့်မူရင်း guide နဲ့
ကွဲလွဲသွားမှာစိုး
တဲ့အတွက်ကြောင့်ဒီမှာတင် break လုပ်လိုက်ပါပြီ။

အပေါ်ကရှင်းနေတာကိုပြန်ဆက်ပါမယ်။ ပမဆုံး 1001 ဆိုတာကတော့ User ID (UID) ဖြစ်ပါတယ်။
User ID
ကိုအတိုချုံးပြောရရင် 0 ကတော့ root အတွက်ကိုဘယ်ထားပါတယ်။
1 – 99 ကတော့ bin တို့၊ mail တို့၊ www-data တို့လိုမျိုး predefined account များအတွက်ဖြစ်ပါတယ်။
100 – 999 ကတော့ system ကနေပြီးတော့ system account တို့ group တို့ကို manage
လုပ်ဖို့အတွက်ဖယ်ထားပေးတာဖြစ်ပါတယ်။

ဒုတိယ 1001 ကတော့ Group ID (GID) ဖြစ်ပါတယ်။ အဲ့ ID တွေကိုကြည့်ချင်ရင်တော့ /etc/group

ဆိုတဲ့ file မှာသွားကြည့်နိုင်ပါတယ်။

အဲ့တာပြီးတဲ့အခါမှာ :: ဆိုပြီးရှိပါတယ်။ အဲ့တာကတော့ကျနော် comment မပေးခဲ့မိလို့ပါ။ အဲ့နေရာမှာ
User
ရဲ့ full name or phone number မျိုးတွေကိုပြတဲ့နေရာပါ။ မြင်သာအောင်ပြရရင်

ethan:x:1001:1001:Ethan Kurt:

အဲ့လိုမျိုးမြင်တွေ့ ရမှာဖြစ်ပါတယ်။

နောက်ထပ်မြင်တွေ့ ရတဲ့ /home/ethan ဆိုတာကတော့
ထို
user ရဲ့ home directory ကိုပြတာဖြစ်ပါတယ်။

နောက်ဆုံးတစ်ခုဖြစ်တဲ့ /bin/bash ကတော့ထို user ရဲ့ default shell ကိုဖေါ်ပြတာဖြစ်ပါတယ်။ ကျနော်
အပေါ်ကပြောဖို့ကျန်တဲ့ shell ကိုပြောင်းတဲ့နေရာကဒီမှာပါပဲ /bin/sh ဖြစ်နေတာကို /bin/bash ဆိုပြီး
ပြောင်ပေးလိုက်ရင်ထို user ရဲ့ default shell က /bin/bash ဖြစ်သွားပါပြီ။ ဒါကိုပြောပြလိုက်တာစာဖတ်သူ
အနေနဲ့ user နဲ့ပါတ်သတ်ပြီးတော်တော်လေးသိသွားမယ်လို့မျှော်လင့်ပါတယ်။ ကျနော်ဘာကြောင့်ဒါကို
ပြောရသလဲဆိုတော့ ကျနော်အရင်တုန်းက /home/ အောက်မှာ user ရဲ့ home directory မရှိလို့ပါတ်ပြီး
ရှာခဲ့ဖူးတယ်။ /bin/sh ကနေ /bin/bash နဲ့မကွဲလို့ terminal ကိုဝင်တဲ့အခါစာလုံးအပြည့်အစုံကို
လက်
ညောင်းအောင်ရိုက်ခဲ့ဖူးတယ်။ user တွေ group တွေကို ID နဲ့မကြည့်တတ်လို့ အစအဆုံးလိုက်ရှာပြီး
တစ်ယောက်ခြင်းစီမှတ်ခဲ့ရဖူးတယ်။ အဲ့လိုမျိုးကျနော်ကြုံသလိုတွေစာဖတ်သူတွေကိုမကြုံရအောင်လို့
တတ်နိုင်သလောက်လေးပြန် share လိုက်တာပါ။ အားလုံးပဲကျေနပ်ကြလိမ့်မယ်လို့မျှော်လင့်ပါတယ်။

 ဒီ Guide နဲ့ပါတ်သတ်တဲ့ Video Tutorial ကြည့်ချင်လျှင် ဒီကိုနှိပ် ပါ။