Palo Alto [I.2][Lý Thuyết] Tìm hiểu về cách xử lý gói tin của của NGFW Firewall Palo Alto

hiep03

Intern

Cách xử lý gói tin của của NGFW Firewall Palo Alto

I. Mở đầu

Ở bài viết trước mình đã có giới thiệu qua về NGFW cũng như về kiến trúc xử lý Single-Pass của NGFW Palo Alto.
Hiện nay có ba phương pháp triển khai Palo Alto phổ biến nhất, bao gồm các vai trò:

  • Layer 3
  • Layer 2
  • Virtual Wire
Bất kể được triển khai theo phương pháp nào, một khi đã nằm trên luồng dữ liệu, tường lửa sẽ xử lý mỗi gói tin đi qua nó theo một quy trình logic.
Bài viết này mình sẽ nói về chủ đề cách xử lý gói tin của của NGFW Firewall Palo Alto.

II. Cách xử lý gói tin của Palo Alto

1767113897511.png

Hình ảnh quy trình xử lý gói tin

1. Giai đoạn tiếp nhận (Ingress stage)​

Đây là giai đoạn nhận các gói tin từ giao diện mạng (interface) và phân tích cú pháp (prase) các gói tin đó, sau đó xác định liệu một gói tin nhất định có cần được kiểm tra sâu hơn không (FW inspection applicable) nếu có thì gói tin sẽ được bước vào giai đoạn xử lý, nếu không tường lửa sẽ chuyển tiếp gói tin tới giai đoạn ra (egress stage).
Chúng ta sẽ đến với quy trình đầu tiên được thực thi sau khi gói tin bước vào giai đoạn tiếp nhận.
1.1. Phân tích cú pháp gói tin (Packet prasing)
Phân tích cú pháp gói tin bắt đầu với phần header Ethernet (Lớp 2 - Layer 2) của gói tin được nhận từ dây mạng.

Thông tin cổng đầu vào (ingress port), thẻ 8802.1q tag (VLAN tag), và địa chỉ MAC đích sẽ được sử dụng làm thông tin để tra cứu giao diện logic đầu vào (ingress logical interface). Nếu không tìm thấy giao diện, gói tin sẽ bị hủy bỏ. Bộ đếm lỗi của giao diện phần cứng "receive error" (lỗi nhận) và bộ đếm toàn cục "flow_rcv_dot1q_tag_err" (lỗi thẻ dot1q khi nhận luồng) sẽ được tăng lên.

Tiếp theo, phần header IP (Layer 3) sẽ được phân tích.
Đối với IPv4: Firewall sẽ hủy bỏ gói tin vì bất kỳ lý do nào sau đây:

  • Không khớp giữa loại Ethernet và phiên bản IP (ví dụ: Ethernet type báo là IPv6 nhưng header lại là IPv4).
  • Header IP bị cắt cụt (không đủ độ dài).
  • Số hiệu giao thức IP là 0 (không hợp lệ).
  • Giá trị TTL (Time-to-Live) bằng không.
  • Tấn công "Land attack" (gói tin có IP nguồn và IP đích giống nhau).
  • Tấn công "Ping of death" (gói tin ICMP quá lớn sau khi tái lắp ráp).
  • Địa chỉ IP Martian (địa chỉ IP dành riêng không được phép xuất hiện trên mạng công cộng).
  • Lỗi tổng kiểm tra IP (IP checksum errors).
Đối với IPv6: Firewall sẽ hủy bỏ gói tin vì bất kỳ lý do nào sau đây:

  • Không khớp giữa loại Ethernet và phiên bản IP.
  • Header IPv6 bị cắt cụt.
  • Gói tin IP bị cắt cụt (độ dài bộ đệm payload IP nhỏ hơn giá trị trong trường payload IP).
  • Sử dụng phần mở rộng JumboGram (RFC 2675 - thường không được hỗ trợ hoặc cho phép vì lý do bảo mật).
  • Phần header mở rộng bị cắt cụt.
Tiếp theo, nếu có, phần header Lớp 4 (TCP/UDP) sẽ được phân tích.

Đối với TCP: Firewall sẽ hủy bỏ gói tin vì bất kỳ lý do nào sau đây:
  • Header TCP bị cắt cụt.
  • Trường "data-offset" (chỉ độ dài header) có giá trị nhỏ hơn 5 (header TCP hợp lệ tối thiểu là 5 * 4 = 20 bytes).
  • Checksum error.
  • Cổng (Port) có giá trị là 0.
  • Sự kết hợp không hợp lệ của các cờ TCP (TCP flags - ví dụ: cờ SYN và FIN cùng được bật).
Đối với UDP: Firewall sẽ hủy bỏ gói tin vì bất kỳ lý do nào sau đây:
  • Header UDP bị cắt cụt.
  • Payload UDP bị cắt cụt (không phải là một mảnh IP và độ dài bộ đệm UDP nhỏ hơn giá trị trong trường độ dài UDP).
  • Checksum error.

1.2 Quy trình tái lắp ráp IP (IP Defragmentation)

Đây là một quy trình con trong quy trình phân tích cú pháp.

Trong quá trình Parsing Layer 3 nếu gói tin nhận được là một mảnh vỡ thì quy trình tái lắp ráp IP sẽ được thực thi.

Firewall phân tích các mảnh IP (IP fragments), tái lắp ráp chúng bằng quy trình tái lắp ráp (defragmentation), và sau đó đưa gói tin (đã hoàn chỉnh) ngược trở lại bộ phân tích cú pháp, bắt đầu từ phần header IP. Ở giai đoạn này, một mảnh có thể bị hủy bỏ do:

  • Tấn công "Tear-drop" (các mảnh chồng chéo lên nhau).
  • Lỗi phân mảnh (fragmentation errors).
  • Hoặc nếu firewall đạt đến giới hạn hệ thống về số lượng mảnh đang được đệm (đạt đến ngưỡng gói tin tối đa).
Một cách dễ hiểu: Firewall phải thu thập đủ tất cả các mảnh và ráp chúng lại thành gói tin hoàn chỉnh trước khi có thể phân tích sâu hơn. Và sau khi ráp xong, nó được coi như một gói tin mới và được đưa lại từ đầu quy trình.
1.3 Quy trình giải đóng gói đường hầm (Tunnel Decapsulation)

Đây là cũng là một quy trình trong trong quy trình phân tích cú pháp (prasing)

Sau khi FW thực hiện việc giải đóng gói (decapsulation) và giải mã (decryption) ở giai đoạn phân tích cú pháp. Khi phân tích gói tin, nếu FW xác định rằng nó khớp với một đường hầm (tunnel), ví dụ như IPSec, SSL-VPN, thì nó sẽ thực hiện chuỗi hành động sau:
  • Đầu tiên, firewall sẽ giải đóng gói (decapsulate) gói tin và hủy bỏ nó nếu có lỗi.
  • Giao diện đường hầm (tunnel interface) tương ứng với đường hầm đó sẽ được gán cho gói tin như là giao diện đầu vào mới của nó, và sau đó gói tin được đưa ngược trở lại quy trình phân tích cú pháp, bắt đầu với phần header gói tin được định nghĩa bởi loại đường hầm.
Hiện tại, các loại đường hầm được hỗ trợ là đường hầm lớp IP, do đó việc phân tích cú pháp gói tin (đối với một gói tin đi trong đường hầm) sẽ bắt đầu từ phần header IP.

Một cách dễ hiểu: Gói tin gốc được bộc bên trong một gói tin khác để đi qua đường hầm. Bước này sẽ bóc tánh gói tin bên ngoài để lấy gói tin gốc bên trong. Sau đó, firewall coi như vừa nhận được một gói tin hoàn toàn mới (chính là gói tin gốc) với ingress là tunnel interface và bắt đầu lại toàn bộ quy trình phân tích từ đầu.

2. Thiết lập Phiên (Firewall Session Setup/Slowpath)​

Nếu một gói tin chưa khớp với bất kỳ phiên làm việc hiện có nào, nó sẽ đi vào quy trình thiết lập phiên (Slowpath).
  • Zone Protection & TCP State Check: Kiểm tra cấu hình bảo vệ vùng (Zone Protection) và trạng thái TCP. Mặc định, Firewall sẽ hủy các gói tin TCP đầu tiên nếu không có cờ SYN được bật.
  • Forwarding & NAT Lookup: Xác định giao diện đầu ra (Egress Interface) dựa trên bảng định tuyến hoặc bảng MAC. Nếu có Destination NAT, Firewall sẽ thực hiện tra cứu định tuyến lần thứ hai để tìm vùng đích thực tế.
  • Security Policy Lookup: Tại giai đoạn này, vì ứng dụng chưa được định danh cụ thể, Firewall sử dụng giá trị application: ANY để đối soát chính sách.
  • Session Allocation: Khi mọi bước kiểm tra thành công, một mục phiên mới sẽ được khởi tạo trong bảng lưu trữ (Flow Lookup Table) với trạng thái chuyển từ OPENING sang ACTIVE.

3. Quy trình Đường đi nhanh của Phiên Tường lửa (Firewall Session Fast Path)​

Một gói tin khớp với một phiên đã tồn tại sẽ đi vào đường nhanh (fast path). Giai đoạn này bắt đầu với việc xử lý từ Lớp 2 đến Lớp 4:
  • Nếu phiên đang ở trạng thái hủy bỏ (discard state), tường lửa sẽ hủy bỏ gói tin.
  • Nếu phiên đang hoạt động, thời gian hết hạn của phiên sẽ được làm mới.
  • Nếu gói tin là TCP FIN hoặc RST, các bộ đếm thời gian đóng phiên sẽ được kích hoạt.
  • Nếu NAT được áp dụng, tường lửa sẽ thực hiện dịch phần header L3/L4 tương ứng.
  • Nếu một ứng dụng sử dụng TCP, tường lửa sẽ xử lý gói tin bằng module ghép nối lại TCP trước khi đưa luồng dữ liệu vào module xử lý bảo mật. Module này kiểm tra cửa sổ TCP, đệm các gói tin ngoài thứ tự và bỏ qua các gói TCP truyền lại. Tường lửa sẽ hủy các gói tin nếu xảy ra lỗi ghép nối lại hoặc nhận quá nhiều mảnh ngoài thứ tự.
Xử lý bảo mật (Security Processing):
  • Gói tin thuộc phiên đã tồn tại sẽ tiếp tục được xử lý sâu hơn nếu gói tin có payload TCP/UDP hoặc là gói tin không phải TCP/UDP.
  • Nếu tường lửa chưa xác định được ứng dụng của phiên, nó sẽ thực hiện tra cứu App-ID.
  • Nếu App-ID chưa xác định được ứng dụng, module kiểm tra nội dung sẽ sử dụng các bộ giải mã giao thức và các phương pháp suy nghiệm để nhận dạng ứng dụng.
  • Khi ứng dụng đã được xác định, phiên sẽ chịu kiểm tra nội dung nếu có ALG liên quan, ứng dụng dạng tunnel hoặc quy tắc bảo mật có gắn security profile.

4. Quy trình Nhận dạng Ứng dụng (Application Identification - App-ID)​


Đầu tiên, tường lửa thực hiện một lần tra cứu chính sách ghi đè ứng dụng (application-override policy) để xem có quy tắc nào khớp không. Nếu có, ứng dụng sẽ được coi là đã biết và việc kiểm tra nội dung sẽ được bỏ qua cho phiên này.

Nếu không có quy tắc ghi đè ứng dụng, thì các chữ ký ứng dụng (application signatures) sẽ được sử dụng để nhận dạng ứng dụng. Tường lửa sử dụng cơ chế giải mã giao thức (protocol decoding) trong giai đoạn kiểm tra nội dung để xác định xem một ứng dụng có thay đổi từ ứng dụng này sang ứng dụng khác hay không.

Sau khi tường lửa xác định được ứng dụng của phiên, các tác vụ kiểm soát truy cập (access control), kiểm tra nội dung (content inspection), quản lý lưu lượng (traffic management) và ghi log (logging) sẽ được thiết lập theo như cấu hình.

  • Tra cứu Chính sách Bảo mật (Security policy lookup): Ứng dụng đã được xác định cùng với các thông tin IP/cổng/giao thức/vùng/người dùng/danh mục URL trong phiên sẽ được sử dụng làm khóa để tìm quy tắc khớp.
  • Nếu chính sách bảo mật có bật tính năng ghi log khi phiên bắt đầu, tường lửa sẽ tạo ra một bản ghi lưu lượng (traffic log) mỗi khi App-ID thay đổi trong suốt vòng đời của phiên.
  • Nếu hành động của chính sách bảo mật là cho phép (allow) và nó có đính kèm hồ sơ bảo mật (profile) và/hoặc ứng dụng đó cần phải được kiểm tra nội dung, thì nó sẽ chuyển toàn bộ nội dung qua Content-ID.
  • Nếu hành động của chính sách bảo mật là cho phép (allow), tường lửa sẽ thực hiện tra cứu chính sách QoS và gán một lớp QoS dựa trên chính sách khớp.
  • Nếu hành động của chính sách bảo mật là cho phép (allow) và ứng dụng là SSL hoặc SSH, tường lửa sẽ thực hiện tra cứu chính sách giải mã (decryption policy) và thiết lập các ngữ cảnh proxy nếu có quy tắc giải mã khớp.

5. Quy trình Kiểm tra Nội dung (Content Inspection)​

Tường lửa thực hiện kiểm tra nội dung khi tính năng này được áp dụng. Trong giai đoạn này, các bộ giải mã giao thức sẽ giải mã luồng dữ liệu và tường lửa sẽ phân tích và xác định các ứng dụng đường hầm đã biết.
Nếu trong quá trình kiểm tra, ứng dụng của phiên được xác định là đã thay đổi, tường lửa sẽ tham khảo lại các chính sách bảo mật để quyết định phiên có được phép tiếp tục hay không.
Nếu ứng dụng không thay đổi, tường lửa sẽ tiếp tục kiểm tra nội dung dựa trên tất cả các hồ sơ bảo mật được đính kèm với quy tắc bảo mật ban đầu đã khớp. Khi phát hiện mối đe dọa, hành động tương ứng trong hồ sơ bảo mật sẽ được thực hiện.
Tường lửa sẽ chuyển tiếp gói tin sang giai đoạn chuyển tiếp (forwarding) nếu một trong các điều kiện sau được đáp ứng:
  • Việc kiểm tra nội dung có phát hiện, nhưng hành động của hồ sơ bảo mật được cấu hình là cho phép.
  • Việc kiểm tra nội dung không trả về bất kỳ phát hiện nào.
Sau đó, nếu có áp dụng giải mã, tường lửa sẽ mã hóa lại gói tin trước khi đưa vào giai đoạn chuyển tiếp, bao gồm SSL forward proxy hoặc giải mã SSH.

6. Chuyển tiếp/Ra (Forwarding/Egress)​

Sau khi vượt qua tất cả các bước kiểm tra, gói tin sẽ được đưa đến đúng cổng ra. Tường lửa xác định miền chuyển tiếp cho gói tin dựa trên thiết lập chuyển tiếp đã được cấu hình trước đó.
Trong quá trình ra, tường lửa thực hiện định hình QoS (QoS shaping) nếu được áp dụng. Đồng thời, dựa trên MTU của giao diện ra và các cờ phân mảnh trong gói tin, tường lửa sẽ tiến hành phân mảnh khi cần thiết.
Nếu giao diện ra là giao diện đường hầm (tunnel interface), tường lửa sẽ thực hiện mã hóa đường hầm IPSec hoặc SSL-VPN, sau đó đánh giá lại việc chuyển tiếp gói tin.
Cuối cùng, gói tin được truyền ra khỏi giao diện vật lý tương ứng.

Chi tiết các bạn có thể xem trong: Palo_alto_Day_in_the_Life_of_a_Packet

III. Tổng kết​

Qua bài viết này, chúng ta đã đi xuyên suốt toàn bộ quy trình xử lý gói tin của NGFW Firewall Palo Alto, từ thời điểm gói tin đi vào giao diện mạng cho đến khi được chuyển tiếp ra khỏi thiết bị.
Điểm nổi bật trong cơ chế xử lý của Palo Alto là kiến trúc Single-Pass Parallel Processing, cho phép firewall thực hiện nhận dạng ứng dụng (App-ID), kiểm tra nội dung (Content-ID), kiểm soát truy cập và các chức năng bảo mật khác chỉ trong một lần quét luồng dữ liệu. Điều này giúp tối ưu hiệu năng mà vẫn đảm bảo mức độ bảo mật cao.
Việc phân tách rõ ràng giữa Slowpath (thiết lập phiên) và Fast Path (xử lý các gói tin thuộc phiên đã tồn tại) giúp firewall giảm thiểu chi phí xử lý cho các luồng lưu lượng hợp lệ, đồng thời vẫn duy trì khả năng kiểm tra sâu khi cần thiết. Cơ chế tái đánh giá chính sách khi ứng dụng thay đổi cũng là một điểm mạnh, đảm bảo các quyết định bảo mật luôn bám sát đúng bản chất lưu lượng thực tế.
Hiểu rõ quy trình xử lý gói tin của Palo Alto không chỉ giúp người quản trị dễ dàng phân tích sự cố, tối ưu cấu hình, mà còn là nền tảng quan trọng để thiết kế và triển khai hệ thống NGFW một cách hiệu quả và an toàn.
 
Back
Top