- Access Control List (ACL) là gì?
Access Control List (ACL) là một tập hợp các quy tắc (rules) được cấu hình trên thiết bị mạng (như router hoặc switch Cisco) để kiểm soát lưu lượng mạng. ACL được sử dụng để:
- Lọc lưu lượng (Packet Filtering): Quyết định cho phép (permit) hoặc từ chối (deny) các gói tin dựa trên các tiêu chí như địa chỉ IP nguồn, địa chỉ IP đích, giao thức (TCP, UDP, ICMP, v.v.), hoặc cổng (port).
- Kiểm soát truy cập: Hạn chế quyền truy cập vào các dịch vụ hoặc tài nguyên mạng.
- Ưu tiên hoặc quản lý lưu lượng: Sử dụng trong QoS (Quality of Service) hoặc NAT (Network Address Translation).
Nguyên tắc hoạt động của ACL
- Thứ tự xử lý: Các quy tắc trong ACL được xử lý từ trên xuống dưới (top-down). Khi một gói tin khớp với một quy tắc, router sẽ áp dụng hành động (permit/deny) và không kiểm tra các quy tắc tiếp theo.
- Implicit Deny: Nếu gói tin không khớp với bất kỳ quy tắc nào, nó sẽ bị từ chối (deny) theo quy tắc ngầm định (implicit deny) ở cuối ACL.
- Loại ACL:
- Standard ACL: Chỉ kiểm tra địa chỉ IP nguồn, thường đặt gần đích.
- Extended ACL: Kiểm tra nhiều tiêu chí hơn (nguồn, đích, giao thức, cổng), thường đặt gần nguồn.
- Named ACL: Dùng tên thay vì số để dễ quản lý.
- Hướng áp dụng:
- Inbound: Kiểm tra lưu lượng vào interface.
- Outbound: Kiểm tra lưu lượng ra khỏi interface.
Ứng dụng thực tế
- Bảo mật: Chặn truy cập trái phép vào mạng.
- Quản lý lưu lượng: Giới hạn băng thông hoặc chặn các giao thức cụ thể.
- Kiểm soát quyền truy cập vào dịch vụ (VD: chặn Telnet, cho phép HTTP).
- Các lệnh cơ bản liên quan đến ACL trong Cisco IOS
Dưới đây là các lệnh cơ bản để cấu hình và kiểm tra ACL trên router Cisco:
2.1. Cấu hình Standard ACL
access-list <ACL_number> {permit | deny} <source_IP> <wildcard_mask>
- <ACL_number>: Từ 1-99 hoặc 1300-1999.
- Ví dụ: access-list 10 permit 192.168.1.0 0.0.0.255 (Cho phép toàn bộ subnet 192.168.1.0/24).
2.2. Cấu hình Extended ACL
access-list <ACL_number> {permit | deny} <protocol> <source_IP> <source_wildcard> <destination_IP> <destination_wildcard> [eq <port>]
- <ACL_number>: Từ 100-199 hoặc 2000-2699.
- Ví dụ: access-list 100 permit tcp 192.168.1.0 0.0.0.255 host 192.168.2.100 eq 80.
2.3. Cấu hình Named ACL
ip access-list {standard | extended} <ACL_name>
permit | deny <parameters>
- Ví dụ:
ip access-list extended MY_ACL
permit tcp 192.168.1.0 0.0.0.255 host 192.168.2.100 eq 80
2.4. Áp dụng ACL vào interface
interface <interface_name>
ip access-group <ACL_number | ACL_name> {in | out}
- Ví dụ: ip access-group 100 in.
2.5. Xóa ACL
- Xóa toàn bộ ACL:
no access-list <ACL_number>
- Xóa một dòng cụ thể trong Named ACL:
ip access-list extended <ACL_name>
no <sequence_number>
2.6. Kiểm tra ACL
- Xem danh sách ACL:
show access-lists
- Xem cấu hình chạy:
show running-config | include access-list
- Xem ACL được áp dụng trên interface:
show ip interface <interface_name>
2.7. Lưu cấu hình
write memory
- Bài tập mẫu: Cấu hình ACL trên Cisco Router
Mô tả tình huống
Công ty có một router Cisco (R1) kết nối hai mạng LAN:
- LAN 1: Subnet 192.168.1.0/24 (interface GigabitEthernet0/0).
- LAN 2: Subnet 192.168.2.0/24 (interface GigabitEthernet0/1).
Yêu cầu:
- Cho phép các máy trong LAN 1 truy cập web (HTTP/HTTPS) đến server 192.168.2.100.
- Chặn các máy trong LAN 1 truy cập Telnet đến bất kỳ thiết bị nào trong LAN 2.
- Cho phép tất cả các lưu lượng khác từ LAN 1 đến LAN 2.
- Áp dụng ACL trên router R1.
- Kiểm tra cấu hình.
Giải pháp
Bước 1: Truy cập chế độ cấu hình
R1> enable
R1# configure terminal
Bước 2: Tạo Extended ACL
R1(config)# access-list 100 permit tcp 192.168.1.0 0.0.0.255 host 192.168.2.100 eq 80
R1(config)# access-list 100 permit tcp 192.168.1.0 0.0.0.255 host 192.168.2.100 eq 443 R1(config)# access-list 100 deny tcp 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 eq 23
R1(config)# access-list 100 permit icmp 192.168.1.0 0.0.0.255 host 192.168.2.100 echo R1(config)# access-list 100 deny icmp 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 echo R1(config)# access-list 100 permit ip any any
Bước 3: Áp dụng ACL vào interface
R1(config)# int Fa0/0
R1(config-if)# ip access-group 100 in
R1(config-if)# exit
Bước 4: Lưu cấu hình
R1# write memory
Bước 5: Kiểm tra cấu hình
- Xem ACL:
R1# show access-lists
- Kết quả mẫu:
Extended IP access list 100
10 permit tcp 192.168.1.0 0.0.0.255 host 192.168.2.100 eq www
20 permit tcp 192.168.1.0 0.0.0.255 host 192.168.2.100 eq 443
30 deny tcp 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 eq telnet
40 permit ip any any
- Kiểm tra interface:
R1# show ip interface GigabitEthernet0/0
Bước 6: Kiểm tra thực tế
- Từ máy trong LAN 1:
- Truy cập http://192.168.2.100 (nên thành công).
- Thử telnet 192.168.2.100 (nên thất bại).
- Thử ping 192.168.2.100 (nên thành công).
- Các bài tập luyện tập
Bài tập 1: Sử dụng Standard ACL
Yêu cầu:
- Chặn toàn bộ lưu lượng từ host 192.168.1.10 trong LAN 1 đến LAN 2.
- Cho phép tất cả các host khác trong LAN 1 truy cập LAN 2.
- Áp dụng ACL trên interface GigabitEthernet0/0 (hướng outbound).
Gợi ý:
- Sử dụng Standard ACL (số 1-99).
- Áp dụng ACL ở hướng outbound.
Router0(config)# access-list 10 deny host 192.168.1.10
Router0(config)# access-list 10 permit any
Router0(config)# interface fa1/0
Router0(config-if)# ip access-group 10 out
Bài tập 2: Sử dụng Named ACL
Yêu cầu:
- Tạo một Named Extended ACL có tên RESTRICT_LAN2.
- Chặn LAN 2 (192.168.2.0/24) truy cập bất kỳ dịch vụ nào trong LAN 1, ngoại trừ ICMP (ping).
- Cho phép tất cả lưu lượng khác.
- Áp dụng ACL trên interface GigabitEthernet0/1 (hướng outbound).
Gợi ý:
- Sử dụng lệnh ip access-list extended RESTRICT_LAN2.
- Sử dụng permit icmp và deny ip.
Router0(config)# ip access-list extended RESTRICT_LAN2
Router0(config-ext-nacl)# permit icmp 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
Router0(config-ext-nacl)# deny ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
Router0(config-ext-nacl)# permit ip any any
Router0(config-ext-nacl)# exit
Router0(config)# interface fa0/0
Router0(config-if)# ip access-group RESTRICT_LAN2 out
Bài tập 3: Kết hợp nhiều ACL
Yêu cầu:
- Tạo ACL để:
- Cho phép host 192.168.1.50 truy cập SSH (port 22) đến 192.168.2.200.
- Chặn tất cả các host trong LAN 1 truy cập FTP (port 21) đến LAN 2.
- Cho phép tất cả lưu lượng còn lại.
- Áp dụng ACL trên interface GigabitEthernet0/0 (hướng inbound).
Gợi ý:
- Sử dụng Extended ACL với số 101.
- Đảm bảo thứ tự rule hợp lý.
Bài tập 4: Kiểm tra và khắc phục sự cố
Yêu cầu:
- Sau khi áp dụng ACL ở bài tập mẫu, bạn nhận thấy không thể ping từ LAN 1 đến LAN 2 (ngoại trừ server 192.168.2.100). Hãy sửa ACL để cho phép ping từ LAN 1 đến toàn bộ LAN 2.
- Kiểm tra lại bằng lệnh show access-lists.
Gợi ý:
- Thêm dòng permit icmp 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 trước dòng permit ip any any.