Loading...

Web Filter trên FortiGate: FortiGuard Category, URL Filter, Override

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

Khách hàng yêu cầu chặn toàn bộ mạng xã hội theo danh mục FortiGuard, nhưng lại muốn mở riêng ngoại lệ cho trang Facebook Fanpage chính thức của công ty (dùng để marketing) — trong khi domain đó vẫn thuộc chung category "Social Media" bị chặn.

Anh Nam bối rối: "Nếu chặn theo category thì chặn hết cả nhóm luôn, làm sao mở riêng 1 domain mà không tắt luôn cả category?"

Chị Lan: "Đây chính là lúc dùng Local Category hoặc URL Filter tường minh — luôn có độ ưu tiên cao hơn FortiGuard Category mặc định. Khai riêng domain fanpage đó với action Allow, đặt trước rule chặn category, là xong."

Bài này giải thích cơ chế FortiGuard Category filteringURL Filter, và tính năng Override — công cụ chính để kiểm soát truy cập web trên FortiGate.


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

2.1 FortiGuard Category Filter — chặn/cho phép theo danh mục

FortiGuard Web Filtering phân loại hàng tỷ trang web vào các danh mục (category) được Fortinet duy trì và cập nhật liên tục — khi traffic HTTP/HTTPS đi qua Policy có bật Web Filter, FortiGate tra cứu URL với FortiGuard để xác định category, rồi áp hành động tương ứng.

config webfilter profile
    edit "chan-mang-xa-hoi"
        config ftgd-wf
            config filters
                edit 1
                    set category 23
                    set action block
                next
            end
        end
    next
end

⚠️ Lưu ý: Không nên nhớ thuộc lòng số category (category 23 trong ví dụ trên là "Social Media") — số ID có thể trông giống nhau qua các phiên bản nhưng Fortinet vẫn có thể điều chỉnh/thêm category mới theo thời gian. Cách tra cứu đúng và nhanh nhất:

  • Qua GUI (khuyến nghị, trực quan nhất): vào Security Profiles > Web Filter, mở một profile bất kỳ, cuộn tới phần FortiGuard category based filter — toàn bộ category hiển thị theo tên (Social Media, Gambling, Malicious Websites...), nhóm theo chủ đề, tick chọn action trực tiếp. GUI tự động ánh xạ tên sang đúng ID phía sau, người dùng không cần nhìn thấy hay quan tâm tới số ID.
  • Qua CLI: vào đúng vị trí cần khai category, gõ dấu ? — FortiGate sẽ in ra toàn bộ danh sách category, mỗi dòng gồm cả số ID lẫn tên (ví dụ 23 Social.Media). Đọc trong danh sách đó để tìm đúng tên category cần chặn, rồi gõ lại đúng số ID tương ứng vào lệnh set category — không cần nhớ trước số ID, chỉ cần đọc ra từ chính output của ?:
    config webfilter profile
        edit "chan-mang-xa-hoi"
            config ftgd-wf
                config filters
                    edit 1
                        set category ?
    00  Local-Category
    ...
    23  Social.Media
    26  Malicious.Websites
    61  Newly.Observed.Domain
    ...
                        set category 23
  • Tra cứu nhanh 1 URL cụ thể thuộc category nào: dùng công cụ FortiGuard Web Filter Lookuptại https://www.fortiguard.com/webfilter — nhập domain, hệ thống trả về tên category và mô tả, phù hợp khi cần xác minh nhanh một domain cụ thể trước khi viết rule.

Trên thực tế, phần lớn người quản trị cấu hình category qua GUI để chọn theo tên; chỉ khi thao tác CLI/API tự động hóa mới cần biết trước số ID cụ thể.

Các hành động (action) khả dụng cho mỗi category:

  • allow — cho phép truy cập, vẫn có thể bị chặn sau đó bởi các Security Profile khác (IPS, Antivirus...).
  • block — chặn hoàn toàn, hiển thị trang thông báo thay thế.
  • monitor — cho phép và ghi log, không chặn — hữu ích để quan sát hành vi trước khi quyết định chặn.
  • warning — hiển thị trang cảnh báo, người dùng có thể bấm "Proceed" để tiếp tục.
  • authenticate — yêu cầu xác thực (liên quan Identity Policy đã học ở bài 26) trước khi cho qua.

2.2 Local Category — tự định nghĩa category riêng

Local Category cho phép tạo ra một category hoàn toàn mới, tự đặt tên, rồi gán các domain cụ thể vào category đó — khác với việc chỉ dùng category có sẵn do FortiGuard phân loại. Category tự định nghĩa này tham gia vào hệ thống phân loại y hệt category FortiGuard: vẫn đặt action theo kiểu category (block/allow/monitor...) trong Web Filter Profile.

config webfilter ftgd-local-cat
    edit "fanpage-noi-bo"
        set status enable
    next
end

config webfilter ftgd-local-rating
    edit "fanpage.facebook.com/congty"
        set category "fanpage-noi-bo"
        set status enable
    next
end

config webfilter profile
    edit "chan-mang-xa-hoi"
        config ftgd-wf
            config filters
                edit 1
                    set category 23
                    set action block
                next
                edit 2
                    set category "fanpage-noi-bo"
                    set action allow
                next
            end
        end
    next
end

Với cấu hình trên, fanpage.facebook.com/congty được gán vào category riêng fanpage-noi-bo với action allow — đúng nhu cầu tình huống mở đầu bài: mở riêng một domain cụ thể trong khi category "Social Media" (category 23) chung vẫn bị block.

⚠️ Lưu ý: Local Category khác URL Filter (mục 2.5) ở chỗ nó vẫn hoạt động trong khuôn khổ hệ thống category — một domain chỉ thuộc về đúng 1 category tại một thời điểm (category tự định nghĩa sẽ ghi đè category gốc của FortiGuard cho domain đó). URL Filter thì độc lập hoàn toàn với khái niệm category, xử lý theo danh sách tuần tự riêng.

2.3 Thứ tự ưu tiên khi phân loại — Local trước, FortiGuard sau cùng

Khi FortiGate cần xác định category của một website, nó tra cứu theo thứ tự ưu tiên cố định:

Thứ tự ưu tiên category khi phân loại 1 website 1. Local Category (tự định nghĩa) — ưu tiên cao nhất 2. Remote/External Threat Feed Category 3. FortiGuard Category — mặc định, dữ liệu chung toàn cầu

Đây chính là cơ chế giải quyết tình huống mở đầu bài — khai một Local Category riêng chứa domain fanpage cần mở, đặt action allow, sẽ được ưu tiên hơn FortiGuard Category (đang chặn category "Social Media" chứa domain đó).

2.4 Remote/External Threat Feed Category — mở rộng danh sách chặn tự động

Đứng giữa Local Category và FortiGuard Category về mặt ưu tiên, Remote/External Threat Feed Category là category được nạp tự động từ một nguồn dữ liệu bên ngoài — khác với Local Category phải tự gõ tay từng domain, Threat Feed cho phép FortiGate định kỳ tải về một danh sách domain/URL từ một địa chỉ URL do người quản trị khai báo (ví dụ một feed nội bộ do đội bảo mật công ty tự tổng hợp, hoặc một threat intelligence feed từ bên thứ ba), rồi coi cả danh sách đó như một category để gán action.

config system external-resource
    edit "threat-feed-noi-bo"
        set type domain
        set resource "https://intel.congty.vn/blocklist-domain.txt"
        set refresh-rate 5
    next
end

config webfilter profile
    edit "chan-mang-xa-hoi"
        config ftgd-wf
            config filters
                edit 1
                    set category 192
                    set action block
                next
            end
        end
    next
end

Sau khi tạo, threat feed xuất hiện như một category riêng (thường ở dải category ID cao) để gán action trong Web Filter Profile — tham số refresh-rate (tính bằng phút) quyết định FortiGate tải lại danh sách mới sau bao lâu, giúp danh sách chặn luôn cập nhật mà không cần vào sửa tay từng lần như Local Category.

Loại categoryNguồn dữ liệuCách cập nhật
Local Category Tự gõ tay từng domain trên chính FortiGate Thủ công, tức thời khi sửa
Remote/External Threat Feed Tải tự động từ 1 URL bên ngoài (feed nội bộ hoặc threat intel bên thứ ba) Tự động theo refresh-rate
FortiGuard Category Dữ liệu phân loại toàn cầu do Fortinet duy trì Tự động qua FortiGuard

⚠️ Lưu ý: Threat Feed phù hợp khi tổ chức có đội an ninh mạng riêng tự phát hiện và tổng hợp domain độc hại mới, hoặc muốn tích hợp thêm các danh sách IOC (Indicator of Compromise) công khai/thương mại — giúp bổ sung tốc độ phản ứng nhanh hơn, không phụ thuộc hoàn toàn vào chu kỳ cập nhật của FortiGuard. File nguồn (resource) cần ở định dạng plain text hợp lệ, mỗi dòng một domain/URL, và server host file đó phải luôn khả dụng để FortiGate fetch được đúng lịch.

2.5 URL Filter — kiểm soát tường minh theo domain/URL cụ thể

Ngoài phân loại theo category, URL Filter cho phép khai báo tường minh từng domain hoặc URL cụ thể, độc lập với kết quả phân loại của FortiGuard:

config webfilter urlfilter
    edit 1
        set name "url-fanpage-congty"
        config entries
            edit 1
                set url "fanpage.facebook.com/congty"
                set type wildcard
                set action allow
            next
        end
    next
end

config webfilter profile
    edit "chan-mang-xa-hoi"
        set urlfilter-table 1
        config ftgd-wf
            config filters
                edit 1
                    set category 23
                    set action block
                next
            end
        end
    next
end

Các entry trong URL Filter được xử lý theo thứ tự từ trên xuống, match đầu tiên thắng — tương tự nguyên tắc Policy Lookup đã học. Loại khớp (type) hỗ trợ: simple (khớp chính xác chuỗi), regex (biểu thức chính quy), hoặc wildcard (dùng ký tự đại diện).

⚠️ Lưu ý: URL Filter tường minh (trong bảng urlfilter) và FortiGuard Category Filter là hai cơ chế riêng biệt cùng nằm trong một Web Filter Profile — theo thứ tự ưu tiên đã nêu ở mục 2.3, kết quả từ URL Filter (thuộc dạng cấu hình cục bộ) vẫn được ưu tiên hơn khi có xung đột với FortiGuard Category.

2.6 Web Filter Override — cho phép người dùng tự vượt qua tạm thời

Override cho phép người dùng có thông tin đăng nhập hợp lệ tự vượt qua một trang bị chặn theo category, mà không cần admin can thiệp thủ công mỗi lần — hữu ích cho các tổ chức muốn linh hoạt hơn "chặn cứng" hoàn toàn.

config webfilter profile
    edit "chan-mang-xa-hoi"
        set options allow-override
        config override
            set ovrd-cookie enable
            set ovrd-scope user
            set profile "allow-all-web"
            set ovrd-dur-mode constant
            set ovrd-dur 15
        end
    next
end
  • ovrd-scope — phạm vi áp dụng override: user (chỉ người vừa xác thực), user-groupip (toàn bộ traffic từ IP đó), hoặc ask (hỏi người dùng chọn phạm vi khi override).
  • ovrd-dur — thời gian hiệu lực override (phút), sau đó tự động quay về chặn như cũ.
  • profile — Web Filter Profile khác được áp dụng tạm thời trong thời gian override (thường là profile lỏng hơn, ví dụ "allow-all-web").

⚠️ Lưu ý: Override yêu cầu người dùng xác thực bằng tài khoản hợp lệ trước khi được cấp quyền vượt qua — không phải ai cũng bấm "Proceed" là qua được, khác với hành động warning (chỉ cảnh báo, không cần đăng nhập).

2.7 Bảng tổng hợp các hành động category

ActionHành vi
allow Cho phép, vẫn qua các Security Profile khác
block Chặn hoàn toàn, hiện trang thông báo
monitor Cho phép + ghi log, không chặn
warning Hiện cảnh báo, người dùng có thể tự "Proceed"
authenticate Yêu cầu đăng nhập trước khi cho qua

3. Hỏi & Đáp

monitor và warning khác nhau thế nào, khi cả hai đều không chặn hẳn?

monitor hoàn toàn im lặng với người dùng — họ không thấy bất kỳ khác biệt nào, chỉ có log được ghi lại phía admin để theo dõi. warning thì người dùng thấy được trang cảnh báo và phải chủ động bấm "Proceed" mới tiếp tục — phù hợp khi muốn nhắc nhở người dùng về chính sách công ty mà không chặn cứng.

Nếu một domain vừa nằm trong URL Filter (allow) vừa thuộc category đang bị block, kết quả cuối là gì?

URL Filter tường minh được ưu tiên hơn FortiGuard Category theo đúng thứ tự đã nêu — domain đó sẽ được allow theo cấu hình URL Filter, bất kể FortiGuard đang phân loại category đó là gì.

Override có áp dụng vĩnh viễn sau khi người dùng bấm 1 lần không?

Không — Override chỉ có hiệu lực trong khoảng thời gian đã cấu hình ở ovrd-dur (tính bằng phút). Sau khi hết thời gian, hành vi Web Filter quay lại trạng thái ban đầu (chặn theo category), người dùng phải override lại nếu cần tiếp tục truy cập.

Category ID (như số 23 trong ví dụ) có cố định giữa các phiên bản FortiOS không?

Không nên xem là cố định tuyệt đối — Fortinet có thể điều chỉnh/thêm category mới theo thời gian. Đây là lý do nên tra cứu qua GUI hoặc CLI (?) như đã hướng dẫn ở mục 2.1, thay vì nhớ cứng số liệu khi cấu hình trên thiết bị thật.


4. Quiz

Câu 1: Khi có xung đột giữa Local Category và FortiGuard Category cho cùng một website, kết quả nào được ưu tiên?

  • A. FortiGuard Category luôn thắng
  • B. Local Category được ưu tiên cao hơn
  • C. Cả hai được áp dụng đồng thời
  • D. FortiGate báo lỗi cấu hình

Câu 2: Hành động nào cho phép truy cập nhưng hoàn toàn không hiển thị bất kỳ thông báo nào cho người dùng, chỉ ghi log phía admin?

  • A. block
  • B. warning
  • C. monitor
  • D. authenticate

Câu 3: Trong URL Filter, các entry được xử lý theo nguyên tắc nào?

  • A. Ngẫu nhiên
  • B. Theo thứ tự từ trên xuống, match đầu tiên thắng
  • C. Theo bảng chữ cái tên miền
  • D. Chỉ entry cuối cùng có hiệu lực

Câu 4: Tham số ovrd-scope trong cấu hình Override quyết định điều gì?

  • A. Thời gian hiệu lực override
  • B. Phạm vi áp dụng override: theo user, user-group, hay IP
  • C. Category nào bị chặn
  • D. Không có tác dụng gì

Câu 5: Sau khi hết thời gian ovrd-dur, hành vi Web Filter sẽ như thế nào?

  • A. Tiếp tục cho phép vĩnh viễn
  • B. Tự động quay về trạng thái chặn ban đầu theo cấu hình category
  • C. Xóa toàn bộ cấu hình Web Filter
  • D. Yêu cầu khởi động lại thiết bị

👉 Đáp án

Câu 1: B Local Category (tự định nghĩa) luôn được ưu tiên cao hơn FortiGuard Category theo thứ tự phân loại cố định: Local → Remote/External Threat Feed → FortiGuard.

Câu 2: C monitor cho phép truy cập và ghi log phía admin, nhưng hoàn toàn không hiển thị bất kỳ thông báo nào cho người dùng — khác với warning yêu cầu người dùng thấy và bấm "Proceed".

Câu 3: B Các entry trong URL Filter được xử lý theo thứ tự từ trên xuống, entry đầu tiên khớp điều kiện sẽ được áp dụng, tương tự nguyên tắc Policy Lookup.

Câu 4: B ovrd-scope quyết định phạm vi áp dụng của override — chỉ riêng user vừa xác thực, cả user-group, hay toàn bộ traffic từ một địa chỉ IP.

Câu 5: B Sau khi hết thời gian ovrd-dur, hành vi Web Filter tự động quay về trạng thái chặn ban đầu theo đúng cấu hình category, người dùng phải override lại nếu muốn tiếp tục truy cập.


📚 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 ➡️
Antivirus Profile: Flow-based vs Proxy-based Mục lục khóa học FortiGate Application Control: Sensor, Category, Override