🗺️ Sơ đồ – Luồng traffic qua Firewall Policy
flowchart LR
PC["PC-Client\nVLAN10\n10.10.10.100"]
SRV["Server\nVLAN20\n10.10.20.100"]
Internet(["Internet"])
subgraph FGT["FortiGate - Firewall Policy"]
P1["Policy 1\nCLIENT to INTERNET\nAccept + NAT\nLog all"]
P2["Policy 2\nCLIENT to SERVER\nAccept HTTP/HTTPS/SSH\nLog all"]
P100["Policy 100 DENY_ALL\nDeny - Log all"]
P1 -->|"NAT + Accept"| Internet
P2 -->|"Accept HTTP/HTTPS/SSH"| SRV
P100 --> Block["BLOCK"]
end
PC --> P1
PC --> P2
subgraph Inspect["Inspection Mode"]
Flow["Flow-based\nNhanh - Mac dinh FortiOS 7.6"]
Proxy["Proxy-based\nSau hon - Ho tro AV/WebFilter day du"]
end
📚 Lý thuyết cơ bản (Dành cho người mới)
🔰 Firewall Policy là gì?
Firewall Policy = Quy tắc lọc traffic của FortiGate.
💡 Hãy nghĩ đến bảo vệ ở cổng tòa nhà:
- "Nhân viên công ty (VLAN10) được đi ra ngoài (Internet) – cho qua!"
- "Khách lạ (VLAN30) muốn vào phòng server (VLAN20) – chặn lại!"
Mỗi policy gồm các thành phần:
| Thành phần | Ý nghĩa | Ví dụ |
|---|---|---|
| srcintf | Cổng nguồn (từ đâu đến) | port3.10 (VLAN10) |
| dstintf | Cổng đích (đến đâu) | port2 (WAN/Internet) |
| srcaddr | Địa chỉ IP nguồn | all (tất cả) |
| dstaddr | Địa chỉ IP đích | all (tất cả) |
| service | Dịch vụ/giao thức | HTTP, HTTPS, SSH |
| action | Hành động | accept (cho phép) / deny (chặn) |
| nat | Bật/tắt NAT | enable / disable |
| logtraffic | Ghi log traffic | all / utm / disable |
🔰 NAT là gì?
NAT (Network Address Translation) = Kỹ thuật "dịch địa chỉ IP".
💡 Hãy nghĩ đến bưu điện:
- Bạn gửi thư từ trong công ty (địa chỉ nội bộ
10.10.10.100).- Bưu điện (FortiGate) đổi địa chỉ người gửi thành địa chỉ công khai (
203.113.x.x) trước khi gửi ra ngoài.- Khi có thư trả lời về, bưu điện chuyển lại đúng cho bạn.
→ Đây là lý do máy trong mạng nội bộ có thể ra Internet dù dùng IP nội bộ!
🔰 Flow-based vs Proxy-based Inspection
| Flow-based | Proxy-based | |
|---|---|---|
| Tốc độ | Nhanh hơn | Chậm hơn |
| Kiểm tra sâu | Ít hơn | Sâu hơn (toàn bộ gói tin) |
| Antivirus | Có (cơ bản) | Có (đầy đủ hơn) |
| Web Filter | Có | Có (đầy đủ hơn) |
| Mặc định FortiOS 7.6 | ✅ Có | Phải chọn thủ công |
| Dùng khi | Đường mạng nhanh, cần performance | Cần bảo mật cao, chấp nhận chậm hơn |
🔰 Thứ tự policy quan trọng!
FortiGate đọc policy từ trên xuống dưới. Gói tin khớp policy đầu tiên thì dừng lại, không kiểm tra tiếp.
Policy 1: VLAN10 → Internet = ALLOW ← Gói tin từ VLAN10 khớp ở đây, dừng lại
Policy 2: all → all = DENY ← Không bao giờ kiểm tra đến đây với VLAN10
🛠️ Thực hành
Policy 1: Client ra Internet (có NAT)
config firewall policy
edit 1
set name "CLIENT_to_INET"
set srcintf "port3.10"
set dstintf "port2"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set nat enable
set logtraffic all
next
end
Policy 2: Client truy cập Server
config firewall policy
edit 2
set name "CLIENT_to_SERVER"
set srcintf "port3.10"
set dstintf "port3.20"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "HTTP" "HTTPS" "SSH"
set logtraffic all
next
end
Policy 100: Chặn tất cả còn lại
config firewall policy
edit 100
set name "DENY_ALL"
set srcintf "any"
set dstintf "any"
set srcaddr "all"
set dstaddr "all"
set action deny
set logtraffic all
next
end
Debug khi traffic không đi được
# Kiểm tra policy nào được áp dụng
diagnose firewall iprobe lookup 10.10.10.100 8.8.8.8 6 12345 80
# Debug luồng traffic thời gian thực
diagnose debug flow filter addr 10.10.10.100
diagnose debug flow show function-name enable
diagnose debug flow trace start 50
diagnose debug enable
# Dừng debug
diagnose debug disable
diagnose debug reset
🔒 Bảo mật cần nhớ
- ✅ Luôn bật
logtraffic allcho policy quan trọng. - ✅ Áp dụng Antivirus + Web Filter profile cho policy ra Internet.
- ✅ Không dùng
service ALLtrừ khi thực sự cần. - ✅ Policy DENY_ALL ở cuối để chặn mọi traffic không được phép rõ ràng.
📖 Case thực tế
User phản ánh "không vào được Internet". Debug:
1. Kiểm tra policy → thiếu NAT → bật NAT.
2. Vẫn không được → kiểm tra srcintf sai (dùng port3 thay vì port3.10).
3. Vẫn không được → policy bị shadow bởi DENY_ALL ở trên.
👉 Quy trình debug: Policy → NAT → Interface → Thứ tự policy.
📅 Tuần 5/12 – FortiOS 7.6.6 Administration Lab
