
UnicodeZawgyi
မိမိ၏ Server သို႔ SSH ျဖင့္ခ်ိတ္ဆက္တဲ့အခါ Password ကိုအသံုးျပဳေလ့ရွိၾကပါတယ္။ ဒါေပမယ့္ ဒီေန႔ေခတ္အခါမွာေတာ့ Password ကို အသံုးျပဳျခင္းဟာ ေအာက္ပါ အားနည္းခ်က္တုိ႔ရွိလာခဲ့ပါတယ္။
- မိမိထားရွိေသာ Password ကို ခန္႔မွန္းရန္ ျဖစ္ႏုိင္ျခင္း
- Password Guessing/Password Brute Force ကိုအသံုးျပဳျပီး Server ကို ခ်ိဳးေဖါက္ဝင္ေရာက္ျခင္း
- မိမိ အသံုးျပဳေသာ Network အတြင္း ဝင္ေရာက္ေႏွာက္ယွက္မႈျပဳလုပ္ျပီး Password ကို ရယူႏုိင္ျခင္း
- မိမိ အသုံးျပဳေသာ Laptop ကို အျခားသူတစ္ဦးဦးမွ တစ္နည္းနည္းျဖင့္ ထိန္းခ်ဳပ္ႏုိင္ျခင္း
- Social Engineering အသံုးျပဳကာ မိမိ Server ၏ Password ကို ရယူသြားႏုိင္ျခင္း
- မိမိ အသံုးျပဳေသာ Laptop/PC မွမဟုတ္ပဲ အျခား Laptop/PC မွ မိမိ Server သို႔ Login ဝင္ေရာက္သည့္အခါ Software/Hardware Keylogger မ်ားျဖင့္ မိမိ Password ကို ခုိးယူႏုိင္ျခင္း
စသည္ျဖင့္ Server သို႔ SSH ျဖင့္ ဝင္ေရာက္ျခင္းကို Password အသံုးျပဳပါက အားနည္းခ်က္ေတြ မ်ားစြာ ျဖစ္ေပၚလာပါတယ္။ ဒါေၾကာင့္ ေနာက္ပိုင္းတြင္ေတာ့ SSH Key Pair Authentication (ေခၚ) Public Key Authentication ကိုအသံုးျပဳလာၾကပါတယ္။ SSH key pair authentication ကို အသံုးျပဳျခင္းေၾကာင့္ ပိုမုိလံုျခံဳမႈရွိလာျခင္း၊ ပိုမုိျမန္ဆန္လာျခင္းမ်ား စသည့္ ေကာင္းက်ိဳးမ်ားစြာရွိပါတယ္။
SSH Key Pair Authentication ၏ အေျခခံ အလုပ္လုပ္ပံု

ပံုမွာျပထားသလုိပါပဲ SSH Key Pair (Public & Private Key) ကို မိမိ စက္တြင္ Generate ထုတ္ယူပါ။ Public Key ကို Server သို႔ Upload တင္ျပီးရင္ေတာ့ မိမိစက္ထဲက Private Key ကိုအသံုးျပဳကာ Password မလုိပဲ Login ဝင္နုိင္ပါျပီ။ ပံုမွာမပါပဲ ဆက္လက္လုပ္ေဆာင္ရမွာကေတာ့ Server ဘက္ျခမ္းကေန Password Authentication ကို ပိတ္ထားျပီး Public Key Authentication ကို ဖြင့္ထားဖုိ႔ပါပဲ။
အေျခခံ Concept ကေတာ့ ေသာ့တံနဲ႔ ေသာ့ခေလာက္ပါပဲ။ Private Key ဆုိတာကေတာ့ ေသာ့တံနဲ႔တူျပီး Public Key ကေတာ့ ေသာ့ခေလာက္နဲ႔တူပါတယ္။ Server ကို လံုျခံဳေစခ်င္တဲ့အခါ ေသာ့ခေလာက္နဲ႔ ခတ္ရပါမယ္ (ဆုိလုိတာက Public Key ကို Server ေပၚသို႔တင္ထားရပါမယ္)။ Server အတြင္းသို႔ SSH ျဖင့္ ဝင္ခ်င္တဲ့အခါ ေသာ့တံ ( Private Key ) ကိုအသံုးျပဳျပီး ခတ္ထားတဲ့ ေသာ့ခေလာက္ (Public Key) ကုိျဖည္ကာ ဝင္နုိင္ပါလိမ့္မယ္။ သတိျပဳဖုိ႕ကေတာ့ ေသာ့တံ (Private Key) ကို မိမိတစ္ဦးတည္းသာ သိမ္းထားရမွာပဲျဖစ္ပါတယ္။ ထုိ႔အျပင္ Private Key ရဲ႕ Permission ဟာ 600 အျမဲျဖစ္ေနရပါမယ္။ Private Key ရဲ႕ Permission ဟာ 600 မျဖစ္ပါက အသံုးျပဳလုိ႕ရမွာမဟုတ္ဘူးဆုိတာ ႀကိဳတင္ သတိျပဳထားရမွာပါ။
SSH Key Pair ကို Generate ထုတ္ယူပံု

ပံုမွာေဖၚျပထားတဲ့ စာေတြကေတာ့ -t နဲ႔ Key Type ေရြးႏုိင္ပါတယ္။ rsa, dsa, ecdsa, ed25519 တုိ႔ကေတာ့ SSH Protocol version 2 အတြက္ျဖစ္ျပီး rsa1 ကေတာ့ SSH Protocol version 1 အတြက္ျဖစ္ပါတယ္။ RSA ကိုေတာ့ အသံုးမ်ားၾကပါတယ္။ ေနာက္ျပီး -b ကေတာ့ Key File ထဲမွာ ရွိမယ့္ bit အေရအတြက္ကိုေဖၚျပတာပါ။ RSA အတြက္ေတာ့ 1024 bit အနည္းဆံုးရွိရမွာျဖစ္ျပီး 2048 bit ကေတာ့ ပံုမွန္ (Default) ရွိရမယ့္ bit အေရအတြက္ပါ။ DSA ကေတာ့ 1024 bit ကြက္တိရွိျပီး ECDSA ကေတာ့ 256 bit, 384 bit, 521 bit အသီးသီးျဖစ္နုိင္ျပီး အဲ့ဒီ bit ေတြမွမဟုတ္ရင္ အလုပ္လုပ္မွာမဟုတ္ပါဘူး။ ED25519 ရဲ႕ bit အေရအတြက္ကေတာ့ 1024 bit ပံုေသပဲျဖစ္ပါတယ္။ -f ရဲ႕ေနာက္က လုိက္တာကေတာ့ key file ထြက္လာရမယ့္ path လမ္းေၾကာင္းျဖစ္ပါတယ္။ RSA Algorithm ကိုအသံုးျပဳျပီး SSH Key Pair ထုတ္ယူဖုိ႔ကေတာ့ ေအာက္က Command အတုိင္းပဲျဖစ္ပါတယ္။
< Command >ssh-keygen -t rsa -b 2048 -f ~/mysshkeys/key1
< Information >
အထက္ပါ Command ေရးဖုိ႔အတြက္ ကိုယ့္ user ရဲ႕ Home Directory ထဲမွာ mysshkeys ဆုိတဲ့ folder ေလးရွိေနရမွာျဖစ္ပါတယ္။ မရွိရင္ေတာ့ mkdir ~/mysshkeys ဆုိတဲ့ command နဲ႔ တည္ေဆာက္ႏုိင္ပါတယ္။
ထုိ႔ေနာက္မွာေတာ့ ေအာက္ပါပံုထဲကအတုိင္း Passphrase ကို ေမးပါလိမ့္မယ္။ Passphrase ကေတာ့ အဲ့ဒီ ကိုယ္ထုတ္မယ့္ Key ကိုအသံုးျပဳတဲ့အခါတုိင္း ရိုက္ထည့္ရမယ့္ Key ျဖစ္ပါတယ္။ အကယ္၍မ်ား မိမိရဲ႕ Private Key ကို ခုိးယူခံရတဲ့အခါ Private Key ကိုအသံုးျပဳျပီး Server Login ဝင္ဖုိ႔ႀကိဳးစားတဲ့အခါ ၄င္း Private Key ကိုအသံုးျပဳဖုိ႔အတြက္ Password နဲ႔တစ္ဆင့္ ပိုျပီး ကာကြယ္ထားတဲ့သေဘာပါပဲ။ Passphrase ကိုမိမိစိတ္ႀကိဳက္ ထည့္ျပီးတဲ့အခါ (သို႔) Passphrase မထားပဲ အလြတ္ထားလုိက္တဲ့အခါမွာေတာ့ SSH Key Pair ေလးတစ္စံုကို ရရွိမွာပါ။
- key1 ဆုိတာေလးကေတာ့ Private Key ျဖစ္ပါတယ္။
- key1.pub ဆုိတာေလးကေတာ့ Public Key ျဖစ္ပါတယ္။ File name ရဲ႕ေနာက္မွာ .pub ပါတာက Public Key လုိ႔ မွတ္ယူထားႏုိင္ပါတယ္။

SSH Key Pair ထဲမွာ ဘယ္လုိေတြရွိလဲ
Private Key ထဲမွာ ဘာေတြေရးထားလဲ စပ္စုခ်င္ရင္ေတာ့ cat နဲ႔ထုတ္ၾကည့္ရင္ ေအာက္ပါပံုအတုိင္းျမင္ရမွာပါ။ RSA Private Key ရဲ႕ အစမွာေတာ့ —–BEGIN RSA PRIVATE KEY—– ဆုိတဲ့စာလံုးေတြျမင္ေတြ႕ရမွာျဖစ္ျပီး အဆံုးမွာေတာ့ —–END RSA PRIVATE KEY—– ဆုိတဲ့စာလံုးေတြျမင္ေတြ႕ရမွာပါ။

Public Key ထဲမွာေတာ့ ေအာက္ကအတိုင္းျမင္ရႏုိင္ပါတယ္။ ssh-rsa ဆုိတဲ့စာလံုးနဲ႔ စျပီး hostname တစ္ခုနဲ႔ ဆံုးပါလိမ့္မယ္။

SSH Public Key ကို Server ေပၚသို႔ Upload တင္ပံု
ဥပမာအားျဖင့္ ကြ်န္ေတာ္တုိ႔ Server ရဲ႕ IP Address သည္ 192.168.1.22 ျဖစ္တယ္ဆုိပါစို႔။ ေအာက္ပါ Command ကိုအသံုးျပဳျပီး ကိုယ့္စက္ထဲမွ Public Key ကို Server သို႔ Upload တင္ႏုိင္ပါတယ္။
< Command >
ssh-copy-id -i ~/mysshkeys/key1.pub root@192.168.1.22
< Information >
ssh-copy-id ကေတာ့ အဓိက command ျဖစ္ျပီး -i ကေတာ့ ကိုယ္တင္မယ့္ Public Key ရဲ႕ Path လမ္းေၾကာင္းကို ညႊန္းေပးရမွာပါ။ root@192.168.1.22 ကေတာ့ 192.168.1.22 IP Address ရွိတဲ့ Server ရဲ႕ root user ၏ authentication ကို ရယူကာ upload တင္ေပးျခင္းပဲျဖစ္ပါတယ္။
< သတိျပဳရန္ >
ယခု Command သည္ 192.168.1.22 IP Address ရွိတဲ့ Server ရဲ႕ root user ကို ခ်ိတ္ဆက္ပါက အသံုးျပဳရမယ့္ Private Key အတြက္ ၄င္းနဲ႔အဆင္ေျပမယ့္ Public Key ကိုတင္ျခင္းျဖစ္ပါတယ္။ ဆုိလုိတာက root user အတြက္သာ Public Key ကိုတင္ျခင္းျဖစ္ျပီး အျခား User အတြက္ (ဥပမာ yannaing ဆုိတဲ့ User အတြက္) ဆုိရင္ေတာ့ ” yannaing@192.168.1.22 ” လုိ႔ေရးသားရမွာျဖစ္ပါတယ္။
Terminal မွာေတာ့ ေအာက္ပါအတုုိင္းျမင္ရမွာပါ။

ထုိသို႔ “Number of key(s) added: 1” ဆုိတာေလးေပၚလာရင္ေတာ့ root user ကို Password မလုိပဲ Login လုပ္ႏုိင္ျပီျဖစ္ပါတယ္။
SSH Private Key အသံုးျပဳကာ Login ဝင္ျခင္း
ေအာက္ပါ Command ကိုအသံုးျပဳျပီး Password မလုိပဲ Login ဝင္ႏုိင္ပါျပီ။
< Command >
ssh -i ~/mysshkeys/key1 root@192.168.1.22
-i ကေတာ့ Private Key ရဲ႕ Path လမ္းေၾကာင္းကို ညႊန္းတာပဲျဖစ္ပါတယ္။ Passphrase ကို မထည့္ပဲ Enter ခ်ည္းႏွိပ္ခဲ့ရင္ေတာ့ ေအာက္ပါပံုအတုိင္း Server မွာ ရွိတဲ့ root user ရဲ႕ Password လံုးဝ မေတာင္းပဲ Login ဝင္သြားရမွာပဲျဖစ္ပါတယ္။ Passphrase ကို တစ္ခုခု ထည့္ခဲ့ရင္ေတာ့ Passphrase ကို ျပန္ေတာင္းပါလိမ့္မယ္။ Passphrase သည္ Server ရွိ root user ၏ Password မဟုတ္ပဲ Private Key ကိုအသံုးျပဳဖုိ႔ Key အတြက္ေတာင္းတဲ့ Password ျဖစ္ေၾကာင္း သတိထားျပဳသင့္ပါတယ္။

Server ဘက္မွ Configuration
ခုလုိ Private Key ကိုအသံုးျပဳျပီး Login ဝင္ႏုိင္ျပီ ဆုိရင္ေတာ့ SSH Server ဘက္ျခမ္းမွာ SSH Key Pair ကိုသာအသံုးျပဳျပီး Login ဝင္ဖုိ႕ခြင့္ျပဳေပးျပီး Password ကိုအသံုးျပဳကာ Login ဝင္ဖုိ႕ကို ပိတ္ပင္ရန္အတြက္ Configuration သြားျပင္ရမွာပဲျဖစ္ပါတယ္။ /etc/ssh/sshd_config ဆုိတဲ့ File ကို မိမိ ႏွစ္သက္ရာ Text Editor ျဖင့္ ျပင္ႏုိင္ပါတယ္ (ဥပမာ vi သို႔မဟုတ္ nano)။
၄င္း Config File ထဲတြင္ “PasswordAuthentication yes” ဆိုတာကိုေတြ႕ရင္ ေအာက္ပါ ပံုထဲကအတုိင္းျဖစ္ေအာင္ “PasswordAuthentication no” လုိ႔ေျပာင္းပါ။

ထုိ႔ေနာက္ “#PubkeyAuthentication yes” ဆုိတာကိုေတြ႕ရင္ေတာ့ ေအာက္ပါပံုထဲကအတုိင္းျဖစ္ေအာင္ ေရွ႕ဆံုးမွာရွိတဲ့ “#” ေလးကို ဖ်က္လုိက္ပါ။

ထုိ႔ေနာက္ ေအာက္ပါ Command ကိုအသံုးျပဳျပီး SSH Server ကို Restart ျပဳလုပ္ပါ။ (Restart မျပဳလုပ္ပါက ေျပာင္းလဲလုိက္ေသာ Configuration မ်ား အလုပ္လုပ္မွာမဟုတ္ပါ)
< Command >
systemctl restart sshd
SSH Server ကို restart ျပဳလုပ္ျပီးရင္ေတာ့ ၄င္း Server ရွိ root user ကို ပံုမွန္အတုိင္း Password ျဖင့္ Login လုပ္လုိ႔ရမွာမဟုတ္ေတာ့ပဲ Permission denied error ျပပါလိမ့္မယ္။ SSH Private Key ကိုသံုးမွသာ Login ျပဳလုပ္လုိ႔ရပါလိမ့္မယ္။ ေအာက္ပါ ပံုထဲကအတုိင္း ေပၚပါလိမ့္မယ္။

ဤ နည္းျဖင့္ မိမိ Server ရဲ႕ SSH Login ကို Private Key ျဖင့္သာ Login ျပဳလုပ္ႏုိင္ေအာင္ ထိန္းခ်ဳပ္ျပီး Server ရဲ႕ လံုျခံဳေရးကို တုိးျမွင့္ႏုိင္ပါလိမ့္မည္ ျဖစ္ေၾကာင္း ေဝမွ်လုိက္ပါတယ္။