Ubuntu Server Hardening (Part-1)

322

Ubuntu ကိုသုံးနေတဲ့ User အသစ်တွေ (အသစ်တွေဆိုတာက Desktop Version ကိုသုံးနေတာကြာပြီ။
သို့ပေမယ့် Server ပေါ်ကိုအခုမှစတင်အသုံးပြုမယ့်လူတွေ) ကိုဒီနေ့တွေ့ တော့မေးခွန်းတစ်ခုမေးလိုက်မိတယ်။
အဲ့တာဘာလဲဆိုတော့ အခု Public IP နဲ့ Server တစ်ခုရပြီဆိုကြပါစို့။ ဘာအရင်ဆုံးစလုပ်မလဲဆိုတဲ့မေးခွန်းပါ။ အဖြေကအမျိုးစုံထွက်လာပါတယ်။ User အသစ်ဖန်တီးမယ်။ လိုအပ်တဲ့ Software တွေ installation လုပ်မယ်။ မသိဘူး။ စသဖြင့်ပေါ့။ ကို က Security သမားဆိုတော့သူတို့ကို Server ကို Access ရရခြင်းဘာလုပ်မလဲဆို
တာကိုသိသလောက်၊ တတ်သလောက်လေး Share ပေးလိုက်တယ်။ အဲ့တာကိုနားထောင်ခဲ့တဲ့လူတွေတင်မဟုတ်ဘဲ
လက်လှမ်းမှီသလောက်လူတွေသိရအောင်ပြန်ပြီးတော့ Sharingလုပ်ပေးလိုက်ပါတယ်။

ကျနော်တို့ Server ကိုစရပြီဆိုတာနဲ့အရင်ဆုံးလုပ်ရမှာကတော့ root password ကိုပြောင်းလိုက်ဖို့ပါပဲ။
ဘာကြောင့်လဲဆိုတော့ စစဝင်ခြင်း Ubuntu Server မှာ root access နဲ့ဖြစ်နေတတ်လို့ပါပဲ။

ဒုတိယအဆင့်အနေနဲ့ကတော့ ထို Server ကိုဘယ်သူဝင်သုံးနေသလဲဆိုတာကိုကြည့်ရမှာပါ။ အဲ့တော့

#w

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

#pkill -u USER_NAME

နဲ့ကစ်ထုတ်ပစ်လိုက်ပါ။ ဒါကတော့ကိုက Admin တစ်ယောက်ဖြစ်ပြီး server ကို hardeningလုပ်မယ်ဆိုရင်
သင့်ဘက်ကနေ safe side ဖြစ်အောင်အဲ့လိုလုပ်ရမှာပါ။ ဒါကတော့ပထမအဆင့်ပါ။

ဒုတိယအဆင့်အနေနဲ့ကတော့ admin privileged level ရှိတဲ့ user account တစ်ခုကိုတည်ဆောက်
ရမှာပါ။ ရိုက်ရမယ့် command ကတော့ #useradd -m USERNAME ပါ။ ဒီနေရာမှာထပ်ရှင်းပြချင်တာတွေ
ရှိပါသေးတယ်။ useradd လို့ပဲနှိပ်ပြီးနောက်က username ကိုရိုက်ထည့်လိုက်ရင်လည်း user

တည်ဆောက်ပြီးသားဖြစ်သွားပါတယ်။ ဒါပေမယ့် user သာတည်ဆောက်သွားပြီး /home/ အောက်မှာ
ထို user နဲ့သက်ဆိုင်တဲ့ home directory အလိုလိုမတည်ဆောက်သွားပါ။ အဲ့တာကြောင့်စာဖတ်သူ
အနေဖြင့် -m ဆိုတဲ့ switch ကိုပေါင်းထည့်ပေးဖို့လိုအပ်ပါတယ်။ -m ဆိုတာကကိုဖန်တီးလိုက်တဲ့
user
ရဲ့ home directory ကိုတည်ဆောက်ပေးလိုက်ပါလို့ဆိုလိုတဲ့ switch ဖြစ်ပါတယ်။ အဲ့တော့
ကျနော်တို့အနေနဲ့ user account အသစ်ကိုတည်ဆောက်ပေးပြီးသွားပါပြီ။ သို့ပေမယ့် ထို user
အသစ်သည် root access ကိုမရသေးပါဘူး။ အဲ့တော့ကျနော်တို့အနေဖြင့် ထို access ကိုရအောင်
လုပ်ပေးဖို့လိုပါလိမ့်မည်။ ထိုကဲ့သို့ root access ရစေရန် command ကတော့

#usermod -aG GROUP_NAME USER_NAME

ဆိုတဲ့ format အတိုင်းသွားရမှာဖြစ်ပါတယ်။ ကျနော်တို့က superuser access ရစေချင်တဲ့အတွက်ကြောင့် ထို user ကို sudo (superuser do) ဆိုတဲ့ group ထဲကိုထည့်ပေးရမှာဖြစ်ပါတယ်။ အဲ့အတွက်ကြောင့်

အောက်ပါ command ကိုရိုက်ထည့်ပါ။

#usermod -aG sudo USER_NAME

ဒါဆိုလျှင်ထို user သည် super user access ကိုရပြီဖြစ်ပါပြီ။ ထို့နောက်တွင်နောက်ဆုံးအချက်အနေ
ဖြင့်ထို user ကို password ပေးရပါမည်။ ထို့ကြောင့်ထို user အား password ပေးရန်အောက်မှ
command
ကိုရိုက်ထည့်ရပါမည်။

#passwd USER_NAME

password ကိုရိုက်သည့်အခါတွင်မည်သည့်စာလုံး (ဝါ) asterisk sign မှပေါ်လာလိမ့်မည်မဟုတ်ပါ။
စာဖတ်သူအနေဖြင့်တူညီသော password ကို ၂ ခါရိုက်ထည့်ရမည်ဖြစ်ပါသည်။
ထိုသို့ရိုက်ထည့်ပြီးလှ ျင်
တော့ဒုတိယအဆင့်ပြီးမြောက်ပါပြီ။

တတိယအဆင့်အနေဖြင့်စာဖတ်သူလုပ်ရမည်မှာ root account ကို login လုပ်ခွင့်ပိတ်ပစ်ရမှာ
ဖြစ်ပါတယ်။ ဒါက Linux မှာဖြစ်ဖြစ် Windows မှာဖြစ်ဖြစ် built-in admin right ရနေတဲ့ account
ကိုမသာမာသူတွေ (Black or Brown Hackers) တွေကကိုယ့် Server ကိုလွယ်လင့်တကူမတိုက်ခိုက်
နိုင်အောင်ဖြစ်ပါတယ်။ အဲ့တာဆိုရင် root account ကိုကျနော်တို့မည်သို့မည်ပုံပိတ်ပစ်မည်နည်း။

ပထမဦးဆုံးနည်းကတော့ lock ချတာဖြစ်ပါတယ်။ အဲ့တော့အောက်မှ command ကိုရိုက်ထည့်ပါ။

$sudo passwd -l root

ဒါက desktop version မှာပါအသုံးဝင်ပါတယ်။ မသိသေးသောသူများက password မေ့သွားရင်
ပြန်လုပ်ရတာလွယ်ပါတယ်ကွာဆိုပြီး recovery mode ဖြင့် password reset ချရန်လုပ်သူများရန်က
နေကာကွယ်ပေးမယ့်နည်းလမ်းဖြစ်ပါတယ်။ အသင်ဉာဏ်ရှိသလိုအသုံးချနိုင်သည်။ ;P 😛 xP

ထို့နောက်အသင်သိရမည်မှာ password ဖြင့်ဝင်တာဟာ secure မဖြစ်ဘူးဆိုတာပါပဲ။ ထို့ကြောင့်မို့လို့
သင်သည် Private/Public key ဖြင့်သာ Server ကိုဝင်ရောက်ရန်ပြုလုပ်ရမည်ဖြစ်ပါတယ်။ ဤနေရာသည်
အရေးကြီးသည့်နေရာဖြစ်သောကြောင့်သင်သည်သေချာစွာဖတ်ဖို့လိုအပ်လိမ့်မည်ဖြစ်သည်။ ကျနော်
သည်အခု Article ကို Tutorial Video နှင့်တွဲပြသည်ဆိုသော်ငြားလည်းသင်သည် Video ကိုသာ
ကြည့်မည်ဆိုပါကနောက်ကွယ်မှာရှိသောလေးနက်မှုကိုနားလည်နိုင်မည်မဟုတ်ပါ။

ထို့ကြောင့်စာကိုဦးစားပေးဖတ်ဖို့လိုအပ်ပါလိမ့်မည်။ ဒါဆိုရင်စပါပြီ။

အဆင့် ၁။ Client ဘက်ခြမ်းတွင် ssh key generate ပြုလုပ်ခြင်း။

Article သည် Ubuntu User များကိုသာအဓိကဦးစားပေးပြီး Windows သမားများအတွက်မရည်ရွယ်
သောကြောင့်သင်သည် Windows တွင်ပြုလုပ်၍ရမည်မဟုတ်ပါ။ သင်သည် ssh key ကိုပြုလုပ်ရန်အတွက်
အောက်ဖေါ်ပြပါ command ကိုရိုက်ထည့်ရပါမည်။

$sudo ssh-keygen -t rsa -b 4096

ထိုသို့ရိုက်လိုက်လျှင်သင့်ကိုအောက်ပါအတိုင်း Terminal တွင်လာဖေါ်ပြလိမ့်မည်။

Generating public/private rsa key pair.

Enter file in which to save the key (/Users/ethan/.ssh/id_rsa):

ဒီနေရာကတော့ ssh မည်သည့် key ကိုမဆို default ထားတဲ့ လမ်းကြောင်း (path) နဲ့ နာမည်ဖြစ်ပါတယ်။
သင်ဟာဒီနေရာမှာ enter သာနှိပ်လိုက်မည်ဆိုလျှင် သင့်ရဲ့ home directory အောက်မှာ .ssh ဆိုတဲ့
folder
မရှိရင်ဆောက်ပေးသွားမှာဖြစ်ပြီးထို folder အောက်တွင်တော့ id_rsa နှင့် id_rsa.pub ဆိုတဲ့ file
၂ ခုတည်ဆောက်ပေးမှာဖြစ်ပါတယ်။ အောက်တွင်ထပ်မံရှင်းပြထားသည်။

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

သင်သည်အပေါ်တွင် enter နှိပ်လိုက်ပါကသင့်ကို system မှဤ private key အတွက် password ပေးမလား
ဟုလာမေးတာဖြစ်ပါတယ်။ ကျနော့်အနေဖြင့်အကြံပြုလိုသည်မှာသင်သည် password ပေးသင့်ပါသည်ဟုပါ။
မပေးချင်ရင်လည်း enter သာနှိပ်၍ဆက်သွားနိုင်ပါသည်။

Your identification has been saved in /Users/ethan/.ssh/id_rsa.

Your public key has been saved in /Users/ethan/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:GeeR6yyH3KwCR80exwT8wwns5b647DZcDK5NHZO5YMY [email protected]

The key’s randomart image is:

+—[RSA 4096]—-+

| o.. |

| + o. |

| =.O++ |

| . E=&o |

| . =SOo= |

| . ..+** |

| o =+o*. |

| o.*+. |

| +=o |

+—-[SHA256]—–+

သင်သည် password ပေးသည်ဖြစ်စေ၊ မပေးသည်ဖြစ်စေနောက်တစ်ဆင့်ကတော့အပေါ်တွင်မြင်တွေ့ ရတဲ့အတိုင်း

သင့်အား id_rsa နှင့် id_rsa.pub ဆိုသည့် file နှစ်ဖိုင်ကိုတည်ဆောက်ပြီးကြောင်းပြောတာဖြစ်ပါတယ်။
key fingerprint ဆိုတာကတော့သင့် key စစ်မှန်ကြောင်းကို confirm လုပ်တဲ့နေရာမှာသုံးတာဖြစ်ပါတယ်။
ဒါကတော့
ကျနော် private/public key algorithm အကြောင်းရေးတဲ့အခါမှသေသေချာချာထပ်မံရှင်းပြပါမယ်။
အခုကတော့ 
Server Hardening အကြောင်းဖြစ်တဲ့အတွက်ကြောင့်ဒါကိုထွေထွေထူးထူးမရှင်းပြနေတော့ပါဘူး။
စကားပြန်ကောက်
ရရင်ထိုကဲ့သို့သင်သည် rsa keypair တစ်ခုကိုရပြီးသွားပြီဆိုလျှင် စိတ်မချရတဲ့ internet ပေါ်
ဖြတ်သန်းသွားလာရ
မည့်သင့်ရဲ့ private key ကိုထပ်မံလုံခြုံအောင်ပြုလုပ်ဖို့လိုအပ်ပါဦးမယ်။
သင့်ရဲ့
private key ကို password ခံထားရုံမျှမကသေးဘဲ permission ပြောင်းလဲရန်လိုအပ်ပါဦးမည်။
ထို့ကြောင့်အောက်ပါ
command ကိုရိုက်ရန်လိုအပ်ပါမည်။

$sudo chmod 400 /home/USER_NAME/.ssh/id_rsa

ဒါဆိုလျှင်သင်သည် Client ဘက်မှလုပ်ဆောင်ရမည့်အချက်များပြည့်စုံသွားပြီဖြစ်ပါတယ်။ Client ဘက်ကနေ
လုပ်စရာကုန်သွားပြီလို့ပြောလို့ရသော်ငြားလည်း Server တွင် Manual မလုပ်ရစေရန်အတွက် Magic ဖြစ်တဲ့ command
လေးတစ်ကြောင်းသာရိုက်ဖို့လိုအပ်ပါတယ်။ ထို command မှာ …

$ssh-copy-id [email protected]_NAME (or) IP_ADDRESS

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

/usr/local/bin/ssh-copy-id: INFO: attempting to log in with the new key(s),
to filter out any that are already installed

/usr/local/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed —
if you are prompted now it is to install the new keys

[email protected]_NAME or IP_ADDRESS’s password:

ထိုအဆင့်ရောက်လျှင်ကျနော်တို့ဟိုးအစကတည်းကပြုလုပ်ထားတဲ့ user ရဲ့ password ကိုရိုက်ထည့်လိုက်ရုံပါပဲ။
ထို့နောက်တွင်တော့သင့်အားမည်သို့မည်ပုံဝင်ရမည်ဆိုသည့် command ကိုပါလာဖေါ်ပြပေးမှာဖြစ်ပါတယ်။

Number of key(s) added: 1

Now try logging into the machine, with: “ssh ‘[email protected]_Address or DOMAIN_NAME'”

and check to make sure that only the key(s) you wanted were added.

ဒါဆိုလျှင်သင့်အနေဖြင့် Basic Server Hardening လုပ်စရာအချက်များကုန်ပါတော့မယ်။

နောက်ဆုံးအချက်အနေဖြင့်ပြောပြချင်သည်မှာ သင့်ရဲ့ server ထဲကို root user ဖြင့် access လုပ်ခွင့်ကို
ပိတ်မှာဖြစ်ပါတယ်။ ထိုသို့လုပ်ဆောင်ရန်အတွက်သင်သည် vi ကိုအသုံးပြုတတ်ရမှာဖြစ်ပါတယ်။ vi ကိုအသုံးမပြုတတ်
လျှင်လည်း emac or nano စတဲ့ editor တစ်ခုခုဖြင့် ဝင်ရောက်၍ config file ကိုပြုပြင်နိုင်ပါတယ်။ သို့ပေမယ့်
ကျနော်ပြထားတဲ့ video tutorial တွင်တော့ vi ဖြင့်သာပြုပြင်ထားသည်ကိုသင်တွေ့ ရမှာဖြစ်ပါတယ်။ အဲ့တာဆို
ရင်ကျနော်တို့သည် file ကိုစတင်ပြုပြင်ပါတော့မည်။ ပြုပြင်ရမည်မှာ

PermitRootLogin yes

ဆိုသည်ကို

PermitRootLogin no

ဆိုပြီးပြင်ပေးရမှာဖြစ်ပါတယ်။ ပြီးလျှင်တော့ အောက်ပါ
command ကိုအသုံးပြုပြီး
ssh service
ကို restart ချရမှာဖြစ်ပါတယ်။ ဤပြုပြင်မှုသည်တစ်စုံတစ်ယောက်ကပဲဖြစ်ဖြစ်၊ သင်ကိုယ်
တိုင်ပင်မတော်တဆဖြစ်ဖြစ် root account ကို unlock လုပ်မိသည့်တိုင်အောင် ဤ configuration က
သင့်အား root account ဖြင့် server ကို access လုပ်ခြင်းကိုကာကွယ်ပေးမှာပါ။

$sudo service ssh restart

ယခုအဆင့်များပြီးဆုံးသွားပါကသင်သည် Basic Server Hardening ပြုလုပ်ခြင်းပြီးမြောက်ပါပြီ။
နောက်ထပ်ထပ်မံထွက်ရှိမည့် Server Hardening တွင်တော့ အလွန်များပြားပြီးရှုပ်ထွေးလှတဲ့ configuration တွေကို
သင်တွေ့ မြင်ရမှာဖြစ်ပါတယ်။ ဤ
guide နှင့်ပါတ်သတ်၍တစ်စုံတရာအကြံပြုလိုသည်များ၊
ဝေဖန်လိုသည်များ၊ နားမလည်သည်များရှိခဲ့ပါက 
https://fb.com/ethankurt08 ကို chatbox
မှတဆင့် (သို့မဟုတ်) [email protected] သို့ email ပို့၍သော်လည်းကောင်းဆက်သွယ်နိုင်ပါသည်။

ဤ Guide အတွက် tutorial video ကိုတော့အောက်တွင်ဖေါ်ပြထားသည့် link တွင်
သွားရောက်ကြည့်ရှုနိုင်ပါသည်။

https://www.youtube.com/watch?v=jhiSoJ2dne0

အားလုံးကိုကျေးဇူးတင်ပါတယ်။

စာကြွင်း။ ။ video file မှာ ssh service restart ချဖို့ ကျန်ခဲ့တာကိုနားလည်ပေးစေလိုပါတယ်။