Danh mục sản phẩm
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.
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-portrangehỗ 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-ttlvề0hoặcnever(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:
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ọc | Bà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 |
