Cài đặt OpenZiti Controller và khởi tạo Database
Chúng ta sẽ triển khai OpenZiti Controller trên một instance Proxmox (VM hoặc Container) đã chuẩn bị sẵn hệ điều hành Linux (Ubuntu 22.04 LTS được khuyến nghị).
Mục tiêu là cài đặt binary, cấu hình file config, tạo database SQLite mặc định (hoặc Postgres nếu cần), và khởi động service.
Trước tiên, cập nhật hệ thống và cài đặt các công cụ cần thiết như curl, git, và các thư viện hệ thống.
apt update && apt install -y curl git ca-certificates openssl jq
Cài đặt thành công các gói phụ thuộc.
Tải binary mới nhất của OpenZiti Controller từ GitHub.
curl -L https://github.com/openziti/ziti/releases/latest/download/ziti-linux-amd64.tar.gz -o /tmp/ziti.tar.gz && tar -xzf /tmp/ziti.tar.gz -C /tmp && cp /tmp/ziti-linux-amd64/ziti /usr/local/bin/ && rm -rf /tmp/ziti* && ziti version
Cài đặt binary vào đường dẫn hệ thống và hiển thị phiên bản hiện tại.
Tạo thư mục cấu hình và database cho Controller.
mkdir -p /opt/ziti/controller/config /opt/ziti/controller/db && chown -R $(whoami):$(whoami) /opt/ziti
Thư mục cấu hình và dữ liệu được tạo với quyền sở hữu của người dùng hiện tại.
Tạo file cấu hình `controller.yml` với các thông số mặc định an toàn, bao gồm chỉ số định danh (identity) và đường dẫn database.
cat > /opt/ziti/controller/config/controller.yml
File cấu hình được ghi vào `/opt/ziti/controller/config/controller.yml`.
Khởi tạo chứng chỉ CA và certificate cho Controller. Đây là bước quan trọng để thiết lập niềm tin (Trust) trong mạng Zero-Trust.
cd /opt/ziti/controller/config && ziti controller new-ca . && ziti controller new-cert --days 365 . && ls -la
Chứng chỉ `ziti-controller-ca.pem`, `ziti-controller-cert.pem`, và key `ziti-controller-key.pem` được tạo ra.
Khởi động OpenZiti Controller. Chúng ta sẽ chạy nó dưới dạng daemon để đảm bảo nó hoạt động liên tục.
cd /opt/ziti/controller/config && ziti controller start -c controller.yml -d &
Controller bắt đầu khởi động, bạn sẽ thấy log thông báo "Controller started successfully" và port 443 đang lắng nghe.
Kiểm tra trạng thái của Controller bằng lệnh admin.
sleep 5 && ziti controller list-ids
Danh sách các identity (ban đầu là trống) được hiển thị, xác nhận Controller đang hoạt động và sẵn sàng nhận kết nối.
Cấu hình OpenZiti Edge Router
Bây giờ chúng ta sẽ thiết lập OpenZiti Edge Router trên cùng một máy (hoặc một máy khác trong mạng nội bộ) để đóng vai trò là cổng kết nối giữa Controller và Internet/Client.
Cài đặt binary `ziti` (đã có từ phần Controller) hoặc tải riêng nếu cần. Ở đây giả định binary đã có sẵn trong `/usr/local/bin/ziti`.
Tạo thư mục cấu hình cho Edge Router.
mkdir -p /opt/ziti/edge/config && chown -R $(whoami):$(whoami) /opt/ziti/edge
Thư mục cấu hình Edge Router được tạo.
Khởi tạo chứng chỉ cho Edge Router. Edge Router cần một chứng chỉ được ký bởi CA của Controller để xác thực với Controller.
cd /opt/ziti/edge/config && ziti edge new-ca . && ziti edge new-cert --days 365 --ca /opt/ziti/controller/config/ziti-controller-ca.pem . && ls -la
Chứng chỉ `ziti-edge-ca.pem`, `ziti-edge-cert.pem` và key được tạo. Lưu ý: CA ở đây có thể dùng chung hoặc riêng tùy chiến lược, nhưng để đơn giản trong bước setup ban đầu, chúng ta thường dùng CA của Controller hoặc tạo CA riêng cho Edge.
Tạo file cấu hình `edge-router.yml`. File này định nghĩa cách Edge Router kết nối với Controller và lắng nghe traffic từ bên ngoài.
cat > /opt/ziti/edge/config/edge-router.yml
Thay thế `` bằng địa chỉ IP thực tế của máy chứa Controller. File cấu hình đã được ghi.
Khởi động Edge Router.
cd /opt/ziti/edge/config && ziti edge-router start -c edge-router.yml -d &
Edge Router bắt đầu chạy, log sẽ hiển thị thông báo kết nối thành công tới Controller.
Verify kết nối giữa Edge Router và Controller.
ziti controller list-edge-routers
Danh sách hiển thị `edge-router-1` với trạng thái `online` hoặc `connected`.
Tạo chứng chỉ và Key cho cơ sở hạ tầng Zero-Trust
Trong kiến trúc Zero-Trust, việc quản lý chứng chỉ (PKI) là cốt lõi. Chúng ta cần tạo các chứng chỉ cho các thành phần khác như Service, Client, và Policy.
Tạo một CA riêng biệt cho các dịch vụ (Service CA) để phân tách trust domain.
cd /opt/ziti/controller/config && ziti controller new-ca service-ca && ziti controller new-cert --ca /opt/ziti/controller/config/service-ca-ca.pem --days 365 service-ca
File `service-ca-ca.pem`, `service-ca-cert.pem`, `service-ca-key.pem` được tạo trong thư mục Controller.
Dùng CLI để đăng ký chứng chỉ này vào Controller dưới dạng một "External CA" hoặc sử dụng trực tiếp cho việc tạo identity sau này.
ziti controller list-ca
Danh sách các CA đã được Controller quản lý, bao gồm CA mặc định và Service CA mới tạo.
Chuẩn bị các file cấu hình để cấp phát chứng chỉ động (Dynamic Certificates) cho các client sau này.
cat > /opt/ziti/controller/config/external-ca.yml
File định nghĩa External CA được tạo, sẵn sàng để tham chiếu trong các policy.
Cấu hình chính sách định tuyến (Policies) ban đầu
Bây giờ chúng ta cấu hình các Policy để định nghĩa ai (Identity) được quyền truy cập gì (Service) qua đâu (Edge Router).
Tạo một Service ảo để đại diện cho ứng dụng nội bộ (ví dụ: Web Server).
ziti controller create-service my-web-app
Service `my-web-app` được tạo với ID duy nhất.
Tạo một Identity cho Client (ví dụ: user-admin) để thử nghiệm.
ziti controller create-id user-admin --roles=client --enroll-method=OTC
Identity `user-admin` được tạo. Lệnh này sẽ in ra mã One-Time Code (OTC) hoặc file cấu hình. Lưu mã này để enroll client sau.
Tạo Policy cho phép Client truy cập Service.
ziti controller create-policy my-web-app-policy --service-roles=client --service-ids=my-web-app --identity-ids=user-admin
Policy `my-web-app-policy` được tạo, liên kết Identity và Service.
Thiết lập Policy cho Edge Router để Edge Router có quyền định tuyến traffic cho Service này.
ziti controller create-policy edge-router-1-policy --service-roles=client --service-ids=my-web-app --identity-ids=edge-router-1
Policy cho Edge Router được tạo, cho phép Edge Router tham gia vào luồng traffic của Service.
Kiểm tra danh sách các Policy đã cấu hình.
ziti controller list-policies
Danh sách hiển thị các policy: `my-web-app-policy` và `edge-router-1-policy` với trạng thái `active`.
Kiểm tra trạng thái hoạt động của các thành phần OpenZiti
Bước cuối cùng là xác minh toàn bộ hạ tầng đang hoạt động đồng bộ và sẵn sàng cho việc tích hợp Cloudflare Access ở phần tiếp theo.
Chạy lệnh kiểm tra sức khỏe tổng thể của Controller.
ziti controller status
Hiển thị thông tin phiên bản, trạng thái database, số lượng identity, service, và policy đang hoạt động.
Kiểm tra trạng thái kết nối của Edge Router từ phía Controller.
ziti controller list-edge-routers --status
Danh sách Edge Router hiển thị trạng thái `online` và số lượng kết nối đang hoạt động.
Khởi động một service giả lập (mock service) để test kết nối nội bộ (nếu cần).
ziti router start --config /opt/ziti/edge/config/edge-router.yml --name my-router &
Router thứ hai (hoặc cùng router) khởi động thành công, sẵn sàng lắng nghe traffic.
Xác nhận cuối cùng bằng cách liệt kê tất cả các thành phần.
ziti controller list-ids && ziti controller list-services && ziti controller list-policies
Đầu ra hiển thị đầy đủ danh sách Identity, Service và Policy, xác nhận hạ tầng Zero-Trust cơ bản đã được xây dựng hoàn chỉnh.
Điều hướng series:
Mục lục: Series: Series: Xây dựng nền tảng Zero-Trust Network cho doanh nghiệp với OpenZiti, Cloudflare Access và Identity-aware Proxy trên hạ tầng Proxmox
« Phần 2: Triển khai và cấu hình Identity Provider (IdP) cho Zero-Trust
Phần 4: Cấu hình Cloudflare Access để bảo vệ điểm cuối »