Loading...

Explicit Proxy & Transparent Proxy trên FortiGate

1. Liên hệ thực tế

Khách hàng đặt yêu cầu: "Muốn mỗi nhân viên phải nhập đúng tài khoản cá nhân của mình để duyệt web, không dùng theo IP hay theo Trusted Hosts như trước, kể cả khi nhiều người dùng chung một máy tính công cộng."

Anh Nam định làm theo cách quen thuộc — Firewall Policy accept bình thường, gán webfilter-profile như đã học ở bài Web Filter, xong. Nhưng cách này chỉ xác thực được theo IP nguồn, không tách bạch rõ ràng từng phiên khi nhiều người cùng dùng một máy công cộng.

Chị Lan chỉ ra: "Anh đang lẫn hai khái niệm khác nhau đấy. Cấu hình Firewall Policy với webfilter-profile/av-profile mà mình làm suốt từ đầu nhóm 3 tới giờ chỉ là chọn Inspection Mode (flow-based hay proxy-based) — quyết định cách nội dung được quét, đã học kỹ ở bài Antivirus Profile. Còn thứ khách hàng cần bây giờ là một tính năng khác hẳn: Web Proxy — quyết định cách traffic được chuyển tiếp qua một proxy engine chuyên dụng, với hai chế độ Explicit và Transparent. Hai khái niệm này đều dùng chữ 'proxy' nên rất dễ nhầm, nhưng là hai cơ chế độc lập trong FortiOS."

Bài này giải thích rõ Web Proxy (Explicit và Transparent) — một tính năng riêng biệt với Inspection Mode đã học trước đó — và khi nào thực sự cần dùng tới nó.


2. Kiến thức cốt lõi

2.0 Phân biệt quan trọng: Inspection Mode ≠ Web Proxy

Đây là điểm dễ nhầm lẫn nhất trong toàn bộ chủ đề proxy trên FortiOS — cần tách bạch rõ trước khi đi vào chi tiết:

Inspection Mode (đã học ở bài Antivirus)Web Proxy (chủ đề bài này)
Câu hỏi trả lời Nội dung được quét như thế nào? Traffic được chuyển tiếp qua proxy như thế nào?
Giá trị cấu hình flow hoặc proxy (tham số inspection-mode/feature-set) explicit hoặc transparent
Nơi cấu hình Ngay trong 1 Firewall Policy accept bình thường config firewall proxy-policy — một loại Policy riêng biệt
Cần thêm bước nào khác không Không — chỉ cần gán av-profile/webfilter-profiletrực tiếp Có — cần Proxy Policy riêng, và với Transparent còn cần thêm Firewall Policy redirect
Đa số triển khai thực tế Hầu hết Web Filter/Antivirus/IPS chỉ dùng cơ chế này, KHÔNG cần Web Proxy Chỉ cần khi có nhu cầu đặc thù (xác thực proxy rõ ràng, forward-server/proxy chaining...)

⚠️ Lưu ý cực kỳ quan trọng: Toàn bộ ví dụ Antivirus/Web Filter/Application Control/IPS ở các bài trước đều dùng Inspection Mode, gán trực tiếp vào Firewall Policy accept thông thường (set inspection-mode proxy + set av-profile ...) — không hề cần tạo thêm config firewall proxy-policy hay bật http-policy-redirect. Đây chính là cách đa số triển khai FortiGate trong thực tế vận hành, và không hề liên quan tới nội dung Explicit/Transparent Proxy của bài này. Bài này chỉ áp dụng khi có nhu cầu đặc thù hơn — ví dụ cần xác thực người dùng theo phiên rõ ràng trên máy dùng chung (đúng tình huống mở đầu bài), hoặc cần forward traffic qua một upstream proxy khác (proxy chaining).

2.1 Web Proxy trong FortiOS: hai chế độ Explicit và Transparent

Web Proxy là một engine chuyên dụng, chủ yếu xử lý traffic HTTP/HTTPS, tách biệt khỏi luồng xử lý accept-policy thông thường — cấu hình qua Proxy Policy (config firewall proxy-policy, tương ứng menu Policy & Objects > Proxy Policy trên GUI), không phải Firewall Policy (IPv4) thông thường. Có hai chế độ:

  • Explicit — client phải chủ động khai báo FortiGate là proxy server (nhập IP:port hoặc dùng PAC file).
  • Transparent — client không cần biết gì về proxy, vẫn dùng FortiGate làm default gateway như bình thường; FortiGate tự chuyển hướng traffic vào Proxy Engine.

Kiến Trúc Proxy Engine Trên FortiGate (FortiOS) 1. EXPLICIT WEB PROXY (Client chủ động trỏ IP:Port) Client Browser Proxy: 192.168.1.1:8080 HTTP CONNECT FortiGate (Explicit Web Proxy Listener) config firewall proxy-policy set proxy explicit-web | Web Filter | Auth ★ Không cần Firewall Policy (IPv4) / Tự khớp thẳng vào Proxy Policy Internet / Web Server 2. TRANSPARENT WEB PROXY (Trong suốt - Bắt traffic ngầm) Client Browser Default GW: FortiGate Traffic thường BƯỚC 1: IPv4 Policy config firewall policy set http-policy-redirect enable Bắt buộc để đẩy vào Proxy! BƯỚC 2: Proxy Policy config firewall proxy-policy set proxy transparent-web Kiểm tra Security Profiles Internet

Cấu hình Transparent Web Proxy cần đủ hai bước:

Bước 1 — Firewall Policy chỉ với vai trò redirect (không gán Security Profile ở đây):

config firewall policy
    edit 1
        set name "redirect-to-transparent-proxy"
        set srcintf "internal"
        set dstintf "wan1"
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
        set http-policy-redirect enable
        set ssl-ssh-profile "deep-inspection"
        set nat enable
    next
end

Bước 2 — Proxy Policy, nơi thực sự gán Security Profile và xác thực:

config firewall proxy-policy
    edit 1
        set proxy transparent-web
        set dstintf "wan1"
        set srcaddr "all"
        set dstaddr "all"
        set service "webproxy"
        set action accept
        set schedule "always"
        set webfilter-profile "chan-mang-xa-hoi"
        set av-profile "av-default"
    next
end

Firewall Policy ở Bước 1 chỉ đóng vai trò chuyển hướng traffic sang Proxy Engine — bản thân nó không quét nội dung gì cả; toàn bộ Security Profile (Web Filter, Antivirus...) được áp dụng ở Proxy Policy tại Bước 2.

⚠️ Lưu ý về giới hạn phần cứng: Theo tài liệu Fortinet, các model FortiGate có RAM ≤ 2GB không khởi động sẵn các tiến trình WAD proxy liên quan (nhằm tiết kiệm bộ nhớ) — các tiến trình này chỉ khởi động khi thực sự có cấu hình Explicit Proxy, Transparent Proxy, hoặc ZTNA. Nói cách khác, giới hạn RAM này chỉ ảnh hưởng tới tính năng Web Proxy của bài này, không ảnh hưởng tới Inspection Mode (proxy-based AV/Web Filter thông thường) đã dùng xuyên suốt các bài trước — đây là một lý do thực tế nữa cho thấy hai khái niệm hoàn toàn tách biệt nhau.

2.2 Explicit Proxy — client chủ động khai báo FortiGate làm proxy

Explicit Proxy yêu cầu máy client cấu hình tường minh địa chỉ IP và port của FortiGate như một proxy server — trình duyệt hoặc hệ điều hành gửi request trực tiếp tới proxy đó thay vì gửi thẳng ra Internet. Trước tiên cần bật dịch vụ lắng nghe Explicit Proxy trên interface:

config web-proxy explicit
    set status enable
    set http-incoming-port 8080
    set ftp-over-http enable
    set socks enable
    set socks-incoming-port 1080
end

config system interface
    edit "internal"
        set allowaccess ping https ssh explicit-web-proxy
    next
end

Sau đó tạo Proxy Policy (không phải Firewall Policy thường) để quyết định traffic nào được phép và áp Security Profile:

config firewall proxy-policy
    edit 1
        set proxy explicit-web
        set srcintf "internal"
        set dstintf "wan1"
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set webfilter-profile "chan-mang-xa-hoi"
        set groups "Nhan-vien"
    next
end

⚠️ Lưu ý: Đúng theo khung phân biệt ở mục 2.0/2.1 — Explicit Proxy cũng dùng config firewall proxy-policy(set proxy explicit-web), không phải config firewall policy thông thường. Đây chính là điểm chung giữa Explicit và Transparent: cả hai đều là Proxy Policy, chỉ khác nhau ở việc có cần http-policy-redirect từ một Firewall Policy khác đứng trước hay không (Transparent cần, Explicit thì không vì client đã tự gửi thẳng request tới proxy).

2.3 Cấu hình client trỏ về Explicit Proxy

Máy client cần cấu hình proxy thủ công hoặc qua Group Policy (GPO), trỏ về đúng IP FortiGate và port đã khai (http-incoming-port):

  • Thủ công: Cấu hình proxy trong Settings trình duyệt/hệ điều hành, nhập IP FortiGate + port 8080.
  • PAC file (Proxy Auto-Configuration): FortiGate có thể tự phục vụ file PAC, tự động áp dụng cấu hình proxy cho trình duyệt mà không cần nhập tay từng máy — phù hợp triển khai quy mô lớn.
config web-proxy explicit
    set status enable
    set http-incoming-port 8080
    set pac-file-server-status enable
    set pac-file-name "proxy.pac"
    set pac-file-data "function FindProxyForURL(url, host) { return \"PROXY 10.0.0.1:8080\"; }"
end

2.4 Xác thực người dùng — điểm mạnh của Explicit Proxy

Đây chính là lý do khách hàng ở tình huống mở đầu bài cần chuyển sang Explicit Proxy: khi client kết nối tường minh tới proxy, FortiGate có thể yêu cầu xác thực ngay tại tầng proxy trước khi cho phép request tiếp tục — hoạt động tách biệt và rõ ràng hơn so với việc cố suy luận danh tính người dùng qua địa chỉ IP như ở Transparent Proxy (vốn gặp khó khi nhiều người dùng chung một máy/IP).

config authentication scheme
    edit "scheme-proxy-user"
        set method basic
        set user-database "local"
    next
end

config authentication rule
    edit "rule-proxy"
        set srcintf "webproxy"
        set srcaddr "all"
        set ip-based disable
        set active-auth-method "scheme-proxy-user"
    next
end

Với ip-based disable, FortiGate xác thực theo từng phiên proxy request thay vì gắn cứng theo địa chỉ IP nguồn — phù hợp môi trường máy dùng chung như thư viện, phòng lab, hoặc kiosk công cộng.

⚠️ Lưu ý — Transparent Proxy không hoàn toàn bó buộc theo IP: Theo mặc định, Transparent Proxy xác thực dựa trên IP (IP-based) — đây là lý do khiến nó bất tiện trên máy dùng chung như mô tả ở tình huống mở đầu bài. Tuy nhiên Transparent Proxy vẫn xác thực được theo session/user cụ thể nếu kết hợp thêm: Captive Portal (set proxy-captive-portal enable cùng authentication scheme/rule phù hợp, buộc người dùng đăng nhập qua trang web trước) tương tự cơ chế đã học ở bài Identity Policy, hoặc FSSO (phương thức xác thực passive, nhận diện người dùng ngầm qua Domain Controller mà không cần họ đăng nhập thủ công). Do đó, sự khác biệt giữa hai chế độ nằm ở việc Explicit Proxy hỗ trợ xác thực session-based ngay từ băn đầu và đơn giản hơn, còn Transparent Proxy cần cấu hình bổ sung mới đạt được hiệu quả tương đương.

2.5 So sánh nhanh và khi nào chọn chế độ nào

Tiêu chíTransparent ProxyExplicit Proxy
Cấu hình client Không cần Cần khai báo IP:port hoặc PAC file
Cấu hình FortiGate Firewall Policy (http-policy-redirect) + Proxy Policy riêng Bật Explicit Proxy Interface + tạo Proxy Policy
Xác thực user trên máy dùng chung Mặc định IP-based; cần thêm Captive Portal/FSSO để session-based Hỗ trợ IP-based lẫn session-based ngay từ đầu
Độ phức tạp triển khai Trung bình — cần đúng 2 bước cấu hình phía FortiGate Cao hơn — cần phân phối cấu hình client (PAC/GPO)
Phù hợp Đa số triển khai doanh nghiệp thông thường Môi trường cần xác thực chặt, máy dùng chung, kiểm soát proxy chi tiết
Giới hạn RAM (từ FortiOS 7.4.4) Không hỗ trợ trên model ≤ 2GB RAM Không hỗ trợ trên model ≤ 2GB RAM

⚠️ Lưu ý: Không phải mọi Security Profile đều hoạt động giống hệt nhau giữa hai chế độ — một số tính năng nâng cao (như SOCKS proxy, FTP-over-HTTP) chỉ khả dụng ở Explicit Proxy. Trước khi chuyển đổi chế độ cho một mạng đang hoạt động, cần rà soát lại toàn bộ Security Profile hiện có để đảm bảo tương thích.


3. Hỏi & Đáp

Có thể chạy đồng thời cả Transparent và Explicit Proxy trên cùng một FortiGate không?

Có — hai chế độ có thể cùng tồn tại, áp dụng cho các interface/Policy khác nhau tùy nhu cầu. Ví dụ mạng văn phòng chính dùng Transparent Proxy như thường lệ, riêng khu vực máy dùng chung (thư viện, phòng lab) áp dụng Explicit Proxy để xác thực chặt hơn.

PAC file có bắt buộc phải lưu trên FortiGate không?

Không bắt buộc — có thể host PAC file trên một web server riêng và chỉ cần trỏ client tới URL đó, tương tự dùng chung PAC file cho nhiều mục đích khác trong tổ chức. FortiGate hỗ trợ tự phục vụ PAC file chỉ để tiện lợi, không phải yêu cầu bắt buộc.

Nếu người dùng cố tình đổi cấu hình proxy trên máy để bỏ qua Explicit Proxy thì sao?

Đây là rủi ro thực tế cần cân nhắc — người dùng có quyền admin cục bộ trên máy có thể tự tắt cấu hình proxy để né tránh kiểm soát. Giải pháp thường dùng là khóa cấu hình proxy qua Group Policy (không cho người dùng tự sửa), kết hợp Firewall Policy chặn traffic HTTP/HTTPS trực tiếp không qua proxy như một lớp phòng thủ bổ sung.

Explicit Proxy có tránh được cảnh báo chứng chỉ (certificate warning) tốt hơn Transparent Proxy không?

Không hẳn — nếu cả hai cùng bật Deep SSL Inspection (đã học ở bài SSL Inspection), cả hai chế độ đều cần cài CA Certificate của FortiGate lên máy client để tránh cảnh báo, không có ngoại lệ nào miễn trừ cho Explicit Proxy. Điểm khác biệt chỉ nằm ở cơ chế kỹ thuật: với Explicit Proxy, client gửi lệnh CONNECT tới FortiGate và nhận chứng chỉ của proxy ngay từ bước thiết lập kết nối; với Transparent Proxy, FortiGate đóng vai trò giả lập server đích (kiểu MITM hợp pháp, đã nhắc ở bài SSL Inspection) — nếu CA chưa được client tin cậy, trình duyệt vẫn báo đỏ y hệt nhau ở cả hai chế độ.

Explicit Proxy có ảnh hưởng gì tới hiệu năng so với Transparent Proxy không?

Về nguyên lý xử lý tương tự nhau ở tầng UTM (đều là proxy-based inspection), nhưng Explicit Proxy có thêm chi phí xử lý cho bước xác thực từng request và khả năng quản lý phiên proxy tường minh — chênh lệch hiệu năng thường không đáng kể với hầu hết triển khai vừa và nhỏ.


4. Quiz

Câu 1: Về phía FortiGate, Transparent Proxy hoạt động như thế nào để traffic thực sự đi vào Proxy Engine?

  • A. Hoàn toàn tự động, không cần cấu hình gì thêm ngoài Firewall Policy accept thông thường
  • B. Cần một Firewall Policy có http-policy-redirect enable và một Proxy Policy riêng (proxy transparent-web)
  • C. Chỉ cần bật utm-status enable là đủ, không cần thêm bước nào khác
  • D. Yêu cầu client phải cấu hình IP:port thủ công giống Explicit Proxy

Câu 2: Vì sao Explicit Proxy phù hợp hơn Transparent Proxy trong môi trường nhiều người dùng chung một máy/IP?

  • A. Explicit Proxy nhanh hơn về mặt tốc độ xử lý
  • B. Explicit Proxy xác thực theo từng phiên proxy request, không phụ thuộc vào việc gắn cứng theo địa chỉ IP nguồn
  • C. Transparent Proxy không hỗ trợ HTTPS
  • D. Không có sự khác biệt thực tế nào

Câu 3: PAC file (Proxy Auto-Configuration) dùng để làm gì?

  • A. Mã hóa toàn bộ traffic HTTPS
  • B. Tự động cấu hình thiết lập proxy cho trình duyệt/hệ điều hành mà không cần nhập tay từng máy
  • C. Thay thế hoàn toàn Firewall Policy
  • D. Chỉ dùng được cho FTP

Câu 4: Cả Explicit Proxy và Transparent Proxy đều được cấu hình thông qua loại Policy nào, khác với Firewall Policy (IPv4) thông thường?

  • A. config router policy
  • B. config firewall proxy-policy
  • C. config firewall shaping-policy
  • D. config firewall local-in-policy

Câu 5: Có thể triển khai đồng thời cả Transparent và Explicit Proxy trên cùng một FortiGate không?

  • A. Không, chỉ được chọn một trong hai cho toàn bộ thiết bị
  • B. Có, hai chế độ có thể áp dụng cho các interface/Policy khác nhau tùy nhu cầu
  • C. Chỉ được nếu bật multi-VDOM
  • D. Explicit Proxy luôn ghi đè Transparent Proxy khi cả hai cùng bật

👉 Đáp án

Câu 1: B Dù client không cần cấu hình gì, phía FortiGate vẫn cần đủ hai bước: một Firewall Policy bật http-policy-redirect enable để chuyển hướng traffic, và một Proxy Policy riêng (config firewall proxy-policy với set proxy transparent-web) để thực sự đưa traffic vào Proxy Engine và áp Security Profile.

Câu 2: B Explicit Proxy xác thực theo từng phiên proxy request cụ thể (khi ip-based disable), không phụ thuộc vào việc suy luận danh tính qua địa chỉ IP nguồn — phù hợp hơn cho môi trường nhiều người dùng chung một máy/IP.

Câu 3: B PAC file tự động áp dụng cấu hình proxy cho trình duyệt/hệ điều hành của client, giúp triển khai quy mô lớn mà không cần nhập tay IP:port trên từng máy riêng lẻ.

Câu 4: B Cả Explicit Proxy (set proxy explicit-web) lẫn Transparent Proxy (set proxy transparent-web) đều cấu hình qua config firewall proxy-policy — một loại Policy riêng biệt, khác hoàn toàn với Firewall Policy (IPv4) thông thường dùng cho Inspection Mode.

Câu 5: B Hai chế độ Transparent và Explicit Proxy có thể cùng tồn tại trên một FortiGate, áp dụng cho các interface hoặc Policy khác nhau tùy theo nhu cầu từng khu vực mạng.


📚 Bài viết thuộc khóa học FortiGate của VNExperts

🧭 Điều hướng

⬅️ Bài trước🏠 Mục lục khóa họcBài kế tiếp ➡️
Traffic Shaping & QoS trên FortiGate Mục lục khóa học FortiGate Logging & Reporting cơ bản trên FortiGate