ความรู้คู่ความก้าวหน้า
 
สรุปลำดับการทำงานของ ACL (Access Control List)

ก่อนที่ท่านจะศึกษาเรื่อง ACL (Access Control List) นั้นท่านควรมีความรู้เรื่อง TCP/IP ในระดับ TCP/UDP port สักหน่อย โดยท่านสามารถเข้าไปศึกษาได้ตาม link นี้ครับ

//www.bloggang.com/viewblog.php?id=likecisco&date=10-02-2015&group=3&gblog=29

=============================================

ตัวอย่าง ACL Command:

access-list 100 permit tcp host 10.1.1.1 host 20.1.1.1 eq 80

access-list 100 permit tcp host 10.1.1.2 30.1.1.0 0.0.0.255 eq 23

ACL สามารถใส่มุมมองของ programming ได้ในลักษณะนี้ครับ

สิ่งแรกที่ท่านต้องจำไว้คือ ACL ทำงานจากบรรทัดบน ลงบรรทัดล่างเสมอ

if < condition > then < action permit/deny > (ACLStatement ที่ 1)

else if < condition > then < action permit/deny > (ACL Statement ที่ 2)

else if < condition > then < action permit/deny > (ACL Statement ที่ 3)

- if < condition > หมายถึง

เมื่อ < condition > ประกอบไปด้วย conditionย่อยๆ คือ

- Protocol อะไรที่สนใจ (TCP, UDP, ICMP หรืออืนๆ)

- Source IP address ที่สนใจเป็น IP address อะไร หรือมี rangeของ source IP address เป็นเบอร์อะไร (การใช้งานปกติทั่วๆไป ที่ไม่ได้ประยุกต์แล้ว ปกติ source IP address จะเป็น IP address ของ client ที่จะไปขอใช้บริการ server)

- Source Port (กรณีสนใจ protocol TCP/UDP) เป็น port อะไรหากสนใจ แต่ปกติจะไม่กำหนด เพราะเมื่อ client ไปติดต่อกับ server แล้ว มันจะ random source port และเมื่อไม่กำหนด source port แล้ว จะหมายถึง source port = any

- Destination IP address ที่สนใจ เป็น IP address อะไร หรือมี range ของ destination IP address เป็นเบอร์อะไร (การใช้งานปกติทั่วๆไป ที่ไม่ได้ประยุกต์แล้ว ปกติ destination IP address จะเป็น IP address ของ server ที่จะถูกใช้บริการจาก client)

- Destination Port (กรณีสนใจ protocol TCP/UDP) เป็น port อะไร โดยปกติทั่วๆ ไปแล้ว (ในกรณีที่ไม่ได้ประยุกต์) destination port จะเป็น port ที่ client จะระบุเพื่อบอกกับ server ว่าต้องการใช้บริการ application อะไร เพราะ server 1 ตัว สามารถให้บริการ service ได้มากกว่า 1 service หรือกล่าวอีกนัยหนึ่ง คือ server หนึ่งตัวอาจจะเปิด TCP/UDP port ไว้มากกว่าหนึ่ง port (TCP/UDP port จะเป็นมาตรฐานที่ถูกผูกไว้กับ Application) โดยท่านสามารถเข้าไปดูได้ตาม link นี้ครับ

//en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

-------------------------------------------------

โดย ACL Statement นั้นๆ จะถือว่า match หรือเป็นจริง ทั้ง statement ก็ต่อเมื่อ condition ย่อยทั้งหมดจะต้องเป็นจริง เพราะ condition ย่อยต่างๆ ใน ACL statement นั้นๆ จะเชื่อมกันด้วย AND Logic

< condition > = < Protocol AND source IP AND source port AND destination IP AND destination port>

------------------------------------------------

ตัวอย่างที่ 1 ของ < condition >

access-list 100 permit tcp host 10.1.1.1 host 20.1.1.1 eq 80

< condition > คือ

- Protocol: TCP

- Source IP address: host 10.1.1.1

- Source TCP Port: Any port (เพราะม่ได้ระบุว่าให้ใช้ port อะไร หรือไม่มี command eq ตามหลัง source IP address)

- Destination IP address: host 20.1.1.1

- Destination TCP Port: eq 80 (หรือ TCP port 80 หรือ Web Application)

ความหมายคือ: เรากำลังสนใจ traffic จาก client เครื่องใดเครื่องหนึ่งที่มี IP address 10.1.1.1 ไปยัง server เครื่องใดเครื่องหนึ่งที่มี IP address 20.1.1.1 โดยไม่สนใจว่า client จะใช้ source TCP port เป็นหมายเลขอะไร (any port) แต่สนใจ traffic ที่ไปหา server 20.1.1.1 เพื่อไปติดต่อ server ขอใช้บริการ Web Application (www หรือ TCP port 80)

สิ่งที่ขอให้ท่านจำไว้ให้ขึ้นใจ คือ 

หลักการเขียน ACL จะเขียนเน้นในลักษณะทิศทางจาก Client-to-Server เป็นหลัก เพราะ service ต่างๆ จะเริ่มต้นการสื่อสารจาก Client เป็นคนร้องขอ หรือ request เสมอ (ไม่นิยมเขียนกลับจาก Server-to-Client แต่หากต้องการ ก็สามารถเขียนได้ แต่จะต้องเข้าใจเรื่อง flow ของ traffic ให้ดีก่อน)

และจากที่ Client เป็นผู้เริ่มต้นของการสื่อสาร (ส่ง request หรือ sync) ดังนั้น Client จะใช้ source port ที่เป็น random ดังข้อมูลข้างล่าง


- สำหรับ Windows XP และ version ที่ต่ำกว่า จะใช้ source port ที่เป็น Dynamic portrange สำหรับ TCP/IP ตั้งแต่ 1,025 ไปจนถึง 5,000
- สำหรับ Windows Vista และ Windows Server 2008 เป็นต้นไป จะใช้ sourceport ที่เป็น Dynamic port range สำหรับ TCP/IP ตั้งแต่ 49,152 ไปจนถึง 65,535

นั่นก็คือ ในการเขียน ACL โดยเน้นทิศทางจาก Client-to-Server แล้ว เราจะไม่สามารถบอกได้อย่างชัดเจนว่า Client กำลังใช้ Source Port เลขอะไร ดังนั้น เราจะสังเกตเห็นได้จาก ACL โดยทั่วๆ ไปว่า จะไม่การกำหนด Source Port ใน ACL เลย (ไม่มี command "eq" ตามหลัง Source IP address)

Note: หากมีการเขียน ACL ในทิศทาง return traffic จาก Server-to-Client แล้ว เราจะเห็นการเขียนที่มีความแตกต่างออกไปจากปกติทั้่วๆ ไป แต่ผมขออนุญาติไม่อธิบายในรายละเอียดนะครับ เพื่อไม่ให้ท่านเกิดความสับสน เพราะมันเป็นส่วนน้อยที่ท่านแทบจะไม่เจอเลย

หากท่านใดต้องการอ่านข้อมุลเพิ่มเติมเกี่ยวกับ "Default dynamic port range สำหรับ TCP/IP" แล้ว ท่านสามารถไปตามอ่านได้ตาม link นี้ครับ


//www.bloggang.com/viewblog.php?id=likecisco&date=10-02-2015&group=3&gblog=29

-------------------------------------------------

ตัวอย่างที่ 2 ของ < condition >

access-list 100 permit tcp host 10.1.1.2 30.1.1.0 0.0.0.255 eq 23

< condition > คือ

- Protocol: TCP

- Source IP address: host 10.1.1.2

- Source TCP Port: Any port (เพราะไม่ได้ระบุว่าให้ใช้ port อะไร หรือไม่มี command eq ตามหลัง source IP address)

- Destination IP address: host ตั้งแต่ IP address 30.1.1.0 ไปจนถึง IP address 30.1.1.255 (แต่ในความเป็นจริงแล้ว IP address ที่ใสามารถช้ได้จริงคือ IP address 30.1.1.1 จนถึง IP address 30.1.1.254 เท่านั้น)

- Destination TCP Port: eq 23 (หรือ TCP port 23 หรือ Telnet Application)

ความหมายคือ: เรากำลังสนใจ traffic จาก client เครื่องใดเครื่องหนึ่งที่มี IP address 10.1.1.2 ไปยัง server IP address ใด address หนึ่งจาก 30.1.1.1 ถึง 30.1.1.254 โดยไม่สนใจว่า client จะใช้ source TCP port เป็นหมายเลขอะไร (any port) แต่สนใจ traffic ที่ไปหา server 30.1.1.1 ถึง 30.1.1.254 เพื่อไปติดต่อ server ขอใช้บริการ Telnet Application (หรือ TCP port 23)

-------------------------------------------------

หาก ACL Statement นั้นๆ match หรือเป็นจริงทั้ง statement แล้ว

then < action permit/deny >

จากนั้นมันจะไปดู Action ที่ได้กำหนดเอาไว้ว่า เป็น permit หรือ deny

โดย permit และ deny จะมีความหมายอยู่ 2 แบบคือ:

- ถ้า ACL ใช้เป็น Filtering หรือ Firewall แล้ว:

 - Permit = ปล่อยผ่าน

- Deny = Drop ทิ้งไป

- ถ้า ACL ใช้เป็น Classification เช่น ใช้กับ QoS, IPsec VPN, NAT และอื่นๆ แล้ว:

- Permit = สนใจ เอาไปใช้กับเรื่องที่ ACL นี้ผูกอยู่

- Deny = ไม่สนใจ เอาไปใช้กับเรื่องที่ ACL นี้ผูกอยู่


หาก ACL statement นั้นๆ เป็นจริงทั้ง statement

หาก ACL statement นั้นๆ เป็นจริงทั้ง statement และได้กระทำ action permit หรือ deny ไปแล้ว จะถือว่าเป็นการจบการไล่ ACL

แต่ถ้าไม่ match condition แรกแล้ว

else if  < condition > then < action permit/deny >

else if ก็คือ ให้ไปดู  < condition >  บรรทัดถัดไป แล้วไล่ลงไปเรื่อยๆ เหมือนที่อธิบายไว้ในตอนแรก

ถ้าไม่ match ซัก condition ในบรรทัดใดๆ เลย

ก็จะมี implicit deny all statement ดักที่ท้ายสุด เพราะว่าเราไม่สามารถกำหนด condition ได้ทุกรณี หรือทุกเงื่อนไขครับ

สำหรับการนำ ACL ที่เขียนเสร็จแล้วไป Apply ที่ Interface นั้น ท่านจะต้องกำหนดทิศทางของ ACL บน Interface ให้ถูกต้องด้วย มิฉะนั้นอาจจะเกิดโศกนาฏกรรมกับท่านได้นะครับ เพราะ packet จะไม่เข้าเงื่อนไขที่ท่านเขียนเลย แต่ไปลงที่ implicit deny all statement ทั้งหมดได้นะครับ 

สำหรับการกำหนดทิศทางของ ACL บน Interface นั้น ท่านสามารถเข้าไปดูแนวทางได้ตาม link นี้ครับ


สำหรับ Wildcard Mask ระดับ Advance ท่านสามารถเข้าไปดูได้ตาม link นี้ครับ

//www.bloggang.com/viewblog.php?id=likecisco&date=15-04-2015&group=3&gblog=39


บทความนี้ไม่ได้เขียนละเอียดนัก แต่เขียนเพื่อเป็นไอเดียร์ หรือ concept ให้ท่านได้ศึกษาเป็นแนวทางครับ หากมีเวลาจะมาปรับปรุงพร้อมยกตัวอย่างครับ

KoChaiwat (โก้-ชัยวัฒน์)



Create Date : 10 เมษายน 2558
Last Update : 2 กุมภาพันธ์ 2559 18:46:28 น. 2 comments
Counter : 11222 Pageviews.  
 
 
 
 
ขอบคุณครับ อธิบายเป็นขั้นเป็นตอนเข้าใจง่ายดีครับ
 
 

โดย: zerbiruts IP: 58.181.195.130 วันที่: 8 มิถุนายน 2558 เวลา:10:26:13 น.  

 
 
 
ขอบคุณบทความดีๆครับอาจารย์ มอง Flow Network ในใช้งาน ACL ชัดเจนเลยครับ
 
 

โดย: Apiwat IP: 159.192.221.94 วันที่: 10 กรกฎาคม 2562 เวลา:9:49:28 น.  

Name
Opinion
*ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก

BlogGang Popular Award#15


 
kochaiwat
 
Location :
กรุงเทพฯ Thailand

[Profile ทั้งหมด]

ให้ทิปเจ้าของ Blog [?]
ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 693 คน [?]




เริ่มงานครั้งแรกที่บริษัท UIH (United Information Highway) ซึ่งเป็นบริษัทผู้ให้บริการทางด้านการสื่อสารข้อมูล อาทิเช่น Lease Line, Frame Relay และ MPLS และได้ย้ายไปร่วมงานกับบริษัท dtac โดยได้ทำงานเกี่ยวกับ IP Network (Switch/Router/Firewall/F5-Loadbalancer) รวมถึง MPLS Network และ IPRAN (IP Radio Access Network) ซึ่งเป็น IP Network ที่รองรับ Access ของ Mobile System นอกจากนั้นยังสนใจศึกษาเรื่อง IPv6 Address ที่จะมาใช้แทน IPv4 ที่เราใช้งานอยู่ในปัจจุบัน
แต่ด้วยความชอบในการแบ่งปันความรู้ จึงได้มีโอกาสสอน CCNA อยู่ที่สถาบันแห่งหนึ่งในอาคารฟอร์จูนทาวน์ในวันเสาร์-อาทิตย์ ตั้งแต่ปี พ.ศ. 2549 จนถึง พ.ศ. 2553 รวมเป็นเวลา 4 ปี, หลังจากนั้นในระหว่างที่ทำงานที่ dtac ก็ได้สอนเสาร์-อาทิตย์เรื่อยมา

เคยเป็น Trainer หรือ Instructor อย่างเต็มตัว สอนวิชาต่างๆ ของ Cisco อย่างเป็นทางการ (Authorize Training) ที่บริษัท Training Partner Thailand จนถึง มีนาคม 2014 และได้ตัดสินใจออกมาสอนเอง เพราะด้วยความรักในอาชีพการสอน และต้องการที่จะแบ่งปันความรู้ให้กับบุคคลในระดับกลางและล่างเพื่อส่งเสริมให้ได้มีโอกาสได้เรียน และได้มีโอกาสสมัครงาน แต่ด้วยใจรักในบริษัท Cisco ดังนั้น เมื่อมีโอกาสเข้ามา จึงได้ตัดสินใจหยุดการสอน และได้เข้าไปเป็นพนักงาน หรือทำงานที่บริษัท Cisco Thailand ตั้งแต่วันที่ 15 กุมภาพันธ์ 2559 (2016) จนถึงปัจจุบัน

ลูกค้าที่เคยมารับการอบรม เช่น
- Lao Telecom Company Ltd
- CAT Telecom
- TOT
- True
- dtac
- CDG Group
- SITA air transport communications and information technology (www.sita.aero/)
- Infonet Thailand
- MultiLink Co., Ltd
- โรงพยาบาลไทยนครินทร์
- และเคยไปเป็นวิทยากรพิเศษที่ มหาวิทยลัยกรุงเทพสุวรรณภูมิ

ปัจจุบัน โก้-ชัยวัฒน์ ได้ผ่านการสอบ:
- Cisco Certified Internetwork Expert (CCIE) No. 51353 และ
- Cisco Certified Systems Instructor (CCSI) ซึ่งเป็น Certificate ที่ออกให้โดย Cisco สำหรับผู้ที่จะเป็นผู้สอน Cisco Certificate อย่างเป็นทางการ และได้รับ CCSI ID: 34784

วิชาที่สามารถได้สอนได้สำหรับ Cisco Certificate ในขณะนี้คือ
- CCNA Routing & Switching
- CCNA Security (IINS)
- CCNP Route & Switch: ROUTE
- CCNP Route & Switch: SWITCH
- CCNP Route & Switch: TSHOOT
- MPLS (IOS)
- MPLS Traffic Engineering (IOS)
- CCNP Service Provider: SPROUTE (OSPF, IS-IS, BGP, Prefix-List, Route-Map and RPL (Routing Policy Language))
- CCNP Service Provider: SPADVROUTE (Advance BGP, Multicast, and IPv6)
- CCNP Service Provider: SPCORE (MPLS, MPLS-TE, QoS)
- CCNP Service Provider: SPEDGE (MPLS-L3VPN, MPLS-L2VPN (AToM and VPLS)
- IPv6

Certification ที่มีอยู่ในปัจจุบัน CCIE# 51353, CCSI# 34784, CCNA Routing & Switching, CCNA Security (IINS), CCNA Design, CCNP Routing & Switching, CCIP, CCNP Service Provider ซึ่งเป็น Certification ของ Cisco product รวมถึง Certification ของสถาบัน EC-Council (www.eccouncil.org) นั่นคือ Certified Ethical Hacker (CEH)

"เป้าหมายมีไว้ให้ไล่ล่า บ้างเหนื่อยล้าบ้างหยุดพัก
ชีวิตแม้ยากนัก แต่เรารักเราไม่ถอย
ชีวิตแม้ต้องคอย จะไม่ปล่อยไปวันๆ
ชิวิตไม่วายพลัน แม้นสักวันต้องได้ชัย"

"แม้ระยะทางจะไกลแค่ไหน แม้ต้องใช้เวลามากเพียงใด
ขอเพียงแค่มีความตั้งใจ เราต้องได้ไปให้ถึงมัน"

ผมจะไม่ยอมทิ้งฝัน แต่จะไล่ล่ามันให้ถึงที่สุด สักวันฝันอาจจะเป็นจริง ถึงจะไปไม่ถึง แต่ผมก็ภูมิใจที่ได้ทำ
==============================
ความรู้ = เมล็ดพืช
ความพยายามในการเรียนรู้ = ปุ๋ย, น้ำ และความใส่ใจที่จะปลูก
สรุปคือ
ยิ่งพยายามเรียนรู้ ยิ่งพยายามศึกษาในเรื่องใดๆ ผลที่ได้คือ จะได้ความรู้ในเรื่องนั้นๆ อย่างลึกซึ้ง เปรียบเสมือนปลูกต้นไม้ด้วยความใส่ใจ ให้น้ำ ให้ปุ๋ย ผลที่ได้ก็คือ ต้นไม้ที่เติบโตอย่างแข็งแรง และผลิดอกและผลที่งดงามให้เราได้ชื่นชม
ความพยายามอยู่ที่ไหน ความสำเร็จจะอยู่ที่นั่น หรือที่ไหนก็ช่าง แต่เชื่อเถอะ เราจะได้ผลลัพธ์ที่ดีจากความพยายามนั้นๆ ไม่มากก็น้อย
อยากได้อะไรให้พยายาม แล้วความสำเร็จมันจะเข้ามาหาเอง
ผมเชื่อ และมั่นใจอย่างนั้น
===============================
ตอนนี้ผมได้ไปถึงฝัน (CCIE) แล้ว และสิ่งที่ไม่คาดฝัน คือได้ทำงานที่บริษัท Cisco ซึ่งถือได้ว่าไกลเกินฝัน

กว่าผมจะมาถึงจุดนี้ได้ เกิดจากความตั้งใจ มุ่งมั่น และพยายามอย่างไม่ย่อท้อ ศึกษาหาความรู้ และฝึกฝนตนเองอยู่เสมอ จนกระทั่งประสบความสำเร็จ และผมก็ได้พิสูจน์แล้วว่า ความพยายามอยู่ที่ไหน ความสำเร็จอยู่ที่นั่น ขอเพียงแค่อย่าท้อ อย่าถอย และอย่าหยุด

ผมขอเป็นกำลังใจให้กับทุกคน และขอให้ประสบความสำเร็จดังที่มุ่งหวัง ไม่ว่าท่านจะหวังสิ่งใดก็ตามครับ

ท้ายที่สุด ผมขอฝากข้อคิดในเรื่อง Certificate ไว้สักนิดนะครับ:
*** "CCIE และ Certificate อื่นๆ มีไว้เพื่อทำมาหากิน และมีไว้เพื่อข่มตนไม่ให้เกรียน เพราะความเกรียนจะนำมาซึ่งการเป็นเป้าให้คนที่เค้าหมั่นไส้ยิงเอานะครับ" ***

Facebook: Chaiwat Amornhirunwong
New Comments
[Add kochaiwat's blog to your web]

MY VIP Friends


 
 
pantip.com pantipmarket.com pantown.com