Skip to content

OCN Firewall User Guide

Chào mừng bạn đến với OCN Firewall! Tài liệu này là cẩm nang toàn diện giúp bạn hiểu rõ và sử dụng hiệu quả hệ thống tường lửa phân tán OCN Firewall để bảo vệ hạ tầng máy chủ của mình. Dù bạn là người mới bắt đầu hay đã có kinh nghiệm quản trị hệ thống, hướng dẫn này sẽ cung cấp các bước chi tiết, giải thích khái niệm và các mẹo hữu ích.

Đối tượng sử dụng:

Tài liệu này được thiết kế cho:

  • Người dùng cuối cần quản lý và cấu hình tường lửa cho máy chủ.
  • Quản trị viên hệ thống chịu trách nhiệm vận hành và duy trì bảo mật mạng.
  • Bất kỳ ai muốn tìm hiểu cách hoạt động và sử dụng OCN Firewall thông qua giao diện dòng lệnh (CLI) hoặc giao diện web.

Những gì bạn cần:

  • Tài khoản truy cập vào hệ thống OCN Firewall.
  • Công cụ dòng lệnh ocnfwctl (nếu bạn sử dụng CLI) được cài đặt trên máy trạm của bạn.
  • Trình duyệt web hiện đại (nếu bạn sử dụng giao diện web).
  • Quyền truy cập cần thiết đến các máy chủ mà bạn muốn quản lý tường lửa.

Nội dung chính:

  1. Giới thiệu về OCN Firewall
  2. Các Khái niệm Cốt lõi
  3. Bắt đầu Nhanh
  4. Sử dụng Giao diện Dòng lệnh (ocnfwctl)
  5. Quản lý Vùng (Zone)
  6. Quản lý Chính sách (Policy)
  7. Quản lý Quy tắc (Rule) Chi tiết
  8. Sử dụng Giao diện Web
  9. Giám sát và Khắc phục sự cố
  10. Các Thực hành Tốt nhất

1. Giới thiệu về OCN Firewall

OCN Firewall là một hệ thống quản lý tường lửa mạnh mẽ và linh hoạt, được thiết kế để giúp bạn kiểm soát luồng lưu lượng mạng đến và đi từ các máy chủ trong hạ tầng của mình một cách tập trung và hiệu quả. Thay vì phải cấu hình tường lửa riêng lẻ trên từng máy chủ, OCN Firewall cho phép bạn định nghĩa các chính sách bảo mật từ một nơi duy nhất và tự động áp dụng chúng trên quy mô lớn.

Lợi ích chính:

  • Quản lý Tập trung: Định nghĩa và quản lý tất cả các quy tắc tường lửa từ một bảng điều khiển trung tâm (CLI hoặc Web UI).
  • Tự động hóa: Dễ dàng triển khai và cập nhật chính sách trên hàng trăm, hàng nghìn máy chủ một cách tự động.
  • Nhất quán: Đảm bảo các chính sách bảo mật được áp dụng đồng bộ và nhất quán trên toàn bộ hệ thống.
  • Linh hoạt: Sử dụng các khái niệm như Vùng (Zone) và Bộ chọn (Selector) để tạo ra các chính sách mạnh mẽ và dễ bảo trì.
  • Giám sát: Theo dõi trạng thái tường lửa, các kết nối mạng và xem nhật ký chi tiết để phân tích và xử lý sự cố.

2. Các Khái niệm Cốt lõi

Để sử dụng OCN Firewall hiệu quả, bạn cần nắm vững một số khái niệm cơ bản:

  • Máy chủ (Server): Là các máy ảo hoặc máy chủ vật lý cần được bảo vệ bởi tường lửa. Mỗi máy chủ trong OCN Firewall thường được định danh bằng IP, hostname và có thể được gán các nhãn (labels) để phân loại (ví dụ: app=web, env=production).
  • Nhãn (Label): Là các cặp khóa-giá trị (key-value) được gán cho máy chủ để phân loại và nhóm chúng (ví dụ: role=database, tier=backend).
  • Bộ chọn (Selector): Là một biểu thức logic sử dụng các nhãn để xác định một nhóm máy chủ cụ thể mà một chính sách sẽ áp dụng. Ví dụ: app=api AND env=production sẽ chọn tất cả máy chủ có cả hai nhãn này.
  • Vùng (Zone): Là một tập hợp các địa chỉ mạng được đặt tên (ví dụ: “internal-network”, “dmz”, “trusted-partners”). Vùng có thể chứa các dải địa chỉ IP (CIDR), địa chỉ IP đơn lẻ, hoặc tên miền. Sử dụng Vùng giúp đơn giản hóa việc định nghĩa nguồn và đích trong các quy tắc tường lửa.
  • Chính sách (Policy): Là thành phần trung tâm, chứa một tập hợp các quy tắc tường lửa (Ingress và Egress) cùng với một Bộ chọn (Selector) để xác định chính sách này áp dụng cho máy chủ nào. Chính sách cũng có thể có độ ưu tiên để xử lý trường hợp nhiều chính sách cùng áp dụng cho một máy chủ.
    • Quy tắc Vào (Ingress Rule): Xác định lưu lượng nào được phép (hoặc bị chặn) đi vào các máy chủ được chọn bởi chính sách.
    • Quy tắc Ra (Egress Rule): Xác định lưu lượng nào được phép (hoặc bị chặn) đi ra từ các máy chủ được chọn bởi chính sách.
  • Quy tắc (Rule): Là một chỉ thị cụ thể trong một Chính sách, xác định hành động (Allow/Deny/Log) đối với lưu lượng mạng dựa trên nguồn (source), đích (destination), giao thức (protocol) và cổng (port).
  • Độ ưu tiên (Priority): Một giá trị số gán cho Chính sách. Khi nhiều chính sách cùng áp dụng cho một máy chủ, chính sách có độ ưu tiên cao hơn (số nhỏ hơn) sẽ được ưu tiên áp dụng trước.
  • API Server (Firewalld): Thành phần trung tâm, nơi lưu trữ cấu hình, chính sách và xử lý các yêu cầu từ CLI hoặc Web UI. Bạn thường không tương tác trực tiếp với nó.
  • Agent (Firewall): Phần mềm chạy trên mỗi máy chủ được quản lý. Agent nhận chính sách từ API Server và áp dụng chúng vào hệ thống tường lửa của máy chủ đó (iptables/nftables).
  • CLI (ocnfwctl): Công cụ dòng lệnh chính để bạn tương tác với OCN Firewall: quản lý chính sách, vùng, xem trạng thái, v.v.
  • Giao diện Web (Web UI): Giao diện đồ họa trên trình duyệt, cung cấp một cách trực quan để thực hiện hầu hết các tác vụ quản lý.

3. Bắt đầu Nhanh

Phần này hướng dẫn các bước cơ bản để bạn bắt đầu làm việc với OCN Firewall bằng công cụ dòng lệnh ocnfwctl.

3.1. Yêu cầu chuẩn bị

  • Đảm bảo bạn đã được cấp tài khoản và biết địa chỉ của OCN Firewall API Server.
  • Máy trạm của bạn có kết nối mạng đến API Server.
  • (Tùy chọn, nếu chưa có) Cài đặt công cụ ocnfwctl.

3.2. Cài đặt CLI (ocnfwctl)

Nếu bạn chưa cài đặt ocnfwctl, hãy làm theo các bước sau (ví dụ cho Linux):

  1. Tải xuống:
    # Thay thế URL bằng liên kết tải xuống phù hợp với hệ điều hành của bạn
    curl -L https://git.ocn.com.vn/firewall/firewall/releases/latest/download/ocnfwctl-linux-amd64 -o ocnfwctl
    
  2. Cấp quyền thực thi:
    chmod +x ocnfwctl
    
  3. Di chuyển vào PATH (tùy chọn, để dễ sử dụng):
    sudo mv ocnfwctl /usr/local/bin/
    
  4. Kiểm tra cài đặt:
    ocnfwctl version
    
    Nếu lệnh hiển thị thông tin phiên bản, bạn đã cài đặt thành công.

3.3. Cấu hình Kết nối đến API Server

Cho ocnfwctl biết địa chỉ API Server cần kết nối:

# Thay thế URL bằng địa chỉ API Server thực tế của bạn
ocnfwctl config set-server http://firewall-api.example.com:8080

3.4. Đăng nhập

Sử dụng tên người dùng và mật khẩu được cấp để đăng nhập:

ocnfwctl login

Bạn sẽ được nhắc nhập tên người dùng và mật khẩu. Nếu có yêu cầu xác thực hai yếu tố (2FA), hãy nhập mã từ ứng dụng xác thực của bạn. Sau khi thành công, một token xác thực sẽ được lưu lại để bạn không cần đăng nhập lại cho các lệnh tiếp theo (cho đến khi token hết hạn).

3.5. Các lệnh khám phá cơ bản

Sau khi đăng nhập, hãy thử một vài lệnh để làm quen:

  • Kiểm tra trạng thái máy chủ quản lý:
    ocnfwctl server status
    
  • Liệt kê các máy chủ đang được quản lý:
    ocnfwctl server list
    
    • [Đề xuất chèn ảnh chụp màn hình ví dụ output của lệnh server list]
  • Liệt kê các chính sách hiện có:
    ocnfwctl policy list
    
  • Liệt kê các vùng đã định nghĩa:
    ocnfwctl zone list
    

3.6. Tạo Vùng (Zone) đầu tiên

Vùng giúp nhóm các địa chỉ mạng lại. Hãy tạo một vùng cho mạng nội bộ tin cậy:

ocnfwctl zone create \
  --name internal-trusted \
  --description "Mạng nội bộ tin cậy (Văn phòng, VPN)" \
  --cidr "192.168.1.0/24,10.10.0.0/16" \
  --ip "172.16.5.10"

Lệnh này tạo một vùng tên internal-trusted chứa hai dải mạng CIDR và một địa chỉ IP cụ thể.

3.7. Tạo Chính sách (Policy) đầu tiên

Giả sử bạn có các máy chủ web với nhãn app=web. Hãy tạo chính sách cho phép truy cập HTTP/HTTPS từ vùng internal-trusted vừa tạo và cho phép máy chủ web kết nối ra ngoài đến bất kỳ đâu trên cổng 53 (DNS):

ocnfwctl policy create \
  --name web-basic-access \
  --description "Cho phép truy cập web cơ bản từ mạng nội bộ" \
  --selector "app=web" \
  --ingress-allow "tcp:80,tcp:443" \
  --ingress-from-zones internal-trusted \
  --egress-allow "udp:53,tcp:53" \
  --egress-to-zones internet
  • --name: Tên định danh cho chính sách.
  • --description: Mô tả mục đích.
  • --selector "app=web": Áp dụng chính sách này cho tất cả máy chủ có nhãn app=web.
  • --ingress-allow "tcp:80,tcp:443": Cho phép lưu lượng vào trên cổng TCP 80 và 443.
  • --ingress-from-zones internal-trusted: Chỉ cho phép lưu lượng vào từ các địa chỉ thuộc vùng internal-trusted.
  • --egress-allow "udp:53,tcp:53": Cho phép lưu lượng ra trên cổng UDP 53 và TCP 53.
  • --egress-to-zones internet: Cho phép lưu lượng ra này đi đến vùng internet (vùng mặc định đại diện cho mọi địa chỉ IP công cộng).

Chúc mừng! Bạn đã thực hiện các bước cơ bản để tương tác với OCN Firewall. Hãy tiếp tục khám phá các phần sau để tìm hiểu sâu hơn.


4. Sử dụng Giao diện Dòng lệnh (ocnfwctl)

ocnfwctl là công cụ chính để bạn quản lý OCN Firewall từ terminal. Hầu hết các lệnh tuân theo cấu trúc:

ocnfwctl <DANH_TỪ> <ĐỘNG_TỪ> [TÙY_CHỌN]
  • DANH TỪ (Noun): Đối tượng bạn muốn thao tác (ví dụ: policy, zone, server, rule).
  • ĐỘNG TỪ (Verb): Hành động bạn muốn thực hiện (ví dụ: list, create, get, update, delete, add-cidr, remove-ip).
  • TÙY CHỌN (Options/Flags): Các tham số bổ sung để chỉ định chi tiết (ví dụ: --name, --selector, --cidr, --port, --confirm).

Một số mẹo hữu ích:

  • Sử dụng ocnfwctl <DANH_TỪ> --help hoặc ocnfwctl <DANH_TỪ> <ĐỘNG_TỪ> --help để xem hướng dẫn chi tiết cho từng lệnh.
  • Hầu hết các lệnh delete yêu cầu xác nhận. Bạn có thể bỏ qua bước xác nhận bằng cách thêm cờ --confirm.
  • Nhiều lệnh list hỗ trợ lọc bằng cờ --name hoặc các cờ khác.
  • Các lệnh get thường yêu cầu --name hoặc --id để chỉ định đối tượng cụ thể.

Các phần tiếp theo sẽ đi sâu vào cách sử dụng ocnfwctl để quản lý từng loại đối tượng.


5. Quản lý Vùng (Zone)

Vùng (Zone) là cách để bạn nhóm các địa chỉ mạng (IP, CIDR, tên miền) lại với nhau và đặt cho chúng một cái tên dễ nhớ. Điều này giúp việc viết chính sách trở nên đơn giản và dễ bảo trì hơn rất nhiều.

5.1. Liệt kê Vùng

  • Xem tất cả các vùng:
    ocnfwctl zone list
    
  • Lọc theo tên (hỗ trợ wildcard *):
    ocnfwctl zone list --name "internal*"
    
  • Xem thông tin chi tiết của một vùng:
    ocnfwctl zone get --name trusted-network
    
    Lệnh get sẽ hiển thị mô tả, danh sách CIDR, IP và tên miền thuộc vùng đó.
    • [Đề xuất chèn ảnh chụp màn hình ví dụ output của lệnh zone get]

5.2. Tạo Vùng mới

Sử dụng lệnh ocnfwctl zone create với các tùy chọn:

  • --name: Tên định danh duy nhất cho vùng (bắt buộc).
  • --description: Mô tả mục đích của vùng (khuyến nghị).
  • --cidr: Danh sách các dải mạng CIDR, cách nhau bởi dấu phẩy (ví dụ: 10.0.0.0/16,10.1.0.0/16).
  • --ip: Danh sách các địa chỉ IP đơn lẻ, cách nhau bởi dấu phẩy (ví dụ: 192.168.1.10,192.168.1.11).
  • --domain: Danh sách các tên miền, cách nhau bởi dấu phẩy (ví dụ: example.internal,service.internal). OCN Firewall sẽ tự động phân giải các tên miền này thành địa chỉ IP (lưu ý: việc phân giải có thể cần thời gian và phụ thuộc vào cấu hình DNS).

Ví dụ: Tạo vùng cho các dịch vụ nội bộ quan trọng.

ocnfwctl zone create \
  --name core-services \
  --description "Các dịch vụ nội bộ cốt lõi (LDAP, DNS nội bộ)" \
  --cidr "10.5.0.0/24" \
  --ip "10.5.1.5,10.5.1.6" \
  --domain "ldap.mycorp.local,dns.mycorp.local"

5.3. Cập nhật Vùng

Bạn có thể cập nhật mô tả hoặc thay thế hoàn toàn danh sách CIDR/IP/Domain bằng lệnh ocnfwctl zone update.

ocnfwctl zone update \
  --name core-services \
  --description "Các dịch vụ nội bộ cốt lõi (LDAP, DNS, NTP)" \
  --ip "10.5.1.5,10.5.1.6,10.5.1.7" # Thay thế danh sách IP cũ
Lưu ý: Lệnh update sẽ ghi đè lên danh sách cũ của tham số được chỉ định. Nếu bạn chỉ muốn thêm hoặc bớt thành phần, hãy sử dụng các lệnh add-*remove-* dưới đây.

5.4. Thêm/Xóa thành phần vào Vùng

Cách linh hoạt hơn để quản lý thành viên của vùng là sử dụng các lệnh add-*remove-*:

  • Thêm CIDR:
    ocnfwctl zone add-cidr --name core-services --cidr "10.5.2.0/24"
    
  • Xóa CIDR:
    ocnfwctl zone remove-cidr --name core-services --cidr "10.5.2.0/24"
    
  • Thêm IP:
    ocnfwctl zone add-ip --name core-services --ip "10.5.1.8"
    
  • Xóa IP:
    ocnfwctl zone remove-ip --name core-services --ip "10.5.1.8"
    
  • Thêm Domain:
    ocnfwctl zone add-domain --name core-services --domain "ntp.mycorp.local"
    
  • Xóa Domain:
    ocnfwctl zone remove-domain --name core-services --domain "ntp.mycorp.local"
    

5.5. Xóa Vùng

ocnfwctl zone delete --name core-services
Hoặc xóa không cần xác nhận:
ocnfwctl zone delete --name core-services --confirm
Quan trọng: Bạn không thể xóa một vùng nếu nó đang được sử dụng trong bất kỳ chính sách nào. Bạn cần phải xóa hoặc cập nhật các chính sách đó trước.

5.6. Kiểm tra Thành viên Vùng

Kiểm tra xem một địa chỉ IP hoặc tên miền cụ thể thuộc về những vùng nào:

ocnfwctl zone check-membership --ip 10.5.0.15
ocnfwctl zone check-membership --domain ldap.mycorp.local

5.7. Tìm Chính sách sử dụng Vùng

Để biết việc thay đổi hoặc xóa một vùng sẽ ảnh hưởng đến những chính sách nào:

ocnfwctl zone policies --name core-services

5.8. Xuất và Nhập Vùng

Bạn có thể quản lý Vùng dưới dạng mã (Infrastructure as Code) bằng cách xuất/nhập định dạng YAML.

  • Xuất một vùng ra file YAML:
    ocnfwctl zone export --name core-services > core-services-zone.yaml
    
  • Nhập (tạo hoặc cập nhật) vùng từ file YAML:
    ocnfwctl zone import --file core-services-zone.yaml
    # Hoặc dùng lệnh apply tổng quát hơn
    ocnfwctl apply -f core-services-zone.yaml
    
  • Nhập tất cả các file YAML trong một thư mục:
    ocnfwctl zone import-dir --directory ./my-zones/
    # Hoặc
    ocnfwctl apply -f ./my-zones/
    

Ví dụ file core-services-zone.yaml:

apiVersion: ocnfw/v1
kind: Zone
metadata:
  name: core-services
spec:
  description: "Các dịch vụ nội bộ cốt lõi (LDAP, DNS, NTP)"
  cidrs:
    - 10.5.0.0/24
  ips:
    - 10.5.1.5
    - 10.5.1.6
    - 10.5.1.7
  domains:
    - ldap.mycorp.local
    - dns.mycorp.local

5.9. Các Vùng Mặc định

OCN Firewall có sẵn một số vùng tiện ích:

  • internet: Đại diện cho mọi địa chỉ IP công cộng (không bao gồm các dải IP riêng).
  • private: Đại diện cho các dải IP riêng theo RFC1918 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16).
  • localhost: Đại diện cho địa chỉ loopback (127.0.0.0/8, ::1/128).
  • any hoặc * (thường dùng trong chính sách): Đại diện cho tất cả các địa chỉ IP.

Bạn không thể sửa đổi hay xóa các vùng này, nhưng có thể sử dụng chúng trong chính sách.


6. Quản lý Chính sách (Policy)

Chính sách (Policy) là trái tim của OCN Firewall. Chúng liên kết các quy tắc tường lửa (ai được phép/bị chặn làm gì) với các nhóm máy chủ cụ thể (thông qua Selector).

6.1. Thành phần của một Chính sách

  • Tên (Name): Định danh duy nhất.
  • Mô tả (Description): Giải thích mục đích.
  • Bộ chọn (Selector): Biểu thức logic chọn máy chủ áp dụng (ví dụ: role=database, app=api AND env=production). Selector * hoặc để trống sẽ áp dụng cho tất cả máy chủ.
  • Quy tắc Vào (Ingress Rules): Danh sách các quy tắc kiểm soát lưu lượng đi vào máy chủ.
  • Quy tắc Ra (Egress Rules): Danh sách các quy tắc kiểm soát lưu lượng đi ra từ máy chủ.
  • Độ ưu tiên (Priority): Số nguyên xác định thứ tự áp dụng khi có xung đột (số nhỏ hơn = ưu tiên cao hơn). Mặc định thường là 1000.

6.2. Liệt kê Chính sách

  • Xem tất cả chính sách:
    ocnfwctl policy list
    
  • Lọc theo tên:
    ocnfwctl policy list --name "web*"
    
  • Xem chi tiết một chính sách (bao gồm các quy tắc):
    ocnfwctl policy get --name web-server-policy
    
    • [Đề xuất chèn ảnh chụp màn hình ví dụ output của lệnh policy get]

6.3. Tạo Chính sách mới

Sử dụng lệnh ocnfwctl policy create. Các tùy chọn quan trọng:

  • --name, --description, --selector, --priority: Như mô tả ở trên.
  • Định nghĩa quy tắc Ingress:
    • --ingress-allow <PROTO:PORT,...>: Cho phép lưu lượng vào trên các cổng/giao thức chỉ định.
    • --ingress-deny <PROTO:PORT,...>: Chặn lưu lượng vào.
    • --ingress-from-zones <ZONE_NAME,...>: Chỉ áp dụng quy tắc ingress này cho lưu lượng từ các vùng chỉ định. Mặc định là any.
    • --ingress-from-cidrs <CIDR,...>: Chỉ áp dụng cho lưu lượng từ các CIDR chỉ định.
    • --ingress-from-ips <IP,...>: Chỉ áp dụng cho lưu lượng từ các IP chỉ định.
  • Định nghĩa quy tắc Egress:
    • --egress-allow <PROTO:PORT,...>: Cho phép lưu lượng ra.
    • --egress-deny <PROTO:PORT,...>: Chặn lưu lượng ra.
    • --egress-to-zones <ZONE_NAME,...>: Chỉ áp dụng quy tắc egress này cho lưu lượng đến các vùng chỉ định. Mặc định là any.
    • --egress-to-cidrs <CIDR,...>: Chỉ áp dụng cho lưu lượng đến các CIDR chỉ định.
    • --egress-to-ips <IP,...>: Chỉ áp dụng cho lưu lượng đến các IP chỉ định.

Định dạng <PROTO:PORT,...>:

  • tcp:80: Cổng TCP 80.
  • udp:53: Cổng UDP 53.
  • tcp:80,tcp:443: Cổng TCP 80 và 443.
  • tcp:1000-2000: Dải cổng TCP từ 1000 đến 2000.
  • tcp:*: Tất cả các cổng TCP.
  • icmp: Giao thức ICMP.
  • any hoặc *: Bất kỳ giao thức và cổng nào (thường dùng với tcp:*,udp:*).

Ví dụ 1: Chính sách cơ bản cho máy chủ Database (Chỉ cho phép kết nối MySQL/PostgreSQL từ vùng app-servers, cho phép ra DNS)

ocnfwctl policy create \
  --name db-access-policy \
  --description "Cho phép truy cập DB từ App Servers" \
  --selector "role=database" \
  --ingress-allow "tcp:3306,tcp:5432" \
  --ingress-from-zones app-servers \
  --egress-allow "tcp:53,udp:53" \
  --egress-to-zones dns-servers \
  --egress-deny "tcp:*,udp:*" \
  --egress-to-zones internet # Chặn ra internet trừ DNS đã allow ở trên

Ví dụ 2: Chính sách phức tạp hơn cho API Server (Cho phép API ports từ trusted, monitoring port từ monitoring, chặn từ untrusted, cho phép ra trusted, chặn ra untrusted)

ocnfwctl policy create \
  --name api-server-policy \
  --description "Chính sách tường lửa cho máy chủ API" \
  --selector "app=api" \
  --ingress-allow "tcp:8080,tcp:8443" --ingress-from-zones trusted-networks \
  --ingress-allow "tcp:9090" --ingress-from-zones monitoring \
  --ingress-deny "tcp:*,udp:*" --ingress-from-zones untrusted \
  --egress-allow "tcp:*,udp:*" --egress-to-zones trusted-networks \
  --egress-deny "tcp:*,udp:*" --egress-to-zones untrusted
Lưu ý: Bạn có thể lặp lại các cờ --ingress-allow, --ingress-deny, --egress-allow, --egress-deny để tạo nhiều quy tắc với các nguồn/đích khác nhau trong cùng một chính sách. Thứ tự các quy tắc này trong lệnh có thể quan trọng (kiểm tra tài liệu OCN Firewall cụ thể về thứ tự ưu tiên nội bộ chính sách).

Ví dụ 3: Chính sách chặn khẩn cấp với độ ưu tiên cao (Chặn mọi truy cập từ internet vào môi trường production)

ocnfwctl policy create \
  --name emergency-block-internet \
  --description "Chặn khẩn cấp mọi truy cập từ Internet vào Production" \
  --selector "env=production" \
  --priority 100 \
  --ingress-deny "tcp:*,udp:*" \
  --ingress-from-zones internet
Chính sách này với priority=100 (ưu tiên cao) sẽ ghi đè các quy tắc allow từ internet có độ ưu tiên thấp hơn (ví dụ: 1000).

6.4. Cập nhật Chính sách

Sử dụng ocnfwctl policy update. Lệnh này chỉ thay đổi các tham số bạn chỉ định, các tham số khác giữ nguyên.

# Cập nhật chính sách web-server-policy để cho phép thêm cổng 8080 từ trusted và monitoring
ocnfwctl policy update \
  --name web-server-policy \
  --ingress-allow "tcp:80,tcp:443,tcp:8080" \
  --ingress-from-zones trusted-networks,monitoring
Quan trọng: Khi cập nhật các quy tắc (--ingress-allow, --egress-deny, v.v.), lệnh update thường thay thế toàn bộ danh sách quy tắc cho loại hành động đó (allow/deny) và hướng đó (ingress/egress) bằng giá trị mới bạn cung cấp. Nó không chỉ thêm vào danh sách cũ. Hãy cẩn thận và đảm bảo bạn cung cấp đầy đủ danh sách quy tắc mong muốn khi cập nhật. Nếu bạn chỉ muốn sửa đổi nhỏ, việc sử dụng quản lý quy tắc chi tiết (xem phần 7) hoặc xuất ra YAML, sửa đổi rồi nhập lại có thể an toàn hơn.

6.5. Xóa Chính sách

ocnfwctl policy delete --name web-server-policy
Hoặc xóa không cần xác nhận:
ocnfwctl policy delete --name web-server-policy --confirm

6.6. Kiểm tra Chính sách áp dụng cho Máy chủ

Xem những chính sách nào đang thực sự ảnh hưởng đến một máy chủ cụ thể hoặc một nhóm máy chủ:

  • Theo ID máy chủ:
    ocnfwctl server policies --id server-abc-123
    
  • Theo Selector:
    ocnfwctl server policies --selector "app=web AND env=staging"
    

6.7. Xử lý Xung đột và Thứ tự áp dụng

Khi nhiều chính sách cùng áp dụng cho một máy chủ (do selector trùng khớp), OCN Firewall sẽ quyết định chính sách nào có hiệu lực dựa trên quy tắc sau:

  1. Độ ưu tiên (Priority): Chính sách có giá trị priority nhỏ hơn sẽ được ưu tiên áp dụng trước.
  2. Quy tắc Chặn (Deny) ưu tiên hơn Cho phép (Allow): Nếu một chính sách ưu tiên cao hơn nói deny một kết nối, thì kết nối đó sẽ bị chặn ngay cả khi một chính sách khác có độ ưu tiên thấp hơn nói allow.
  3. Quy tắc Cụ thể hơn ưu tiên hơn Quy tắc Chung: (Điều này thường áp dụng bên trong một chính sách hoặc khi các chính sách có cùng độ ưu tiên). Ví dụ, quy tắc cho tcp:80 sẽ được ưu tiên hơn quy tắc cho tcp:*. Quy tắc từ một CIDR /24 cụ thể sẽ ưu tiên hơn quy tắc từ CIDR /16 bao trùm nó.

Để xem thứ tự các chính sách sẽ được đánh giá cho một máy chủ cụ thể:

ocnfwctl server policy-order --id server-abc-123

6.8. Xuất và Nhập Chính sách (Policy as Code)

Tương tự như Vùng, bạn có thể quản lý Chính sách dưới dạng file YAML.

  • Xuất chính sách:
    ocnfwctl policy export --name web-server-policy > web-policy.yaml
    
  • Nhập chính sách:
    ocnfwctl policy import --file web-policy.yaml
    # Hoặc
    ocnfwctl apply -f web-policy.yaml
    
  • Nhập nhiều chính sách từ thư mục:
    ocnfwctl policy import-dir --directory ./policies/
    # Hoặc
    ocnfwctl apply -f ./policies/
    

Ví dụ file web-policy.yaml:

apiVersion: ocnfw/v1
kind: Policy
metadata:
  name: web-server-policy
spec:
  description: "Chính sách tường lửa cho máy chủ web"
  selector: "role=web"
  priority: 500 # Độ ưu tiên trung bình
  ingress:
    # Cho phép HTTP/HTTPS từ internet
    - action: allow
      ports:
        - protocol: tcp
          port: 80
        - protocol: tcp
          port: 443
      fromZones:
        - internet
    # Cho phép SSH từ mạng quản lý
    - action: allow
      ports:
        - protocol: tcp
          port: 22
      fromZones:
        - management-zone
  egress:
    # Cho phép kết nối ra DB và DNS
    - action: allow
      ports:
        - protocol: tcp
          port: 3306
      toZones:
        - database-zone
    - action: allow
      ports:
        - protocol: tcp
          port: 53
        - protocol: udp
          port: 53
      toZones:
        - dns-zone
    # Chặn tất cả các kết nối ra khác
    - action: deny
      ports:
        - protocol: tcp
          port: "*"
        - protocol: udp
          port: "*"
      toZones:
        - any # Hoặc "*"
Định dạng YAML này cung cấp cấu trúc rõ ràng hơn để định nghĩa nhiều quy tắc phức tạp.

6.9. Kiểm tra Hiệu quả Chính sách (Mô phỏng Kết nối)

Trước hoặc sau khi áp dụng chính sách, bạn có thể mô phỏng một kết nối để xem liệu nó có được phép hay bị chặn theo các chính sách hiện hành hay không:

ocnfwctl policy test-connection \
  --source 1.2.3.4 \
  --destination 10.0.1.10 \
  --port 443 \
  --protocol tcp
Lệnh này sẽ cho bạn biết kết quả (ALLOW hoặc DENY) và chính sách/quy tắc nào đã quyết định kết quả đó. Đây là công cụ cực kỳ hữu ích để kiểm tra và gỡ lỗi.


7. Quản lý Quy tắc (Rule) Chi tiết

Trong khi bạn có thể định nghĩa các quy tắc cơ bản khi tạo hoặc cập nhật chính sách bằng các cờ như --ingress-allow, OCN Firewall cũng cung cấp các lệnh ocnfwctl rule để quản lý các quy tắc một cách chi tiết hơn, đặc biệt là khi bạn cần sửa đổi hoặc sắp xếp lại các quy tắc trong một chính sách hiện có mà không muốn định nghĩa lại toàn bộ chính sách.

Lưu ý: Việc sử dụng lệnh ocnfwctl rule thường yêu cầu bạn biết ID của chính sách chứa quy tắc đó. Bạn có thể lấy ID này bằng lệnh ocnfwctl policy list hoặc ocnfwctl policy get.

7.1. Liệt kê Quy tắc trong một Chính sách

# Lấy ID của chính sách trước (ví dụ: p-abcdef123)
ocnfwctl policy get --name web-server-policy --output jsonpath='{.metadata.id}'

# Liệt kê các quy tắc trong chính sách đó
ocnfwctl rule list --policy-id p-abcdef123
* [Đề xuất chèn ảnh chụp màn hình ví dụ output của lệnh rule list]

Bạn cũng có thể lọc theo trạng thái (--state active/disabled) hoặc các tiêu chí khác.

7.2. Xem chi tiết một Quy tắc

Mỗi quy tắc cũng có ID riêng (ví dụ: r-xyz789).

ocnfwctl rule show --rule-id r-xyz789

7.3. Tạo Quy tắc mới vào Chính sách hiện có

ocnfwctl rule create \
  --policy-id p-abcdef123 \
  --direction ingress \
  --action allow \
  --source-zones trusted-partners \
  --protocol tcp \
  --ports 9999 \
  --description "Cho phép cổng đặc biệt từ đối tác"
Các tùy chọn tương tự như khi định nghĩa quy tắc trong policy create, nhưng bạn cần chỉ định --policy-id--direction (ingress/egress).

7.4. Cập nhật Quy tắc

Bạn có thể thay đổi các thuộc tính của một quy tắc hiện có.

# Thay đổi cổng và mô tả của quy tắc
ocnfwctl rule update \
  --rule-id r-xyz789 \
  --ports 9998 \
  --description "Đổi cổng đặc biệt từ đối tác"

# Vô hiệu hóa (disable) một quy tắc thay vì xóa
ocnfwctl rule update --rule-id r-xyz789 --state disabled

7.5. Sắp xếp Thứ tự Quy tắc

Thứ tự các quy tắc bên trong một chính sách rất quan trọng, vì OCN Firewall thường xử lý chúng từ trên xuống dưới (quy tắc đầu tiên khớp sẽ được áp dụng).

  • Di chuyển quy tắc lên trên:
    ocnfwctl rule move --rule-id r-xyz789 --position up
    
  • Di chuyển quy tắc xuống dưới:
    ocnfwctl rule move --rule-id r-xyz789 --position down
    
  • Di chuyển đến vị trí cụ thể (ví dụ: vị trí số 1 - đầu tiên):
    ocnfwctl rule move --rule-id r-xyz789 --position 1
    

7.6. Xóa Quy tắc

ocnfwctl rule delete --rule-id r-xyz789
Hoặc xóa nhiều quy tắc:
ocnfwctl rule delete --rule-id r-xyz789 r-abc123 r-def456 --confirm

7.7. Kiểm tra Quy tắc (Rule Tester)

Tương tự như policy test-connection, nhưng có thể tập trung vào việc kiểm tra trong phạm vi một chính sách cụ thể.

ocnfwctl rule test \
  --policy-id p-abcdef123 \
  --source 1.2.3.4 \
  --destination 10.0.1.10 \
  --protocol tcp \
  --port 80
Lệnh này sẽ cho biết quy tắc nào trong chính sách p-abcdef123 sẽ khớp với kết nối mô phỏng và hành động tương ứng.

7.8. Xuất/Nhập Quy tắc (Ít phổ biến hơn)

Việc xuất/nhập toàn bộ chính sách (bao gồm các quy tắc của nó) thường phổ biến hơn. Tuy nhiên, nếu cần, bạn có thể xuất/nhập danh sách quy tắc cho một chính sách cụ thể.

  • Xuất quy tắc của một chính sách:
    ocnfwctl rule export --policy-id p-abcdef123 --output rules-for-policy-abc.yaml
    
  • Nhập quy tắc vào một chính sách (thường sẽ thay thế các quy tắc hiện có):
    ocnfwctl rule import --policy-id p-abcdef123 --input rules-for-policy-abc.yaml
    

8. Sử dụng Giao diện Web

Ngoài CLI, OCN Firewall cung cấp một giao diện web trực quan để bạn thực hiện hầu hết các tác vụ quản lý.

8.1. Truy cập và Đăng nhập

  1. Mở trình duyệt và truy cập vào địa chỉ URL của giao diện web OCN Firewall (ví dụ: https://firewall.mycompany.com/).
  2. Nhập tên người dùng và mật khẩu của bạn.
  3. Nếu được yêu cầu, nhập mã xác thực hai yếu tố (2FA).
  4. Nhấn nút “Đăng nhập”.

  5. [Đề xuất chèn ảnh chụp màn hình giao diện đăng nhập Web UI]

8.2. Tổng quan Giao diện (Dashboard)

Sau khi đăng nhập, trang tổng quan (Dashboard) thường hiển thị các thông tin chính:

  • Biểu đồ lưu lượng mạng, số lượng kết nối.
  • Trạng thái các máy chủ (Servers).
  • Số lượng chính sách (Policies) và vùng (Zones) đang hoạt động.
  • Các cảnh báo hoặc sự kiện gần đây.
  • Các hoạt động quản trị mới nhất.

  • [Đề xuất chèn ảnh chụp màn hình Dashboard Web UI]

8.3. Điều hướng

Sử dụng thanh điều hướng bên trái (hoặc menu trên cùng) để truy cập các khu vực quản lý chính:

  • Máy chủ (Servers)
  • Chính sách (Policies)
  • Vùng (Zones)
  • Quy tắc (Rules) (Thường được quản lý trong ngữ cảnh của Chính sách)
  • Kết nối (Connections)
  • Nhật ký (Logs)
  • Cài đặt (Settings)

8.4. Quản lý Máy chủ (Servers)

  • Xem danh sách: Xem tên, IP, trạng thái, nhãn (labels) của các máy chủ.
  • Lọc và Tìm kiếm: Tìm kiếm theo tên, IP, hoặc lọc theo nhãn bằng cách nhập selector.
  • Xem chi tiết: Nhấp vào một máy chủ để xem thông tin chi tiết, các chính sách đang áp dụng, kết nối hiện tại.
  • Thêm/Sửa/Xóa: (Nếu có quyền) Thêm máy chủ mới, chỉnh sửa thông tin (như nhãn), hoặc xóa máy chủ khỏi quản lý.

  • [Đề xuất chèn ảnh chụp màn hình trang quản lý Servers Web UI]

8.5. Quản lý Vùng (Zones)

  • Xem danh sách: Xem tên, mô tả, số lượng thành viên (CIDR/IP/Domain).
  • Xem chi tiết: Nhấp vào một vùng để xem danh sách thành viên cụ thể và các chính sách đang sử dụng vùng này.
  • Tạo/Sửa/Xóa: Giao diện trực quan để tạo vùng mới, thêm/bớt CIDR, IP, tên miền, hoặc xóa vùng.
  • Kiểm tra thành viên: Công cụ để nhập IP/Domain và xem nó thuộc vùng nào.

  • [Đề xuất chèn ảnh chụp màn hình trang quản lý Zones Web UI]

8.6. Quản lý Chính sách (Policies)

  • Xem danh sách: Xem tên, selector, độ ưu tiên, trạng thái (active/disabled).
  • Xem chi tiết: Nhấp vào chính sách để xem mô tả, selector, và quan trọng nhất là danh sách các quy tắc Ingress và Egress.
  • Tạo chính sách: Giao diện form trực quan để nhập tên, mô tả, selector, độ ưu tiên.
    • Thêm quy tắc: Có các nút “Thêm quy tắc Ingress”, “Thêm quy tắc Egress”. Mỗi quy tắc sẽ có các trường để chọn Hành động (Allow/Deny), Nguồn/Đích (chọn từ Vùng, nhập CIDR/IP), Giao thức, Cổng.
  • Chỉnh sửa chính sách: Chỉnh sửa thông tin cơ bản hoặc thêm/sửa/xóa các quy tắc bên trong.
  • Kích hoạt/Vô hiệu hóa: Nút bật/tắt nhanh để tạm dừng áp dụng chính sách.
  • Thay đổi thứ tự quy tắc: Trong trang chi tiết chính sách, bạn thường có thể kéo thả hoặc dùng nút mũi tên để thay đổi thứ tự các quy tắc Ingress/Egress. Nhớ lưu lại thay đổi thứ tự.

  • [Đề xuất chèn ảnh chụp màn hình trang tạo/sửa Policy Web UI, bao gồm phần quản lý Rules]

  • [Đề xuất chèn ảnh chụp màn hình tính năng sắp xếp Rules trong Web UI]

8.7. Giám sát Kết nối (Connections)

  • Xem danh sách các kết nối mạng đang hoạt động hoặc vừa kết thúc đi qua các máy chủ được quản lý.
  • Thông tin bao gồm: Nguồn IP:Port, Đích IP:Port, Giao thức, Trạng thái (Established, Closing, Denied), Máy chủ liên quan, Chính sách/Quy tắc đã áp dụng.
  • Công cụ lọc mạnh mẽ theo thời gian, máy chủ, IP, cổng, trạng thái, hành động (Allowed/Denied).
  • Thường có biểu đồ phân tích lưu lượng và kết nối.

  • [Đề xuất chèn ảnh chụp màn hình trang giám sát Connections Web UI]

8.8. Xem Nhật ký (Logs)

  • Truy cập các loại nhật ký khác nhau:
    • Nhật ký Tường lửa (Firewall Logs): Ghi lại các kết nối bị chặn hoặc được phép (nếu cấu hình ghi log). Rất quan trọng để gỡ lỗi.
    • Nhật ký Hệ thống (System Logs): Nhật ký hoạt động của API Server, Agents.
    • Nhật ký Thay đổi (Audit Logs): Ghi lại ai đã làm gì, khi nào (ví dụ: tạo chính sách, sửa vùng).
  • Công cụ lọc và tìm kiếm mạnh mẽ theo thời gian, mức độ nghiêm trọng, từ khóa, máy chủ.
  • Khả năng xuất nhật ký ra file (CSV, JSON).

  • [Đề xuất chèn ảnh chụp màn hình trang xem Logs Web UI]

8.9. Cài đặt (Settings)

  • Thông tin tài khoản: Đổi mật khẩu, quản lý xác thực hai yếu tố.
  • Quản lý người dùng/nhóm: (Nếu là admin) Tạo/quản lý tài khoản người dùng, phân quyền.
  • Cài đặt hệ thống: Cấu hình thông báo, tích hợp (ví dụ: SMTP, Syslog), quản lý API token.
  • API Explorer: Giao diện để khám phá và thử nghiệm các API của OCN Firewall.

9. Giám sát và Khắc phục sự cố

Khi có vấn đề về kết nối mạng, OCN Firewall cung cấp nhiều công cụ để bạn chẩn đoán.

9.1. Kiểm tra Chính sách đang áp dụng

Bước đầu tiên khi một kết nối mong muốn bị chặn (hoặc kết nối không mong muốn được phép) là xem chính sách nào đang thực sự áp dụng cho máy chủ liên quan.

# Xem chính sách áp dụng cho máy chủ có ID server-123
ocnfwctl server policies --id server-123

# Xem thứ tự các chính sách sẽ được đánh giá
ocnfwctl server policy-order --id server-123
Trên Web UI, vào trang chi tiết Máy chủ để xem danh sách chính sách áp dụng.

9.2. Mô phỏng và Gỡ lỗi Kết nối (CLI)

Đây là công cụ mạnh nhất để hiểu tại sao một kết nối cụ thể lại bị chặn hoặc được phép.

  • Kiểm tra nhanh (Kết quả Allow/Deny):
    ocnfwctl policy test-connection \
      --source <IP_NGUỒN> \
      --destination <IP_ĐÍCH> \
      --port <CỔNG_ĐÍCH> \
      --protocol <tcp|udp|icmp>
    
  • Gỡ lỗi chi tiết (Xem quy tắc nào khớp):
    ocnfwctl policy debug-connection \
      --source <IP_NGUỒN> \
      --destination <IP_ĐÍCH> \
      --port <CỔNG_ĐÍCH> \
      --protocol <tcp|udp|icmp> \
      --verbose # Thêm cờ này để có output chi tiết hơn
    
    Lệnh debug-connection sẽ chỉ ra chính xác chính sách và quy tắc nào (cả allow và deny) đã được đánh giá và quy tắc nào là quy tắc cuối cùng quyết định kết quả.

9.3. Xem Nhật ký Tường lửa (Firewall Logs)

Nếu một kết nối bị chặn, nhật ký tường lửa (thường là từ Agent trên máy chủ đích) sẽ ghi lại thông tin chi tiết về kết nối đó (IP nguồn/đích, port, protocol) và thường là lý do bị chặn (ví dụ: “Denied by policy X, rule Y”).

Truy cập nhật ký qua Web UI (mục Logs -> Firewall Logs) hoặc kiểm tra file log trực tiếp trên máy chủ Agent (vị trí file log phụ thuộc vào cấu hình). Lọc nhật ký theo IP nguồn hoặc đích để tìm dòng log liên quan.

9.4. Xem Kết nối Hiện tại

Kiểm tra xem kết nối có thực sự được thiết lập hay không.

ocnfwctl connections list --selector "app=web" --filter "dst_port=80"
Trên Web UI, vào mục “Connections” và sử dụng bộ lọc.

9.5. Các Vấn đề Thường gặp

  • Kết nối bị chặn ngoài ý muốn:
    1. Sử dụng policy debug-connection để xác định quy tắc deny nào đang chặn.
    2. Kiểm tra thứ tự ưu tiên (priority) của các chính sách. Một chính sách deny có ưu tiên cao hơn có thể đang ghi đè.
    3. Kiểm tra định nghĩa Vùng (Zone). Có thể IP nguồn/đích không thuộc vùng bạn mong đợi. Dùng zone check-membership.
    4. Kiểm tra thứ tự quy tắc bên trong chính sách (nếu quản lý bằng ocnfwctl rule hoặc Web UI).
  • Kết nối được phép ngoài ý muốn:
    1. Sử dụng policy debug-connection để xác định quy tắc allow nào đang cho phép.
    2. Kiểm tra xem có thiếu quy tắc deny cụ thể hơn hoặc quy tắc deny all mặc định ở cuối không.
    3. Kiểm tra độ ưu tiên. Có thể một chính sách allow có ưu tiên cao đang ghi đè quy tắc deny mong muốn.
  • Chính sách không áp dụng cho máy chủ:
    1. Kiểm tra lại selector của chính sách.
    2. Kiểm tra các label được gán cho máy chủ (ocnfwctl server get --id <server_id>). Đảm bảo chúng khớp với selector.
    3. Kiểm tra trạng thái của Agent trên máy chủ (ocnfwctl server status --id <server_id>). Agent phải đang hoạt động và kết nối được với API Server.
  • Vấn đề với Vùng dựa trên Tên miền:
    1. Kiểm tra xem Agent/API Server có phân giải được tên miền đó không (ocnfwctl diagnose dns --domain ...).
    2. Kiểm tra cấu hình DNS của hệ thống.
    3. Lưu ý rằng IP được phân giải từ tên miền có thể thay đổi và có độ trễ trong việc cập nhật.

10. Các Thực hành Tốt nhất

Để sử dụng OCN Firewall hiệu quả và bảo mật:

  1. Đặt tên và Mô tả Rõ ràng: Sử dụng tên có ý nghĩa cho Chính sách, Vùng, Quy tắc và cung cấp mô tả chi tiết về mục đích của chúng.
  2. Nguyên tắc Đặc quyền Tối thiểu: Chỉ cho phép những kết nối thực sự cần thiết. Bắt đầu bằng việc chặn tất cả (default deny) và chỉ mở những gì cần thiết.
  3. Sử dụng Vùng (Zone) hiệu quả: Nhóm các mạng có cùng mức độ tin cậy hoặc chức năng vào các Vùng. Ưu tiên sử dụng Vùng thay vì IP/CIDR trực tiếp trong chính sách để dễ bảo trì.
  4. Sử dụng Bộ chọn (Selector) và Nhãn (Label) một cách nhất quán: Phân loại máy chủ bằng nhãn một cách có hệ thống (ví dụ: app, role, env, tier). Sử dụng selector cụ thể để giới hạn phạm vi ảnh hưởng của chính sách.
  5. Chính sách Mặc định Chặn (Default Deny): Tạo một chính sách có độ ưu tiên thấp nhất (ví dụ: priority=9999) với selector * để chặn tất cả lưu lượng Ingress và Egress không được cho phép rõ ràng bởi các chính sách khác.
    ocnfwctl policy create \
      --name default-deny-all \
      --selector "*" \
      --priority 9999 \
      --ingress-deny "tcp:*,udp:*" --ingress-from-zones any \
      --egress-deny "tcp:*,udp:*" --egress-to-zones any
    
  6. Kiểm tra Trước khi Áp dụng: Sử dụng policy test-connection hoặc policy debug-connection để kiểm tra tác động của thay đổi trước khi áp dụng rộng rãi.
  7. Quản lý như Mã (Policy as Code): Sử dụng tính năng xuất/nhập YAML để lưu trữ cấu hình Vùng và Chính sách trong hệ thống quản lý phiên bản (như Git). Tích hợp với quy trình CI/CD để tự động hóa việc triển khai.
  8. Đánh giá Định kỳ: Thường xuyên xem xét lại các chính sách và vùng để loại bỏ những gì không còn cần thiết, cập nhật theo thay đổi kiến trúc và đảm bảo chúng vẫn phù hợp với yêu cầu bảo mật.
  9. Ghi Nhật ký Hợp lý: Bật ghi nhật ký cho các quy tắc deny quan trọng để hỗ trợ gỡ lỗi. Tránh ghi nhật ký cho các quy tắc allow có lưu lượng rất lớn trừ khi thực sự cần thiết (để tránh quá tải hệ thống log).
  10. Phân quyền Hợp lý: Sử dụng tính năng quản lý người dùng/nhóm (nếu có) để giới hạn quyền của người dùng chỉ trong phạm vi cần thiết.