Tìm kiếm nhanh và chính xác hơn với google tùy chỉnh

Thứ Sáu, 22 tháng 6, 2012

ACL - ý nghĩa và cách tính IP và Wildcard

Tui thấy các bạn CCNA mấy bữa nay hay hỏi về Wildcard, với một chút kinh nghiệm (không chắc đã hoàn toàn chính xác ), tui xin đóng góp mấy ý về vấn đề này. Mong các cao thủ bổ sung thêm.

I. Cisco sử dụng ACL như thế nào:

  • ACL - Access-Control List (tui chỉ đề cập tới IP ACL, trừ khi có chỉ định rõ ràng - vì các cái khác có xài nhưng ko rành, lâu quá rồi )
  • Mục tiêu sử dụng:
    • ACL được sử dụng cho lưu thông Layer 3 (routable traffic)
    • ACL dùng để xác định các gói tin lưu chuyển vào/ra trên các giao diện router, kết quả sau khi xác định (lọc) có thể sử dụng vào nhiều mục đích khác nhau, như:
      • Xử lý với các chính sách an ninh (xác thực, firewall, VPN)
      • Xử lý với các chính sách định tuyến (destination-/source-based routing)
      • Xử lý với các chính sách NAT/PAT
      • ...
  • Cách thức áp dụng
    • Trong một ACL, các mục kê được đối chiếu tuần tự từ trên xuống, khi đã có một mục có điều kiện khớp (match) với nội dung gói tin thì các mục sau đó được bỏ qua. Nếu không có điều kiện nào khớp, giá trị ngầm định sẽ được áp dụng.
    • Thông thường, trong một ACL, giá trị ngầm định là DENY (có thiết bị như Juniper Netscreen cho phép thay đổi giá trị mặc định toàn cục). Khi muốn tránh áp dụng giá trị ngầm định này, ta phải khai báo luật rõ ràng cho các gói tin có thông số không khớp với các mục kê trên đó (vd: PERMIT ANY).
    • Ví dụ về các bước xử lý định tuyến gói tin với ACL có thể thấy trong hình sau:



  • Cách định danh ACL (ai cũng biết )
    • IP: số 1-99 và 1300-1999 (Standard), 100-199 và 2000-2699 (Extended), và chuỗi ký tự tên (từ IOS 11.2)
    • IPX: số 800-899 (Standard), 1000-1099 (SAP filter)
    • AppleTalk: số 600-699
  • Các loại IP ACL
    • IP ACL của Cisco có 2 loại: Standard và Extended
    • Standard chỉ có thông tin đơn giản về địa chỉ nguồn, sử dụng để lọc toàn bộ nhóm giao thức
    • Extended có nhiều thông tin (nguồn, đích, cổng, giao thức)
  • Mỗi giao diện chỉ có thể sử dụng một ACL duy nhất để lọc gói tin.

II. Ý nghĩa của IP và Wildcard trong IP ACL
  • IP và Wildcard được sử dụng để so sánh coi gói tin có phải đúng là đối tượng cần xác định không
  • Với Standard ACL, chỉ địa chỉ nguồn của gói tin được đem ra so sánh
  • Với Extended ACL, sẽ so sánh tất cả các thông tin khai báo trong mỗi đề mục của ACL
  • Địa chỉ IP (nguồn hoặc đích) của gói tin sẽ được đối sánh với nội dung tương ứng trong một mục kê của ACL theo cách:
    • IP tương ứng của đề mục trong ACL được cộng logic (OR) với Wildcard
    • IP của gói tin được cộng logic (OR) với Wildcard
    • Hai kết quả được so sánh, nếu trùng nhau phù hợp
      Ví dụ:
      • ACL: IP = 172.16.0.0; Wildcard = 0.15.255.255
      • Gói tin 1: IP = 172.17.1.100
      • OR #1 (ACE): 172.31.255.255 = OR #2: 172.31.255.255
      • Gói tin 2: IP = 172.32.1.100
      • OR #1 (ACE): 172.31.255.255 != OR #2: 172.47.255.255
  • Do kết quả của OR luôn bằng 1 khi bất kỳ giá trị nào trong số giá trị đầu vào bằng 1, thực chất việc đối sánh chỉ xảy ra với các bít trong Wildcard có giá trị bằng 0.

III. Cách tính IP và Wildcard cho ACL
  • Địa chỉ IP (v4) là một số nhị phân 32-bit, được chia thành 4 octets: mỗi octet 8 bit
  • Tìm IP và Wildcard để đưa vào ACE, thực chất là tìm các giá trị bít chuẩn cần SO SÁNH TRÙNG KHỚP với giá trị thực của gói tin (trong IP) và vị trí thực hiện so sánh tương ứng (bit giá trị 0 trong Wildcard); và, điểm quan trọng nhất là tổ hợp IP & Wildcard phải đại diện được cho tất cả các địa chỉ IP cần đưa vào so sánh.
  • Tính địa chỉ IP cho ACE:
    • Mục tiêu: Kiếm các bít có giá trị giống nhau trong tất cả các địa chỉ IP cần lọc
    • Nhận xét: Phép toán nhân logic (AND) có phương thức tính phù hợp (toàn 0 -> 0; toàn 1 -> 1; còn lại -> 0)
    • Kết quả: Sử dụng phép toán AND để tính địa chỉ IP cho ACE từ các địa chỉ IP cần lọc
    • Ví dụ: cần lọc các địa chỉ 192.168.90.0/24, 172.31.4.0/24 -> AND từng octet -> IP=128.8.0.0
  • Tính Wildcard cho ACE:
    • Mục tiêu: Kiếm vị trí các bít cần đưa ra so sánh trùng khớp trong tất cả các địa chỉ IP cần lọc
    • Nguyên tắc:
      • Vị trí các bít cần so sánh trùng khớp là các bít giống y chang nhau trong tất cả các địa chỉ đầu vào
      • Vị trí bít nào cần so sánh thì xài bít 0 để thể hiện
      • Vị trí bít nào không cần so sánh thì xài bít 1
    • Nhận xét: Phép toán cộng có loại trừ logic (XOR) có phương thức tính GẦN phù hợp:
      • 1 XOR 1 và 0 XOR 0 đều = 0: các giá trị cần phải trùng khớp nhau XOR có giá trị 0
      • 0 XOR 1 và 1 XOR 0 đều = 1; các giá trị khác nhau XOR có giá trị 1 -> bỏ qua
    • XOR sửa đổi - có người gọi là XOR kiểu Mỹ
      • Căn cứ vào Mục tiêu & Nguyên tắc lập Wildcard ở trên
      • Căn cứ vào kết quả không phù hợp của XOR trong các trường hợp:
        • Khi XOR các địa chỉ mạng, các bít cần bỏ qua lại có giá trị 0
          (Vd 192.168.90.0/24, 172.31.4.0/24 -> XOR từng octet -> IP=108.183.94.0
        • Khi XOR nhiều địa chỉ, các bít cần bỏ qua (vì khác nhau) cũng có thể có giá trị 0
          (Vd tạo Wildcard dựa trên các địa chỉ 192.168.0.0, 192.168.4.0, 192.168.32.0, 162.168.36.0. Chỉ tính octet thứ 3 có sự khác nhau:
          Code:
          0   => 0 0 0 0 0 0 0 0
          4   => 0 0 0 0 0 1 0 0
          32  => 0 0 1 0 0 0 0 0
          36  => 0 0 1 0 0 1 0 0
          ----------------------
          XOR => 0 0 0 0 0 0 0 0
          Kết quả không như mong muốn vì vị trí các bít màu đỏ cần phải bỏ qua: cần giá trị bít kết quả là 1.
      • Cách tính XOR kiểu Mỹ được thực hiện theo nguyên tắc:
        • Các bít chung không thuộc địa chỉ mạng (thuộc phần host), XOR giá trị là 1
        • Khi XOR nhiều giá trị, ở vị trí các bít có ít nhất một giá trị 0 và một giá trị 1, kết quả là 1
    • Kết quả: Sử dụng phép toán XOR (kiểu Mỹ) để tính Wildcard cho ACE từ các địa chỉ IP cần lọc
    • Ví dụ: cần lọc các địa chỉ 192.168.90.0/24, 172.31.4.0/24 -> XOR từng octet -> IP=108.183.94.255

IV. Phương pháp chỉnh sửa ACL có định danh số trên IOS (phụ thêm cho vui)

Vấn đề thường gặp là khi muốn chỉnh sửa ACL có định danh số (tạm viết tắt là ACL#) đã thiết lập sẽ dễ bị phải xóa toàn bộ ACLs đi và nhập lại từ đầu (lệnh no access-list <ACL#> ..., dù với phần ... cụ thể đến đâu cũng xóa toàn bộ ACL có định danh số này.
Cách thức rất đơn giản để chỉnh sửa một cách thuận lợi là:
  • Xem trình tự các mục kê của một ACL:
    Sử dụng lệnh show ip access-list <ACL#> để thấy đủ thông tin về ACL (bao gồm cả số thứ tự các mục kê, thử thì thấy )
  • Xóa bỏ/chèn thêm một mục kê vào giữa ACL hiện có:
    • Sử dụng lệnh ip access-list <standart|extended> <ACL#> để vào chế độ soạn thảo.
    • Nếu muốn xóa, sử dụng no [thứ tự] <nội dung mục kê cần xóa>
    • Nếu muốn chèn một lệnh vào giữa hai mục kê hiện có, sử dụng <thứ tự mới> <nội dung lệnh mới> với thứ tự mới là một số nằm giữa hai số thứ tự của các mục kê hiện thời.
  • Đánh số thứ tự lại cho ACL
    Nếu không có khoảng cách giữa hai số thứ tự để chèn mục kê mới, ta có thể đánh số thứ tự lại cho các mục kê hiện có của ACL bằng lệnh ip access-list resequence <ACL#> <bắt_đầu_từ> <bước_tăng>

0 nhận xét:

:) , :D , :)) , =)) , :( , :(( , x-( , :-/ , :|

Đăng nhận xét

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by NewWpThemes | Blogger Theme by Lasantha - Premium Blogger Themes | New Blogger Themes