| ประเภท |
หมายเลข/ชื่อ |
ความสามารถ |
Use Case |
| Standard ACL |
1-99, 1300-1999 |
กรองเฉพาะ Source IP Address เท่านั้น |
ควบคุมการเข้าถึงพื้นฐาน, ใกล้ปลายทาง (Destination)
|
| Extended ACL |
100-199, 2000-2699 |
กรอง Source IP, Destination IP, Protocol (TCP/UDP/ICMP), Port, DSCP, ToS, Established, Time-range |
ส่วนใหญ่ของ Enterprise, ใกล้ต้นทาง (Source)
|
| Named ACL |
ชื่อที่ตั้งเอง |
Standard หรือ Extended แต่เรียกด้วยชื่อ (อ่านง่าย, จัดการง่าย, ลบ/เพิ่ม Sequence ได้) |
แนะนำใช้แทน Numbered ACL |
| IPv6 ACL |
Named Only |
รองรับ IPv6 Address, Next Header, Flow Label |
IPv6 Network |
| Reflexive ACL |
Dynamic (IP Session Filtering) |
อนุญาต Traffic กลับ (Return Traffic) ชั่วคราว |
Stateful Firewall แบบง่าย (Legacy) |
| Time-based ACL |
Extended + Time-range |
Enforce กฎตามเวลา (เช่น บล็อก Facebook เวลาทำงาน) |
Policy-Based Access Control |
สถานการณ์ใช้งาน ACL เพิ่มประสิทธิภาพความปลอดภัย (Use Cases)
1. Management Plane Protection (ป้องกัน Management Access)
! เฉพาะ Management Network (10.10.10.0/24) เข้า SSH/HTTPS/SNMP ได้
ip access-list standard MGMT-ACCESS
permit 10.10.10.0 0.0.0.255
deny any log
line vty 0 15
access-class MGMT-ACCESS in
transport input ssh
!
snmp-server community READONLY RO MGMT-ACCESS
2. Control Plane Policing (CoPP) / Infrastructure Protection
! ป้องกัน DoS ต่อ Control Plane (BGP, OSPF, SSH, ICMP, NTP)
ip access-list extended COPP-ALLOW
permit tcp any host 192.0.2.1 eq bgp
permit ospf any host 192.0.2.1
permit udp any host 192.0.2.1 eq ntp
permit icmp any host 192.0.2.1 echo-reply
deny ip any any
control-plane
service-policy input COPP-POLICY
3. VTY/SSH/HTTPS Access Restriction
ip access-list standard VTY-ACCESS
permit 192.168.100.0 0.0.0.255 ! Admin Subnet
permit 10.0.0.5 ! Jump Host
deny any log
line vty 0 15
access-class VTY-ACCESS in
ipv6 access-class VTY-ACCESS-V6 in
transport input ssh
4. Anti-Spoofing / RFC 1918 / Bogon Filtering (Ingress/Egress)
! Ingress ACL บน Internet Edge - บล็อก Source IP ที่เป็น Private/Bogon
ip access-list extended ANTI-SPOOF-IN
deny ip 10.0.0.0 0.255.255.255 any
deny ip 172.16.0.0 0.15.255.255 any
deny ip 192.168.0.0 0.0.255.255 any
deny ip 169.254.0.0 0.0.255.255 any ! Link-local
deny ip 127.0.0.0 0.255.255.255 any ! Loopback
deny ip 224.0.0.0 15.255.255.255 any ! Multicast
deny ip host 0.0.0.0 any
permit ip any any
! Egress ACL - อนุญาตเฉพาะ Public IP ขององค์กรออกไป
ip access-list extended EGRESS-FILTER
permit ip 203.0.113.0 0.0.0.255 any ! Public IP Range ของเรา
deny ip any any log
5. Restrict Risky Protocols/Ports (Lateral Movement Prevention)
! บล็อก SMB, RDP, WinRM, RPC, SSH ระหว่าง User VLANs (East-West)
ip access-list extended BLOCK-LATERAL
deny tcp any any range 135 139 ! RPC, NetBIOS
deny tcp any any eq 445 ! SMB
deny tcp any any eq 3389 ! RDP
deny tcp any any eq 5985 ! WinRM HTTP
deny tcp any any eq 5986 ! WinRM HTTPS
deny tcp any any eq 22 ! SSH
permit ip any any
! ใช้บน SVI / L3 Interface ของ User VLANs (In/Out ทั้งคู่)
6. Guest/Internet Access Control
! Guest VLAN - ออกอินเทอร์เน็ตได้ แตะเข้าถึง Internal ไม่ได้
ip access-list extended GUEST-ACCESS
permit udp any any eq domain ! DNS
permit tcp any any eq www ! HTTP
permit tcp any any eq 443 ! HTTPS
permit udp any any eq ntp ! NTP
deny ip any 10.0.0.0 0.255.255.255 ! Block Internal RFC1918
deny ip any 172.16.0.0 0.15.255.255
deny ip any 192.168.0.0 0.0.255.255
permit ip any any ! Allow Internet
7. Server Farm / DMZ Protection
! DMZ Web Server - เฉพาะ Port 80, 443 จาก Internet
ip access-list extended DMZ-WEB-IN
permit tcp any host 203.0.113.10 eq 80
permit tcp any host 203.0.113.10 eq 443
deny ip any any log
! DMZ to Internal - เฉพาะ DB Port จาก App Server
ip access-list extended DMZ-TO-INTERNAL
permit tcp host 10.10.20.10 host 10.10.30.20 eq 1433 ! SQL
permit tcp host 10.10.20.10 host 10.10.30.20 eq 3306 ! MySQL
deny ip any any log
8. SNMP / NTP / Syslog Access Control
ip access-list standard SNMP-ACCESS
permit 10.10.100.10 ! NMS Server
permit 10.10.100.11 ! Backup NMS
deny any log
snmp-server community READONLY RO SNMP-ACCESS
snmp-server community READWRITE RW SNMP-ACCESS
ip access-list standard NTP-ACCESS
permit 10.10.100.5 ! Internal NTP Server
deny any
ntp access-group peer NTP-ACCESS
ntp access-group serve NTP-ACCESS
Best Practices การเขียนและจัดการ ACL
- Implicit Deny All: ทุก ACL มี `deny ip any any` อยู่ท้ายสุด (Hidden) - Log มันไว้
- Top-Down Processing: เรียงกฎ Specific ก่อน General (Permit Specific > Deny General)
- Named ACLs: ใช้ชื่อที่มีความหมาย (MGMT-ACCESS, ANTI-SPOOF-IN) แทนหมายเลข
- Sequence Numbers: ใช้ `10, 20, 30...` เพื่อแทรกกฎระหว่างได้
- Document & Comment: `remark ### Block SMB for Lateral Movement Prevention ###`
- Test in Lab/Staging First: อย่า Deploy Production ทันที
- Monitor Hits: `show access-lists` ดู Hit Count, ปรับกฎที่ไม่ถูก Hit / Hit มากผิดปกติ
- Regular Review: Quarterly Review - ลบกฎไม่ใช้, อัปเดต IP, ทบทวนความจำเป็น
- Performance: Standard ACL ใกล้ Destination, Extended ACL ใกล้ Source (ประหยัด CPU)
- Object Groups: จัดกลุ่ม IP/Port/Protocol (ASA/Firepower/Palo Alto) เพื่อจัดการง่าย
ACL vs Firewall vs Zero Trust
| คุณสมบัติ |
ACL (Router/Switch) |
Stateful Firewall |
Zero Trust (ZTNA) |
| Layer |
L3/L4 (mostly) |
L3-L7 (App-ID, User-ID) |
L7 + Identity + Context |
| Stateful |
No (Stateless*) |
Yes |
Continuous Verification |
| Performance |
Very High (Hardware) |
High (ASIC/NPU) |
Depends on Proxy/Agent |
| Granularity |
IP, Port, Protocol |
App, User, Content, Threat |
Identity, Device Posture, Context |
| Management |
CLI, Decentralized |
Centralized (Panorama, FMC) |
Cloud Centralized Policy |
* Reflexive ACL ให้ Stateful แบบจำกัด | Modern Router ACLs (Cisco ACI, SR Linux) รองรับ Stateful
สรุป
ACL เป็น Fundamental Building Block ของ Network Security ที่ยังคงสำคัญและจำเป็น แม้มี Firewall/Zero Trust แล้ว เพราะ:
- ทำงานที่ Line Rate (Hardware ASIC) - เร็วมาก
- เป็น First Line of Defense ที่ Edge และ Infrastructure Protection
- รองรับได้ทุก Vendor (Standard CLI)
- เป็นพื้นฐานของ Micro-segmentation และ ZTNA
ควรใช้ ACL ร่วมกับ Firewall/NDR/ZTNA ในแนวคิด Defense in Depth เพื่อความปลอดภัยสูงสุด