Access Control Lists (ACL)

Singharat Kanjanasopon
2 min readMay 23, 2020

--

พฤติกรรมการทำงานของ ACL

  • ACL จะถูกไล่เปรียบเทียบจากบรรทัดบนลงบรรทัดล่างที่ละบรรทัดจนพบเงื่อนไขตรงความต้องการและเราเตอร์จะดู action ว่าให้ Permit หรือ Deny และทำตามเงื่อนไข
  • ลำดับแต่ละบรรทัดที่ระบุลงใน ACL จะสำคัญมากเพราะจะเช็คเงื่อนไขจากบนลงล่าง ดังนั่นเงื่อนไขในบรรทัดแรกๆจะมีความสำคัญมากกว่าบรรทัดหลังๆ เช่น
    #access-list 101 permit ip any any ←บรรทัดที่ 1
    #access-list 101 deny tcp any any eq 135 ←บรรทัดที่ 2
    ถึงจะมีการ deny ในบรรทัดที่ 2 ทราฟฟิกก็สามารถวิ่งผ่านไปได้อยู่ดีสาเหตุเพราะบรรทัดแรกอนุญาติให้ทราฟฟิกวิ่งผ่านไปก่อนแล้ว
  • ทุกๆ ACL ที่สร้างขึ้นจะมีเงื่อนไขที่ถูกซ่อนไว้เสมอ เรียกว่า Implicit deny all คือถ้าทราฟฟิกใดที่ไม่สอดคล้องกับเงื่อนไขก่อนหน้า ทราฟฟิกจะถูกดรอปทิ้งทั้งหมด

การตั้งค่า ACL มี 3 ประเภท

1.Standard Access Control Lists (หมายเลข ACL ที่กำหนดได้: 1–99,1300–1999)
จะเช็คเฉพาะหมายเลขแอดเดรสต้นทาง (Source Address) ไม่สามารถแยกแยะลงไปในละเอียดของแพ็กเก็ตได้ เช่น TCP/UDP Port, Destination Address.

#access-list <1–99> <deny/permit/remark> <Source Address/any>
Any : คือทั้งหมดทุก IP
Deny : ดรอป / Permit : อนุญาติ / Remark : ใส่คำอธิบาย

2. Extended Access Control Lists (หมายเลข ACL ที่กำหนดได้: 100 –199, 2000–2699)
สามาถแยกลงไปในรายละเอียดของแพ็กเก็ตได้ ได้แก่ Source Address, Destination Address, TCP/UDP port.

#access-list <1–99> <deny/permit/remark> <Protocol> <Source Address> <Destination Address> eq <port>
Any : คือทั้งหมดทุก IP
Protocol Field: เป็นไปได้ทั้งแบบ EIGRP, ICMP, IGMP, GRP, IP, OSPF, TCP, UDP
Deny : ดรอป / Permit : อนุญาต ิ/ Remark : ใส่คำอธิบาย

3. Named Access Control Lists เหมือนกับ Standard ACL และ Extended ACL แต่สามารถตั้งชื่อให้กับ ACL ซึ่งจะทำให้ สะดวกและง่ายต่อการจับและลบเฉพาะบาง ACE ที่ต้องการได้

# ip access-list <extended/standard><name>
# <เงื่อนไข>(deny tcp any any eq 135)
# <เงื่อนไข>(permit ip any any)

ลักษณะการบังคับใช้

สามารถบังคับใช้โดยการสร้าง Access-List ขึ้นมาก่อนแล้วเข้าไปกำหนดตามขา Interface ว่าเป็น In bound หรือ Outbound

Inbound : #ip access-list <หมายเลข access-list/Name ACL > in

Outbound : #ip access-list <หมายเลข access-list/Name ACL> out

คำสั่ง Show ที่เกี่ยวข้องกับ ACL

- Show access-list
- Show access-list <ACL Number>
- Show ip interface <Interface Number>

หลักการและข้อคำนึกอื่นๆ เกี่ยวกับ ACL

1. บน Interface สามารถมีการบังคับใช้ Inbound และ Outbound ได้อย่างละ ACL เท่านั่น

2. ถ้าต้องการเพิ่ม ACL เข้าไปที่มีอยู่แล้วเราไม่สามารถแทรกเข้าไประหว่างบรรทัดเดิมที่มีอยู่แล้วได้ (ข้อมูล ISO version 12.0)

3. การยกเลิก Access-list เราต้องยกเลิกทั้งหมดด้วยคำสั่ง #no access-list <หมายเลข Access-list> (ข้อมูล ISO version 12.0)

4. การแก้ไข ACL ที่ดีที่สุดคือ การ copy ACL ทั้งหมดใน Notepad แก้ไขให้เรียบร้อยแล้วยกเลิกคำสั่งเดิมแล้วค่อยเพิ่มเข้าไปใหม่อีกครั้ง

5. ให้สร้าง Access-list ขึ้นมาก่อน แล้วค่อยบังคับใช้ลงไปใน interface ด้วยคำสั่ง ip access-group

6. Standard ACL ควรวางไว้ใกล้กับ interface ของเราเตอร์ที่อยู่ใกล้กับเป้าหมายปลายทางมากที่สุด หากวางไว้ใกล้ต้นทาง Packet อาจจะถูกดรอปทิ้งได้อย่างรวดเร็ว

7. Standard ACL ควรวางไว้ใกล้กับ interface ของเราเตอร์ที่อยู่ใกล้กับโฮสต์หรือซับเน็ตต้นทางมากที่สุด เพราะมันต้องตรวจเช็คอย่างละเอียด ถ้าหากผิดเงื่อนไขจะได้ดรอปทิ้งตั้งแต่เนินๆ ไม่ต้องให้เราเตอร์หลายตัวมาเสียเวลาในการประมวลผล

8. หลักการสร้าง ACL มีสองแบบ
8.1 ให้ทำการ Permit ที่ต้องการไว้ แล้วค่อย Deny หรือ จะให้ implicit Deny all ในบรรทัดสุดท้าย
8.2 ให้ทำการ Deny ทราฟฟิกที่ต้องตัดทิ้งแน่นอนออกก่อนแล้วในบรรทัดสุดท้ายให้ Permit ทั้งหมด

9. ตอนท้ายสุดของการทำ ACL จะมีการทำ implicit Deny all (deny ip any any)

การใช้ ACL เพื่อควบคุมการเข้าถึง Line VTY (Telnet)

1. บังคับ Standard ACL ขึ้นเพื่ออนุญาต permit เฉพาะ IP ที่เหมาะสม

2. บังคับใช้ Standard ACL กับ Line VTY ด้วยคำสั่ง access-list <หมายเลข access-list > in

--

--

Singharat Kanjanasopon
Singharat Kanjanasopon

Written by Singharat Kanjanasopon

Certificate: Cisco: CCNA // CompTIA: Security+, Pentest+ // Microtik: MTCNA, MTCTCE, MTCSE, MTCRE //

No responses yet