Saturday 5 November 2016

ACL (Standard vs Extended)

ACL အကြောင်းတီးမိခေါက်မိရှိသွားပြီဆိုရင်တော့ နောက်ထပ်လေ့လာဖို့အတွက် အရှိန်ရသွားပါပြီ။ Cisco Devices တွေမှာအသုံးပြုတဲ့ ACL အမျိုးမျိုးထဲက အခြေခံကြတဲ့ Standard ACL နဲ့ Extended ACL အကြောင်းကိုဆက်ပြီး လေ့လာကြတာပေါ့။ နံပါတ်စဉ်အနေနဲ့ကတော့ အရင်ပို့စ်မှာ ဖော်ပြခဲ့သလိုပါပဲ။ ကိုယ်အသုံးလိုတဲ့ ACL ကိုကြည့်ပြီး Standard ဆိုရင် သူအသုံးပြုလို့ရတဲ့နံပါတ်စဉ်အတွင်းကနေသုံးရသလို၊ Extended ဆိုရင်လည်း သူ့အတွက်သတ်မှတ်ထားတဲ့ အစဉ်ထဲကနေသုံးရပါတယ်။
Standard: 1-99, 1300-1999
Extended:100-199, 2000-2699

နောက်တခုကွာခြားချက်က Standard က Source Network ကိုပဲကြည့်ပြီး IP Protocol အားလုံးကို ခွင့်ပြုမလား၊ ပိတ်မလားဆိုပြီး လုပ်ဆောင်ပါတယ်။ Extended ကတော့ Protocols တွေကအထဲက ဘယ် Protocol ကိုပဲ ရွေးပြီး အသုံးပြုချင်တယ်ဆိုတာ ရွေးလို့ရသလို Source Network သာမက Destination Network ကိုပါ ရွေးလို့ရပါတယ်။ ဒါဆိုရင် ဘယ်လိုအချိန်မျိုးမှာ Standard ACL ကိုသုံးနေကြသေး လဲဆိုရင် တော့ Protocol Level အထိအသေးစိတ်ကြည့်နေစရာမလိုတဲ့ ကိစ္စမျိုးဖြစ်တဲ့ Line တွေမှာသုံးတဲ့ နေရာမျိုး၊ Routing process တွေအတွက် Route Filter လုပ်ရတဲ့ အခါမှာ Route-map တွေအတွက် Match လုပ်ရမဲ့ နေရာမျိုးတွေမှာသုံးကြပါတယ်။ (Route-map အကြောင်းကို ပို့စ်အဟောင်းတွေမှာ ပြန်ဖတ်ကြည့်နိုင်ပါတယ်။)

နမူနာ အနေနဲ့ Standard ACL နဲ့ Router ရဲ့ Telnet/ SSH သုံးဖို့အတွက် Line vty မှာသုံးတာကြည့်ရအောင်။ Standard ACL ဖြစ်တဲ့အတွက် ကိုယ်ခွင့်ပြုမဲ့ Network/host ကို ပေးရင်ရပါပြီ။ Telnet/SSH ကိုစဉ်းစားစရာမလိုပါ။

access-list 1 permit 10.1.1.0 0.0.0.255
access-list 1 permit host 192.168.10.1

Line vty 0 4
access-class 1 in

ဒီ ACL ဟာဘာကိုပြောတာလဲဆိုရင် ACL No.1 မှာပါတဲ့ 10.1.1.0/24 Network နဲ့ 192.168.10.1 IP ကနေ လာမှသာ Router ရဲ့ vty line ကို လာခွင့်ပြုမှာဖြစ်ပါတယ်။ ACL မှာ  Subnet mask အစား၊ Wildcard ကိုသုံးရပါတယ်။ (0.0.0.255) သာ /24 ရဲ့ Wildcard ပါ။ အရင်ကပြောခဲ့သလိုပဲ IP addressing နဲ့ Subnetting ကိုမသိရင် ACL ရေးတဲ့အခါ အခက်တွေ့ပါလိမ့်မယ်။ နောက်တခုကတော့ Host တခုတည်းဖြစ်တဲ့ အတွက် Host ဆိုတာ သုံးထားတာ တွေ့မှာပါ။ Permit ကတော့ Action ပါ။ ပိတ်မယ်ဆိုရင်တော့ Deny ပါ။ ဒီ ACL ရဲ့ အောက်ဆုံးမှာ Default implicit deny ပါတဲ့အတွက် ထပ်ရေးစရာမလိုပါဘူး။
အကယ်၍ Line vty အစား Interface အဝင်မှာသုံးမယ်၊ Telnet ကိုပိတ်ထားပြီး SSH ကိုသာပေးသုံးမယ် ဆိုရင် တော့ Standard ACL အစား Extended ACL သုံးမှာသာ အဆင်ပြေပါလိမ့်မယ်။ အောက်က နမူနာကိုကြည့်ပါ။

access-list 100 deny tcp any any eq telnet
access-list 100 permit ip any any       

interface <interface>
ip access-group <acl-number> in

ဒီ ACL မှာတော့ Telnet ကိုပိတ်ဖို့အတွက် သူအသုံးပြုတဲ့ tcp 23 (telnet) ကိုအရင်ပိတ်ထားပါတယ်။ ပြီးတော့မှ ကျန်တဲ့ Packets တွေအားလုံးသွားလို့ရအောင် ပြန်ဖွင့်ထားပါတယ်။ မဟုတ်ရင် အားလုံး implicit deny နဲ့ညှိပြီး ပိတ်ကုန်မှာပါ။ တကယ်တော့ ဒါက Extended ACL အကြောင်း နမူနာအနေနဲ့ ပြတာပါ။ Line မှာ Telnet ပေးမသုံးပဲ ssh သာပေးသုံးမယ်ဆိုရင် Line အောက်မှာ Transport input ssh တခုပေးလိုက်ပြီး Standard ACL နဲ့သုံးလေ့ရှိပါတယ်။

နောက်ထပ် အနေနဲ့ ACL တွေကိုထပ်ထည့်တာ၊ ပြင်တာ လုပ်ရင် သတိထားရမဲ့ အရာတွေဖြစ်ပါတယ်။ Cisco Config တွေကို မသုံးချင်ရင် no နဲ့ ပြန်ဖျောက်လေ့ရှိပါတယ်။ ACL မှာမလိုချင်တဲ့ Line တစ်ခုကို ဖျက်မယ်ဆိုပြီး no access-list ဆိုပြီး သုံးလိုက်ရင် ကိုယ်မလိုချင်တဲ့ Line သာမကပဲ ACL တခုလုံး ပျောက်သွားပါတယ်။ ဒီတော့ ဘယ်လိုလုပ်ရမလဲဆိုရင် ACL ကို Notepad/Wordpad တို့လိုပြင်လို့ရတဲ့ နေရာမှာ အရင်ကူး၊ အဲဒီမှာဖျက်၊ပြင်၊ ပီးရင် အရင် ACL ကိုဖျက်ပီး အသစ်ရေးထားတဲ့ ACL ကိုပြန်သုံး ရပါတယ်။ တကယ်လို့ ကိုယ်အသုံးပြုနေတဲ့ IOS ဟာ Number ACL sequence ကိုနားလည်တယ် ဆိုရင်တော့ ကိုယ်ဖျက်မဲ့ sequence ကိုဖျက်ရင်ရပါတယ်။ အသစ်ထည့်မယ်ဆိုရင်လဲ ကိုယ်ထပ်ထည့်မယ့် sequence နေရာကိုကြည့်ပြီး ထည့်လို့ရပါတယ်။ ACL ဟာ sequence လိုက်အစဉ်အတိုင်း အလုပ်လုပ်တဲ့ အတွက် ဘယ်နေရာမှာ ထည့်မယ်ဆိုတာကို သေချာကြည့်ဖို့လိုပါတယ်။

Number ACL လို့သုံးသွားတာက ဒီ ACL တွေကို နာမည်ပေးပြီး named ACL အနေနဲ့လဲ သုံးလို့ရ ပါသေးတယ်။ Standard ရော Extended ကိုပါ named ACL ရေးလို့ရပါတယ်။ named ACL ဟာ sequence ကိုနားလည်ပြီး ပြင်ရ ထပ်ထည့်ရ လွယ်ကူသလို ကိုယ်ဘာအတွက် သုံးမယ်ဆိုတဲ့ အမည်၊ အမှတ်အသား အနေနဲ့ပါ ပြန်ကြည့်ရတာ အဆင်ပြေပါတယ်။ Number ACL သုံးရင် အချိန်ကြာလာတာနဲ့ အမျှ ကိုယ် ဘာကြောင့်၊ ဘာအတွက် ဒီ ACL ကိုရေးခဲ့မှန်း မသိတော့ဘူး။ ကိုယ်က စနစ်တကျနဲ့ remark တွေ ဘာတွေ ရေးခဲ့ရင်တော့ ကောင်းတာပေါ့။ အခုနောက်ပိုင်းမှာတော့ named ACL သာ သုံးကြတာများပါတယ်။ ရေးရတာလည်း သိပ်မကွာပါဘူး။ နမူနာတွေကြည့်ပြီး ရေးကြည့်ရင် သဘောပေါက်သွားပါလိမ့်မယ်။

ACL ဟာ အခြေခံကျတဲ့ အရာတခုလို့ဆိုပေမယ့် သေသေချာချာ မသိထားဘူးဆိုရင် အလုပ်မှာ အခက်တွေ့ စေပါလိမ့်မယ်။ အတော်များများက Lab လုပ်နေတဲ့ အချိန်မျိုးမှာ ပေါ့ပေါ့လေးလုပ်တတ်ကြပါတယ်။ ဒါပေမယ့် အလုပ်ထဲရောက်ရင်တော့ ပီးစလွယ်လုပ်လို့မရတဲ့အထဲမှာပါတဲ့ ကိစ္စတခုပါ။ တကယ်လို့ ကိုယ်ပြင်ရမဲ့ Router ရဲ့ ACL ဟာ remote မှာ၊ တခြားမြို့မှာဆိုရင် ကိုယ်မှားလုပ်မိလို့ ပြန်ဝင်လို့မရတော့ တာမျိုးကြုံရတတ်သလို သုံးထားတဲ့ Interface ဟာ $ တွေသွားလာနေတဲ့ Trading လုပ်နေတဲ့ နေရာမျိုးမှာ ကိုယ်ရဲ့ ACL အမှားတခုကြောင့် ခွင့်ပြုထားတဲ့ Network တခုလောက်ပျောက်သွားခဲ့မယ်ဆိုရင် ဘယ်လောက် အထိ ပြဿနာကြီးသွားနိုင်တယ်ဆိုတာကို ခန့်မှန်းလို့ရပါတယ်။ ဒါကြောင့် သေသေချာချာ လေ့လာပြီး Router ၃ လုံးလောက်နဲ့ အမျိုးမျိုးလေ့ကျင့်ထားသင့်ပါတယ်လို့ အကြံပေးလိုပါတယ်။

ကိုဖြိုး

Tuesday 1 November 2016

Access Control List (ACL)

Access Control List (ACL) ကို Operation Systems တွေ၊ Applications တွေနဲ့ Network တွေမှာ အသုံးပြုကြပြီး အသုံးပြုနိုင်ခွင့်ကို ထိမ်းချုပ်ကိုင်တွယ်ထားတဲ့ အရာလို့ ပြောလို့ရပါတယ်။ ဒါပေမဲ့ အသုံးပြုတဲ့ ပုံစံခြင်းမတူညီတဲ့အတွက်ကြောင့် ဘာ ACL လဲဆိုတာ ကို ထည့်ပြောမှသာ ပြည့်စုံပါလိမ့်မယ်။ အခုပြောမည့် အကြောင်းအရာကတော့ Network ACL ဖြစ်ပြီး Cisco Devices တွေမှာ အသုံး ပြုတဲ့ IP Access List ဖြစ်ပါတယ်။ IP ACL ဖြစ်တဲ့အတွက် IP addressing နဲ့ Subnets တွေအကြောင်း၊ TCP/UDP Ports တွေအကြောင်းကိုသိထားရင် ACL ကိုအလွယ် တကူနားလည်နိုင်မှာဖြစ်ပါတယ်။ ဒါတွေမသိထားသေးရင်တော့ ACL ကိုလိုအပ်သလိုရေးဖို့၊ အသုံးပြုဖို့အတွက် အခက်အခဲ ဖြစ်နိုင်ပါတယ်။

ACL ကို Cisco Devices တွေမှာ Access Control လုပ်ယုံအတွက်သာ မက၊ တခြား Routing Process တွေ၊ Route-map တွေအတွက် Traffic classification တွေအတွက်လည်း သုံးလေ့ရှိပါတယ်။ ဒါကြောင့် ACL ဆိုတာ Traffic Control/ Access Control လုပ်တာပဲလို့ အသေမှတ်မထားတာကောင်းပါတယ်။ နောက်တနည်းပြောရရင်တော့ စာရင်းဆိုပါတော့။ ကျွန်တော်တို့စာရင်းပြုစုတဲ့ အခါမှာ အကြောင်းအမျိုးမျိုးနဲ့ ပြုစုကြတာ ကြုံဖူးကြမှာပါ။ ဥပမာ ကျောင်းသားတွေ အနေနဲ့အရင်းနှီးဆုံးဖြစ်တဲ့ အကြောင်းနဲ့ ပြောပြရမယ်ဆိုရင် ကျေားင်းမှာရှိတဲ့ ကျောင်းသားကျောင်းသူတွေရဲ့ အမည်စာရင်းဆိုပါတော့။ အနည်းဆုံးအနေနဲ့ဘာတွေပါမလဲဆိုရင် အမည်ပါမယ်၊ ကျား မ ခွဲထားတာပါတယ်။ ဒါဟာ ACL ပါပဲ။ ကျောင်းသူသက်သက် ကျောင်းသားသက်သက်ခွဲထားတဲ့ စာရင်း ၂ခုဆိုပါတော့။  ဒါပေမယ့် ACL တစ်ခုဟာ ဘာလုပ်မယ်ဆိုတဲ့ အကြောင်းအရာမပါရင် ဘာမှ အလုပ်မဖြစ်သေးပါဘူး။ ဒီတော့ Action/Apply ထည့်ကြည့်လိုက်မယ်။ ဥပမာ စာရင်းမှာ ကျောင်းသူ (မ) တွေသာ ကျောင်းသူနားနေခန်းသို့ သွားနိုင်တယ်။ အလားတူပဲ ကျောင်းသား(ကျား) တွေသာ ကျောင်းသားနားနေခန်းသို့သွားနိုင်တယ်။ စာကြည့်တိုက်ကိုတော့ ကျောင်းသားရော ကျောင်းသူပါ ဝင်နိုင်တယ်ဆိုတာမျိုးနဲ့ တွဲလိုက်မှသာ ACL က အသက်ဝင်လာမှာဖြစ်ပါတယ်။

ဒါက အပြင်လောကမှာမြင်နိုင်တဲ့ ACL တွေပါ။ လူတွေအတွက် သုံးတာဆိုတော့ လူတွေကို မှတ်သားခွဲခြားထားတဲ့ ကျား၊မ တို့ အသက်တို့၊ အမည်တို့ပါသလို IP ACL မှာတော့ Host/Node/Network တွေကို သတ်မှတ်ထားတဲ့ IP address တွေ၊ Subnets တွေနဲ့ အသုံးပြုတဲ့ Applications တွေရဲ့ TCP/UDP ports တွေနဲ့ တခြား IP ပေါ်မှာသတ်မှတ်လို့ရတဲ့ဟာတွေပါတာပေါ့။ ACL သတ်မှတ်ပြီးရင် တော့ ခုနက ဥပမာ ပေးခဲ့သလို ဘယ်နေရာမှာ အသုံးချမယ်ဆိုတာပြောရပါတယ်။ Interface/ Router/ Route-map/ Line စတဲ့နေရာတွေမှာ အသုံးပြုလိုက်တာပါပဲ။ စတင်လေ့လာသူတွေအတွက်ကတော့ Interface နဲ့ Line တွေမှာစပြီး အသုံးပြုတတ်အောင် လေ့လာရပါတယ်။ ဒါမှသာ Traffic flow ကိုကြည့်ပြီး ACL ရေးတဲ့အခါ Inbound လား၊ Outbound လား၊ Source ကဘာလဲ၊ Destination ကဘာလဲ၊ ဘယ်နေရာမှာ အသုံးပြုရမလဲဆိုတာကို ပိုပြီး နားလည်မှာဖြစ်ပါတယ်။ နောက်တခုကတော့ ACL ဟာ ရေးထားတဲ့ အစီစဉ် အတိုင်းအလုပ်လုပ်တာဖြစ်တတ်တဲ့ အတွက် ကိုယ့်ခွင့်ပြုချင်တဲ့ Flow တွေကို အရင်ရေးပေးရပါတယ်။ ပြီးရင်အောက်ဆုံးမှာ အားလုံးကိုပိတ်ထားတဲ့ လိုင်းရှိတယ်ဆိုတာကိုလည်း သတိပြုရမှာဖြစ်ပါတယ်။

ဥပမာ ဒီအောက်မှာပြထားတဲ့ ACL ၂ ခုဟာ အတူတူပါပဲ။ Deny ကိုအောက်မှာထည့်မရေးထားလည်း Default implicit deny ဆိုတာရှိတဲ့အတွက် မရေးလည်း လုပ်ဆောင်ပုံခြင်း အတူတူပါပဲ။

access-list 100 permit ip 192.168.1.0 0.0.0.255 172.16.0.0 0.0.255.255

access-list 101 permit ip 192.168.1.0 0.0.0.255 172.16.0.0 0.0.255.255
access-list 101 deny ip any any

ဒီ ACL ဟာဘာကိုပြောတာလဲဆိုရင် Source Network 192.168.1.0/24 တစ်ခုသာ Destination Network ဖြစ်တဲ့ 172.16.0.0/16 ကိုသွားခွင့်ရှိတယ်လို့ရေးထားတာဖြစ်ပါတယ်။ အခုလို Source ရော Destination ပါပါအောင်ရေးထားတဲ့ ACL ကို Extended ACL ကိုခေါ်ပါတယ်။ ACL number အနေနဲ့တော့ 100-199 အထိရယ်၊ 2000-2699 အတွင်းရယ်သုံးလို့ရပါတယ်။ တကယ်လို့ Source တစ်ခုထဲသာလိုအပ်မယ်၊ Destination တို့၊ protocol မလိုရင်တော့ Standard ACL ကိုသုံးရင်ရပါတယ်။ Standard ACL က Source ကိုပဲ ကြည့်တဲ့ ACL ဖြစ်ပါတယ်။ ACL number အနေနဲ့တော့ 1-99 အထိရယ် 1300-1999 အတွင်းမှာသုံးရပါတယ်။ ဒီတော့ ကိုယ်ရေးမဲ့ ACL အမျိုးစားပေါ်မူတည်ပြီး သင့်တော်တဲ့ နံပါတ်သုံးရပါတယ်။

အထက်မှာပြောခဲ့သလိုပဲ ACL ရေးတာနဲ့ အလုပ်မလုပ်သေးပါဘူး။ အခုရေးထားတာက Traffic flow filter လုပ်မယ့် ACL ဖြစ်တဲ့အတွက် Router ရဲ့  Interface မှာသွားမဲ့ ဦးတည်ဖက် (Direction) ကိုကြည့်ပြီး Inbound လား Outbound လားရွေးပြီး ip access-group (number) in/out ဆိုပြီး ရေးပေးရပါတယ်။ Direction ကိုကြည့်တဲ့နေရာမှာ Source to Destination flow မှာ ဘယ်ကဝင်ပီး ဘယ်ကထွက်တယ်ဆိုတာကိုကြည့်ရပါတယ်။ ဥပမာ R1ကနေ R3 ကို သွားရင် R2 ကနေဖြတ်သွားမယ်၊ ခုနက ACL ကို R2 မှာသုံးမယ်။
ဆိုပါစို့။ R1 က R2 ရဲ့ e1 interface ကိုချိတ်ထားပီး၊ R2 e2 interface က R3 ကိုချိတ်ထားမယ်။

R1 —> (e1)R2(e2) —> R3

R2 (e1) Interface မှာဆိုရင် direction က inbound ဖြစ်ပီး R2(e2) မှာဆိုရင်တော့ outbound ဖြစ်ပါတယ်။ ကိုယ်သုံးတဲ့ Interface နဲ့ Traffic flow direction ကိုကြည့်ပြီး in / out ကိုရွေးပါ။

interface Ethernet0/1
ip address 10.1.1.1 255.255.255.0
ip access-group 100 in

ဘာကြောင့် e1 ကိုရွေးရလဲဆိုရင်တော့ အဝင်မှာကတည်းက စပြီး ပိတ်လိုက်တော့ router ကိုဖြတ်စရာမလိုတော့ဘူးပေါ့။ e2 ဆိုရင် e1 ကနေအရင် ဝင်လာအုံးမယ် ပြီးမှအထွက်မှသာ စစ်သလိုဖြစ်နေမှာပါ။  နောက်တနေရာ အနေနဲ့ဆိုရင် R3 အဝင်မှာလည်းပိတ်နိုင်တာပါပဲ။ ဒါဆိုရင် အဲဒီ traffic ဟာ မလိုအပ်ပဲ R2 ကိုဖြတ်၊ R2 နဲ့ R3 ကြားက လင့်ကိုပါ အသုံးပြုပြီး R3 အဝင်မှ ပိတ်လိုက်တော့ မလိုအပ်တဲ့ Resource တွေကို ပေးသုံးလိုက်သလိုဖြစ်သွားတာပေါ့။ အပေါ်က ကျောင်းသားတွေ အကြောင်းပြောတဲ့ ACL အရဆို ကျောင်းသားတွေကို ကျောင်းသူနားနေခန်းအဝအထိပေးသွားပြီး အဝကျမှ မဝင်ရဘူးပြောသလိုဖြစ်သွားမှာပေါ့။ တကယ်ဆို ကျောင်းသူတွေ နားနေခန်းသွားတဲ့ လမ်း၊ လှေကားတို့မှာကတည်းက စပြီး ကျောင်းသားများမဝင်ရဆိုပြီး ပြောသင့်တာပေါ့။

ဘာကြောင့် R1 အထွက်မှာ မသုံးလဲဆိုတာကိုတော့ စိတ်ဝင်စားတဲ့သူတွေအတွက် စဉ်းစားစရာဖြစ်အောင် ထားခဲ့လိုက်မယ်။
အခုလောက်မြင်သွားပြီဆိုရင် ACL ကိုကိုယ်တိုင်စမ်းသပ်လို့ရပါပြီ။ ဒါက အစပဲရှိပါသေးတယ်။ အသေးစိတ်ကို နောက်ပို့စ်တွေမှာဆက်ဖတ်ပါ။


ကိုဖြိုး