Loading...

Service Object & Schedule trên FortiGate

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

Bộ phận nhân sự yêu cầu anh Nam: chặn hoàn toàn mạng xã hội (Facebook, TikTok) trong giờ hành chính, nhưng cho phép truy cập tự do vào giờ nghỉ trưa và sau giờ làm. Đồng thời, một ứng dụng nội bộ mới triển khai dùng cổng TCP 8080-8090 khá lạ, chưa có sẵn Service Object tương ứng để viết Policy.

Anh Nam hỏi chị Lan: "Em cần tạo Service Object riêng cho ứng dụng dùng cổng lạ đó, còn phần giới hạn theo giờ thì làm sao?"

Chị Lan: "Hai việc khác nhau nhưng đi cùng nhau trong 1 Policy. Cổng lạ thì tạo Service Object custom. Còn giới hạn theo khung giờ lặp lại hàng ngày thì dùng Recurring Schedule — khác với Onetime Schedule chỉ chạy đúng một lần rồi thôi."

Bài này giới thiệu Service Object (định danh dịch vụ/cổng trong Policy) và Schedule (giới hạn thời gian Policy có hiệu lực) — hai thành phần cấu hình Policy còn lại sau Address Object đã học ở bài trước.


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

2.1 Service Object là gì

Service Object định danh một dịch vụ mạng cụ thể — thường là sự kết hợp giữa giao thức (TCP/UDP/SCTP/ICMP/IP protocol khác) và số cổng — dùng làm điều kiện service trong Firewall Policy. FortiGate có sẵn hàng chục Service Object định nghĩa trước cho các dịch vụ phổ biến (HTTP, HTTPS, SSH, DNS, FTP...), và cho phép tạo thêm Service Object tùy chỉnh khi cần.

Service Object: 3 kiểu khai báo phổ biến TCP/UDP/SCTP port tcp-portrange 8080-8090 Phổ biến nhất — hầu hết dịch vụ ứng dụng ICMP icmptype 8 (echo request) Dùng cho ping, traceroute, chẩn đoán IP Protocol protocol-number VD: 47 (GRE) Giao thức không phải TCP/UDP/ICMP Có thể gộp nhiều Service Object vào 1 Service Group dùng chung trong Policy

TCP/UDP/SCTP port — kiểu phổ biến nhất, khai báo dải cổng cho từng giao thức vận chuyển:

config firewall service custom
    edit "App-noi-bo-8080"
        set protocol TCP/UDP/SCTP
        set tcp-portrange 8080-8090
    next
end

ICMP — dùng cho các dịch vụ chẩn đoán mạng như ping, traceroute:

config firewall service custom
    edit "Custom-Ping"
        set protocol ICMP
        set icmptype 8
    next
end

IP Protocol — dùng cho các giao thức không thuộc TCP/UDP/ICMP, khai báo trực tiếp bằng số hiệu giao thức IP (ví dụ 47 cho GRE, 50 cho ESP):

config firewall service custom
    edit "GRE-Tunnel"
        set protocol IP
        set protocol-number 47
    next
end

⚠️ Lưu ý: Với Service Object port range, cú pháp tcp-portrange hỗ trợ khai báo cả cổng nguồn lẫn cổng đíchtheo định dạng [cổng đích]:[cổng nguồn] — nếu chỉ cần giới hạn cổng đích (trường hợp phổ biến nhất), chỉ cần khai một vế, FortiGate mặc định coi cổng nguồn là toàn dải (1-65535).

2.2 Service Group — gom nhiều Service Object

Tương tự Address Group, Service Group gom nhiều Service Object thành một nhóm để dùng chung trong Policy, giảm số lần phải chọn lặp lại từng Service riêng lẻ:

config firewall service group
    edit "Web-Full"
        set member "HTTP" "HTTPS" "DNS"
    next
end

2.3 Session TTL — thời gian tồn tại phiên theo dịch vụ

Mỗi Service Object có thể có tham số session TTL riêng — thời gian một phiên (session) không có traffic mới trước khi FortiGate tự đóng nó khỏi session table. Có thể chỉnh trực tiếp trên Service Object, hoặc override riêng cho từng Policy cụ thể:

config firewall policy
    edit 50
        ...
        set session-ttl 1800
    next
end

⚠️ Lưu ý: Chỉ nên đặt session-ttl về 0 hoặc never (không bao giờ hết hạn) sau khi cân nhắc kỹ — một số ứng dụng cần giữ session sống lâu dài (như hệ thống giám sát kết nối liên tục), nhưng đặt tùy tiện cho toàn bộ Policy có thể khiến session table phình to bất thường, chiếm tài nguyên hệ thống không cần thiết theo thời gian.

2.4 Schedule là gì — giới hạn Policy theo thời gian

Schedule quyết định Policy có hiệu lực trong khung thời gian nào — Policy chỉ được xét trong Policy Lookup khi thời điểm hiện tại khớp với Schedule gắn kèm. Có hai loại Schedule:

Schedule: Onetime vs Recurring Onetime Chạy đúng 1 lần duy nhất start: 2026-09-01 08:00 end: 2026-09-01 18:00 VD: mở tạm 1 ngày cho đối tác bảo trì hệ thống Recurring Lặp lại theo ngày trong tuần day: Mon Tue Wed Thu Fri start: 08:00 — end: 18:00 VD: chỉ cho phép truy cập mạng xã hội giờ nghỉ trưa

Onetime Schedule — chỉ hiệu lực trong một khoảng thời gian cụ thể, chạy đúng một lần:

config firewall schedule onetime
    edit "Bao-tri-thang9"
        set start 08:00 2026/09/01
        set end 18:00 2026/09/01
    next
end

Recurring Schedule — lặp lại theo các ngày trong tuần, mỗi ngày một khung giờ cố định:

config firewall schedule recurring
    edit "Gio-nghi-trua"
        set day monday tuesday wednesday thursday friday
        set start 12:00
        set end 13:00
    next
end

Áp dụng Schedule vào Policy chặn mạng xã hội theo đúng tình huống mở đầu bài — chặn cả ngày, chỉ mở giờ nghỉ trưa:

config firewall schedule recurring
    edit "Gio-hanh-chinh"
        set day monday tuesday wednesday thursday friday
        set start 08:00
        set end 12:00
    next
    edit "Gio-hanh-chinh-chieu"
        set day monday tuesday wednesday thursday friday
        set start 13:00
        set end 18:00
    next
end

config firewall policy
    edit 60
        set name "chan-mang-xa-hoi-gio-hanh-chinh"
        set srcintf "internal"
        set dstintf "wan1"
        set srcaddr "all"
        set dstaddr "all"
        set application-list "block-social-media"
        set action deny
        set schedule "Gio-hanh-chinh"
        set service "ALL"
    next
end

⚠️ Lưu ý: Schedule dựa trên đồng hồ hệ thống của FortiGate — nếu cấu hình NTP sai hoặc múi giờ (timezone) đặt nhầm, Policy có Schedule sẽ kích hoạt/hết hiệu lực sai thời điểm dự kiến. Luôn xác nhận NTP đã đồng bộ đúng trước khi triển khai Policy phụ thuộc Schedule cho môi trường production.

2.5 Schedule Group — gom nhiều Schedule

Tương tự Address Group và Service Group, có thể gom nhiều Schedule (cả Onetime lẫn Recurring) thành Schedule Group để dùng chung, ví dụ gộp "giờ nghỉ trưa" và "ngoài giờ hành chính" thành một Schedule Group "Giờ được phép giải trí".


3. Hỏi & Đáp

Nếu Policy dùng Recurring Schedule nhưng đồng hồ FortiGate bị lệch múi giờ, hậu quả gì?

Policy sẽ kích hoạt hoặc hết hiệu lực sớm/muộn hơn dự kiến theo đúng độ lệch múi giờ đó — ví dụ Schedule "giờ nghỉ trưa 12h-13h" thực tế lại áp dụng vào 11h-12h nếu múi giờ lệch 1 tiếng. Đây là lỗi phổ biến khi thiết bị mới cài đặt chưa cấu hình đúng NTP/timezone.

Service Object custom có thể trùng tên với Service Object có sẵn của FortiGate không?

Không nên và thường không cho phép trùng tên hoàn toàn — nên đặt tên rõ ràng, có tiền tố phân biệt (ví dụ Custom- hoặc tên công ty) để tránh nhầm lẫn với Service Object mặc định, đặc biệt khi nâng cấp firmware có thể cập nhật thêm Service Object mới từ Fortinet.

Onetime Schedule sau khi hết hạn có tự động xóa khỏi cấu hình không?

Không tự động xóa — Onetime Schedule sau khi hết hạn chỉ đơn thuần không còn kích hoạt Policy liên quan nữa (Policy đó coi như luôn "false" về mặt thời gian), nhưng vẫn tồn tại trong cấu hình cho tới khi người quản trị chủ động xóa. Nên rà soát định kỳ để dọn các Onetime Schedule đã hết hạn không còn dùng.

Có thể kết hợp Onetime và Recurring cho cùng một Policy không?

Một Policy chỉ gán được một Schedule duy nhất tại một thời điểm — nhưng có thể dùng Schedule Group để gộp cả Onetime và Recurring lại thành một nhóm, rồi gán Schedule Group đó cho Policy, đạt hiệu quả kết hợp logic "hoặc" giữa các điều kiện thời gian khác nhau.


4. Quiz

Câu 1: Service Object loại nào phù hợp để khai báo giao thức GRE (protocol number 47)?

  • A. TCP/UDP/SCTP port
  • B. ICMP
  • C. IP Protocol
  • D. Không thể khai báo được trên FortiGate

Câu 2: Recurring Schedule khác Onetime Schedule ở điểm nào?

  • A. Recurring chỉ chạy đúng 1 lần, Onetime lặp lại nhiều lần
  • B. Recurring lặp lại theo các ngày trong tuần với khung giờ cố định, Onetime chỉ hiệu lực trong một khoảng thời gian cụ thể duy nhất
  • C. Không có sự khác biệt nào
  • D. Recurring chỉ dùng được cho Policy IPv6

Câu 3: Schedule trên FortiGate dựa vào yếu tố nào để xác định thời điểm kích hoạt/hết hiệu lực?

  • A. Đồng hồ hệ thống (NTP/timezone) của FortiGate
  • B. Đồng hồ của máy trạm client
  • C. Giờ UTC cố định, không đổi theo cấu hình
  • D. Không liên quan tới thời gian thực

Câu 4: Một Policy có thể gán trực tiếp bao nhiêu Schedule cùng lúc?

  • A. Không giới hạn
  • B. Đúng một Schedule (có thể là Schedule Group để gộp nhiều điều kiện)
  • C. Tối đa 2 Schedule
  • D. Bắt buộc phải có ít nhất 3 Schedule

Câu 5: Onetime Schedule sau khi hết hạn sẽ có hành vi gì?

  • A. Tự động bị xóa khỏi cấu hình
  • B. Vẫn tồn tại trong cấu hình nhưng không còn kích hoạt Policy liên quan
  • C. Tự động chuyển thành Recurring Schedule
  • D. Gây lỗi cấu hình cần sửa ngay

👉 Đáp án

Câu 1: C IP Protocol dùng cho các giao thức không thuộc TCP/UDP/ICMP, khai báo bằng số hiệu giao thức IP như 47 (GRE) hay 50 (ESP).

Câu 2: B Recurring Schedule lặp lại theo các ngày trong tuần với khung giờ cố định (ví dụ giờ hành chính hàng ngày), còn Onetime Schedule chỉ hiệu lực trong một khoảng thời gian cụ thể, không lặp lại.

Câu 3: A Schedule dựa trên đồng hồ hệ thống (kết hợp cấu hình NTP và timezone) của chính FortiGate để xác định thời điểm kích hoạt hay hết hiệu lực.

Câu 4: B Một Policy chỉ gán được đúng một Schedule tại một thời điểm; muốn kết hợp nhiều điều kiện thời gian khác nhau, dùng Schedule Group để gộp lại rồi gán Schedule Group đó cho Policy.

Câu 5: B Onetime Schedule sau khi hết hạn không tự động bị xóa khỏi cấu hình — nó chỉ đơn thuần không còn kích hoạt Policy liên quan, cần người quản trị chủ động dọn dẹp nếu không còn nhu cầu sử dụ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 ➡️
Address Object, Address Group, Internet Service Database (ISDB) Mục lục khóa học FortiGate Local-In Policy — kiểm soát traffic đến chính FortiGate