HoaTran Logo
VIE | ENG

📘 Tuần 05 – Firewall Policy, NAT và Inspection

Tạo Firewall Policy cho phép/chặn traffic, cấu hình NAT cho phép mạng nội bộ ra Internet, hiểu sự khác nhau giữa Flow-based và Proxy-based inspection.

🗺️ 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ĩaVí dụ
srcintfCổng nguồn (từ đâu đến)port3.10 (VLAN10)
dstintfCổng đích (đến đâu)port2 (WAN/Internet)
srcaddrĐịa chỉ IP nguồnall (tất cả)
dstaddrĐịa chỉ IP đíchall (tất cả)
serviceDịch vụ/giao thứcHTTP, HTTPS, SSH
actionHành độngaccept (cho phép) / deny (chặn)
natBật/tắt NATenable / disable
logtrafficGhi log trafficall / 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-basedProxy-based
Tốc độNhanh hơnChậm hơn
Kiểm tra sâuÍt hơnSâu hơn (toàn bộ gói tin)
AntivirusCó (cơ bản)Có (đầy đủ hơn)
Web FilterCó (đầ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 performanceCầ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 all cho policy quan trọng.
  • ✅ Áp dụng Antivirus + Web Filter profile cho policy ra Internet.
  • ✅ Không dùng service ALL trừ 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

Z