# iSecOS — Cẩm nang quản trị hệ thống (Admin Guide) **iSecOS 1.0-alpha7 (MotaX)** · Debian 13 "Trixie" (kernel 6.12 LTS) · GNOME 48 (Wayland) > Tài liệu dành cho **quản trị viên CNTT** vận hành đội máy (fleet) iSecOS của > cơ quan: cài đặt hàng loạt, quản lý qua Control Center, chính sách bảo mật, > cập nhật, sao lưu/khôi phục, giám sát. Tài liệu cho người dùng cuối: > `docs/user-manual.md`. Tài liệu liên quan: `docs/architecture.md` (kiến trúc tổng thể) · `docs/security-services-spec.md` (spec MFA/NAC/DLP) · `docs/luks2-tpm2-spec.md` (mã hóa đĩa) · `docs/control-center-spec.md` (spec Control Center) · `INSTALL-GUIDE.md` (cài một máy) · `server/README.md` (hạ tầng apt server). --- ## Mục lục 1. [Kiến trúc hệ thống](#1-kiến-trúc-hệ-thống) 2. [Cài đặt hàng loạt](#2-cài-đặt-hàng-loạt) 3. [Quản lý qua Control Center](#3-quản-lý-qua-control-center) 4. [Chính sách bảo mật (MFA · NAC · DLP)](#4-chính-sách-bảo-mật-mfa--nac--dlp) 5. [Quản lý cập nhật](#5-quản-lý-cập-nhật) 6. [Sao lưu và khôi phục](#6-sao-lưu-và-khôi-phục) 7. [Giám sát (Monitoring)](#7-giám-sát-monitoring) 8. [Khắc phục sự cố cho quản trị viên](#8-khắc-phục-sự-cố-cho-quản-trị-viên) 9. [Checklist tăng cường bảo mật cho production](#9-checklist-tăng-cường-bảo-mật-cho-production) 10. [Cấu hình mạng — Firewall, VPN, Proxy](#10-cấu-hình-mạng--firewall-vpn-proxy) --- ## 1. Kiến trúc hệ thống ### 1.1. Sơ đồ tổng thể ``` ┌────────────────────────────┐ ┌─────────────────────────────────────────────┐ │ MÁY TRẠM iSecOS │ │ isecos.isecurity.vn │ │ (endpoint) │ │ (Control Center + apt server) │ │ │ │ │ │ GNOME 48 (Wayland) │ HTTPS │ ┌────────────────────────────────┐ │ │ Chromium · LibreOffice │◄──────►│ │ Gateway nginx (TLS, rate-limit)│ │ │ Thunderbird · GoChat … │ │ └───────┬──────────────┬─────────┘ │ │ │ │ │ │ │ │ Agent: isecos-agent │ /api/ │ ┌───────▼─────┐ ┌─────▼──────────────┐ │ │ ├─ enroll 1 lần │◄──────►│ │ FastAPI │ │ APT mirror + repo │ │ │ ├─ checkin 5 phút │ │ │ (Control │ │ /apt/os/ (Debian │ │ │ │ (posture MFA/NAC/DLP)│ /apt/ │ │ Center) │ │ mirror mota-x) │ │ │ ├─ kéo + ÁP DỤNG policy │◄──────►│ │ PostgreSQL/ │ │ /apt/isecos/ (repo │ │ │ └─ (log push: roadmap) │ │ │ SQLite lite │ │ riêng, ký GPG) │ │ │ │ /iso/ │ └──────┬──────┘ └─────┬──────────────┘ │ │ Bảo mật lõi: │◄──────►│ │ │ │ │ LUKS2 + TPM2 (clevis) │ │ ┌──────▼──────┐ ┌─────▼──────────────┐ │ │ Secure Boot (shim) │ │ │ Redis │ │ repo-sync │ │ │ AppArmor (~125 profile) │ │ │ (cache/ws) │ │ (debmirror+aptly) │ │ │ auditd · ufw · nftables │ │ └─────────────┘ └────────────────────┘ │ │ MFA (TOTP/U2F/PIV) │ │ │ │ NAC 802.1X · DLP usbguard│ │ /portal/ — web console React (admin) │ └────────────────────────────┘ │ /iso/ — kho tải ISO ký GPG │ │ /logs/ — log tập trung (Wazuh roadmap) │ ┌─────────────────────┐ └─────────────────────────────────────────────┘ │ ADMIN (trình duyệt) │────────► https://isecos.isecurity.vn/portal/ └─────────────────────┘ JWT + RBAC (superadmin/policy_admin/ analyst/remote_admin/viewer) ``` ### 1.2. Các luồng chính | Luồng | Đường dẫn | Chu kỳ/Thời điểm | Giao thức | |---|---|---|---| | Agent enroll (đăng ký máy) | `POST /api/agent/enroll` | 1 lần đầu (được enrollment_id vĩnh viễn) | HTTPS + Bearer ENROLL_KEY (roadmap: mTLS client cert) | | Agent checkin (posture) | `POST /api/agent/checkin` | timer systemd 5 phút/lần | Như trên | | Kéo policy | `GET /api/agent/policy/{id}` | mỗi vòng checkin | Như trên | | Cập nhật gói | `https://deb.isecos.isecurity.vn/` | `apt update` + unattended-upgrades (bảo mật) | HTTPS + chữ ký GPG Debian | | Nâng cấp phiên bản OS | `https://apt.isecos.isecurity.vn/` (suite `mota-x`) | `isecos-upgrade check/apply` | HTTPS + chuỗi xác thực GPG 3 tầng | | Admin console | `https://isecos.isecurity.vn/portal/` | theo phiên làm việc | HTTPS + JWT (httpOnly cookie) | | Metrics | `GET /api/health/metrics` | Prometheus scrape | HTTPS | ### 1.3. Thành phần trên máy trạm (nhắc nhanh) | Thành phần | Vai trò | Công cụ CLI | |---|---|---| | LUKS2 + clevis/TPM2 | Mã hóa đĩa + auto-unlock (PCR7) | `cryptsetup`, `clevis luks list`, `isecos-tpm-enroll` | | MFA (PAM) | TOTP + FIDO U2F + PIV cho login/sudo/SSH | `isecos-mfa` | | NAC | 802.1X EAP-TLS + posture + enforce nftables | `isecos-nac` | | DLP | usbguard — chặn USB storage mặc định | `isecos-dlp` | | isecos-agent | Liên lạc Control Center | `isecos-agent` | | isecos-upgrade | Nâng cấp tại chỗ có kiểm soát GPG | `isecos-upgrade` | | AppArmor / auditd / ufw | Hardening nền CIS | `aa-status`, `auditctl`, `ufw` | --- ## 2. Cài đặt hàng loạt ### 2.1. Tạo USB cài đặt và cài một máy (cơ sở) Quy trình chuẩn cho 1 máy: tải ISO từ `https://cdimage.isecos.isecurity.vn/` → kiểm tra SHA256 + chữ ký GPG (key phát hành `33D452CF996BC87150D291AB00F623A3E6B35107`) → ghi USB bằng Rufus (GPT cho UEFI) → boot → bộ cài đồ họa GTK tiếng Việt tự chạy (menu boot mặc định sau 5 giây). Trong lúc cài chỉ hỏi **2 mật khẩu**: mật khẩu người dùng `isecos` (sudo) và passphrase LUKS. Chi tiết từng bước: `INSTALL-GUIDE.md`. Bộ cài mặc định: mã hóa toàn bộ đĩa — `/boot` 512 MB (ext4, rõ văn bản) + phân vùng LUKS2 (aes-xts-plain64, argon2id) + LVM (`isecos-vg/root` + swap 4G). **Bộ cài xóa toàn bộ đĩa đích** — chỉ dùng cho máy mới/đĩa trống. ### 2.2. Tùy biến preseed Preseed nằm trong cây build: `os/live-build/config/includes.installer/preseed-encrypted.cfg`. Các trường đã tự động hóa: locale `vi_VN`, keyboard, timezone `Asia/Ho_Chi_Minh`, hostname, user `isecos`, phân vùng mã hóa, cài gói bảo mật (clevis, tpm2-tools…), `late_command` sinh recovery keyfile (keyslot 1) + `clevis luks bind` TPM (khi có `/dev/tpm*`). Nguyên tắc khi tùy biến cho đơn vị: | Mục | Khuyến nghị | |---|---| | **Passphrase LUKS** | KHÔNG hardcode vào preseed cho production. Muốn chuẩn hóa khóa đĩa theo đơn vị: để installer hỏi từng máy, hoặc để CA/escrow quản lý recovery key (mục 6.1) và **đổi passphrase ngay sau khi bàn giao máy** | | **Mật khẩu user** | Không hardcode. Bắt buộc đổi lần đăng nhập đầu (kết hợp với chính sách MFA) | | **pkgsel/include** | Thêm gói đơn vị (phần mềm chuyên ngành) — ưu tiên thêm vào **kho nội bộ** thay vì ghi trực tiếp preseed, để `isecos-upgrade` quản lý được vòng đời | | **late_command** | Giữ chuỗi `luksAddKey` + `clevis luks bind` nguyên vẹn — đây là phần kiểm chứng nhiều nhất (xem `docs/luks2-tpm2-spec.md` mục 3) | Kiểm tra preseed sau mỗi chỉnh sửa bằng bộ test autoinstall có sẵn: ```bash # trong WSL Debian (môi trường build) bash os/tools/vm/autoinstall-test.sh # cài E2E trong QEMU, chụp từng bước ``` ### 2.3. PXE boot (kế hoạch) Cài qua mạng (netboot d-i + preseed trung tâm) nằm trong roadmap Phase 3+ — khi hạ tầng `isecos.isecurity.vn` đầy đủ, endpoint boot PXE → tải d-i → preseed từ API theo serial máy. Hiện tại: cài bằng USB (2.1) hoặc nhân bản USB (2.4) cho đội máy lớn. ### 2.4. Nhân bản USB/disk (clone) — khi bắt buộc phải dùng Nhân bản nhanh một đĩa mẫu cho nhiều máy **chấp nhận được trong lab**, nhưng trên production phải xử lý các "vết tay" sau, nếu không sẽ hỏng cả bảo mật lẫn quản lý fleet: | Vấn đề khi clone nguyên đĩa | Cách xử lý sau khi clone (trên TỪNG máy) | |---|---| | Cùng passphrase LUKS + cùng header trên mọi máy | `sudo cryptsetup luksAddKey /dev/sda5` (khóa riêng máy) → `sudo cryptsetup luksRemoveKey /dev/sda5` (xóa khóa mẫu). **Luôn giữ ≥1 slot khả dụng** trước khi xóa | | Trùng `/etc/machine-id`, hostname | `sudo rm /etc/machine-id && sudo systemd-machine-id-setup`; đổi hostname: `sudo hostnamectl set-hostname PC-SEC-014` | | Trùng enrollment agent (`/etc/isecos/cc-agent.id`) | `sudo rm /etc/isecos/cc-agent.id && sudo systemctl start isecos-agent.service` (đăng ký enrollment mới) | | Trùng khóa TPM binding (sealed trên máy mẫu) | TPM máy mới sẽ không mở được → enroll lại: `sudo isecos-tpm-enroll` | | Trùng SSH host key (nếu bật sshd) | `sudo rm /etc/ssh/ssh_host_* && sudo dpkg-reconfigure openssh-server` | **Khuyến nghị**: với số lượng máy lớn, ưu tiên cài từng máy bằng ISO (2.1) — bộ cài đã tự động gần hết; thời gian cài ~15–30 phút/máy và mỗi máy có ngay khóa LUKS riêng, TPM riêng, enrollment riêng. ### 2.5. Checklist bàn giao máy mới ```bash # Trên máy mới — chạy kiểm tra nhanh trước khi bàn giao: isecos-upgrade status # đúng phiên bản fleet isecos-mfa status # (nếu chính sách MFA bật) hướng dẫn user enroll isecos-nac status # posture mạng đơn vị isecos-dlp status # usbguard active, storage bị chặn isecos-agent status # đã enroll về Control Center sudo ufw status verbose # default deny incoming aa-status | head -5 # AppArmor profiles loaded/enforce timedatectl # NTP sync (bắt buộc cho TOTP) ``` Đối chiếu máy đã lên Control Center (mục 3.2) rồi mới bàn giao người dùng. --- ## 3. Quản lý qua Control Center ### 3.1. Triển khai Control Center Hai chế độ chạy: **Full mode (production)** — Docker Compose (FastAPI + React + PostgreSQL 16 + Redis 7), mã nguồn `os/control-center/`: ```bash cd os/control-center cp .env.example .env # đặt ISEC_ADMIN_EMAIL/ISEC_ADMIN_PASSWORD, JWT secret, # DATABASE_URL, AGENT_ENROLL_KEY — xem 3.3 docker compose up --build -d docker compose logs -f api ``` **Lite mode (lab / khởi động nhanh)** — SQLite, không Docker: ```bash mkdir -p /root/cc && ln -sfn $PWD/src/api /root/cc/app && cd /root/cc ISEC_DATABASE_URL=sqlite+aiosqlite:////root/isecos/cc-lite.db \ ISEC_AGENT_ENROLL_KEY=isecos-agent-lab-key \ python3 -m uvicorn app.main:app --host 0.0.0.0 --port 8000 ``` Sau đó publish ra `https://isecos.isecurity.vn/portal/` qua nginx gateway (`server/nginx/`). API docs tương tác: `/api/docs` (Swagger) và `/api/redoc`. ### 3.2. Các trang quản trị Console (`https://isecos.isecurity.vn/portal/`) gồm 8 trang chính, song ngữ Việt/Anh, chế độ sáng/tối: | Trang | Chức năng quản trị | Ghi chú vận hành | |---|---|---| | **Tổng quan (Dashboard)** | Số liệu fleet: tổng số/online/offline/cảnh báo; biểu đồ uptime 24h; bảng cảnh báo gần nhất | Màn hình theo dõi hàng ngày — treo trên tường điều hành | | **Thiết bị đầu cuối (Endpoints)** | Danh sách máy: hostname, IP, phiên bản OS, trạng thái; xem chi tiết posture + inventory | Phân trang, tìm kiếm theo host/IP, lọc trạng thái | | **Chính sách (Policies)** | Tạo/gán policy theo endpoint; soạn rule JSON; phiên bản policy | Xem 3.4 và 4 | | **Quét lỗ hổng (Scans)** | Kích hoạt quét, xem kết quả CVE theo máy | Tích hợp engine quét theo roadmap Phase 4 | | **Điều khiển từ xa (Remote)** | Phiên remote desktop tới endpoint (VNC/RDP), có ghi hình phiên | Yêu cầu quyền `remote_admin`; mọi phiên ghi audit | | **Báo cáo (Reports)** | Sinh/xuất báo cáo PDF/CSV/XLSX cho lãnh đạo & kiểm toán | Tuân thủ yêu cầu báo cáo định kỳ | | **Nhật ký kiểm tra (AuditLog)** | Tra cứu `agent_events` (enroll/checkin/policy-pull) + hành động admin (LOGIN, CREATE, ASSIGN…) | Append-only; xuất CSV cho thanh tra | | **Cài đặt (Settings)** | Tài khoản admin, vai trò RBAC, khóa enroll, retention | Đổi ngay sau khi dựng (mục 9) | ### 3.3. Endpoints — enroll, posture, phát hiện offline **Enroll**: agent trên máy (`isecos-agent`, systemd timer 5 phút) tự đăng ký lần đầu, nhận `enrollment_id` lưu tại `/etc/isecos/cc-agent.id` (vĩnh viễn theo máy). Cấu hình agent trên endpoint: ```bash # /etc/isecos/cc-agent.conf (root:640) CC_URL=https://isecos.isecurity.vn/api ENROLL_KEY= # Kiểm tra tay / vận hành: sudo isecos-agent once # chạy 1 vòng enroll/checkin/policy ngay isecos-agent status # EID + posture tóm tắt systemctl list-timers isecos-agent.timer ``` **Posture mỗi checkin** (JSON gửi về `POST /api/agent/checkin`): hostname, IP, os_version, kernel, uptime, RAM/disk, và 3 khối bảo mật: ```json { "mfa": {"enforced": true, "enrolled_users": ["nguyenvana", "transib"]}, "nac": {"mode": "on", "authenticated": true}, "dlp": {"usbguard_active": true, "blocked_recent": 3} } ``` **Phát hiện offline**: heartbeat 5 phút/lần — máy không checkin trong ngưỡng bất thường (mặc định ~15 phút) → console chuyển trạng thái OFFLINE, Dashboard cảnh báo. Lưu ý: máy tắt đúng giờ nghỉ cũng offline — kết hợp đọc `uptime_seconds` để phân biệt "tắt máy" và "mất liên lạc bất thường". ### 3.4. Policies — tạo, gán, áp dụng Policy là JSON `{"type": ..., "config": {...}}` gán cho endpoint. Agent kéo về mỗi vòng checkin và **áp dụng runtime** qua CLI sẵn có (đã kiểm chứng E2E: policy NAC phát từ console → `isecos-nac enforce` chạy thật trên máy): | type | config | Hành vi trên endpoint | |---|---|---| | `nac` | `{"enforce_mode": "on"}` / `"off"` | `isecos-nac enforce on/off` — bật default-deny nftables khi chưa 802.1X | | `dlp` | `{"usb_storage": "deny"}` | `isecos-dlp deny-all-storage` — khóa toàn bộ USB lưu trữ | | `mfa` | `{"enforce": true}` | Report-only + cảnh báo trên agent nếu fleet bật enforce mà user chưa enroll (enroll TOTP là thủ tục vận hành, xem 4.1) | Ví dụ tạo policy qua API: ```bash TOKEN= curl -s -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \ -d '{"name":"NAC enforce - khối an ninh","type":"nac", "config":{"enforce_mode":"on"}}' \ https://isecos.isecurity.vn/api/policies # Gán cho endpoint: curl -s -X POST -H "Authorization: Bearer $TOKEN" \ https://isecos.isecurity.vn/api/endpoints//policies/assign \ -H 'Content-Type: application/json' -d '{"policy_id": }' ``` Kiểm chứng policy đã xuống máy: `journalctl -t isecos-agent | grep applied` (phải thấy `applied: nac=on policy-ok`). ### 3.5. AuditLog — theo dõi hoạt động Hai nguồn ghi vào bảng sự kiện: - **agent_events**: enroll / checkin / policy-pull của mỗi máy (tự động). - **admin actions**: LOGIN, CREATE/UPDATE/DELETE policy, ASSIGN policy, remote session… (tự động, gắn user admin). Tra cứu: trang AuditLog (lọc theo thời gian/user/loại) hoặc API `GET /api/audit?...` — xuất CSV (`GET /api/audit/export`) phục vụ kiểm toán định kỳ. Nhật ký append-only; cấu hình retention theo quy định cơ quan (Settings). ### 3.6. RBAC — phân quyền admin | Vai trò | Quyền chính | Phù hợp | |---|---|---| | `superadmin` | toàn hệ thống | 1–2 người chịu trách nhiệm | | `policy_admin` | policies:*, xem endpoints/audit | đội chính sách bảo mật | | `analyst` | scans/vulnerabilities, xem endpoints/audit | SOC/phân tích | | `remote_admin` | remote sessions, xem endpoints | hỗ trợ từ xa | | `viewer` | chỉ đọc mọi trang | lãnh đạo/kiểm toán nội bộ | Danh sách permission key đầy đủ: `docs/control-center-spec.md` Phụ lục A. --- ## 4. Chính sách bảo mật (MFA · NAC · DLP) ### 4.1. MFA — áp dụng TOTP cho toàn fleet **Kiến trúc PAM đã bake trong ISO** (hook `060-mfa-shared.chroot`): `pam_google_authenticator` (TOTP, dòng `required ... nullok` — chưa enroll không bị khóa, giai đoạn chuyển tiếp) + `pam_u2f` (keyword-tu, file `u2f_keys` rỗng = chưa enroll) trước chuỗi `pam_unix`. Áp dụng cho **login console, GDM, sudo và SSH** (sshd drop-in `KbdInteractiveAuthentication yes`). **Quy trình vận hành MFA cho đơn vị**: 1. **Tuyên bố + hướng dẫn người dùng** (mục 9.2 user-manual): mỗi người cài app OTP, chạy `isecos-mfa enroll`, **in 10 mã khôi phục** ra giấy. 2. **Theo dõi tỷ lệ enroll** từ posture: trang Endpoints → cột `mfa.enrolled_users`; hoặc: ```bash curl -s -H "Authorization: Bearer $TOKEN" \ https://isecos.isecurity.vn/api/endpoints | python3 -c \ 'import json,sys; [print(e["hostname"], e.get("posture",{}).get("mfa")) for e in json.load(sys.stdin)]' ``` 3. **Bật policy `mfa` `enforce` trên fleet** (console hoặc API như 3.4) — agent sẽ cảnh báo máy nào bật enforce mà chưa có user enroll. 4. Khi 100% enrolled, lên kế hoạch **thu hẹp `nullok`** (bỏ `nullok` khỏi dòng TOTP trong `/etc/pam.d/common-auth`) để sai OTP = chặn tuyệt đối — làm qua policy/package riêng, có window bảo trì. 5. **FIDO U2F / smart card PIV** cho nhóm đặc biệt: hạ tầng `pam_u2f`, `opensc/pcscd` đã sẵn; provision khóa thật bằng `pam_u2f-auth` (YubiKey) hoặc chứng thư PIV/CCCD từ CA công vụ. **Lệnh phục vụ vận hành trên máy**: ```bash isecos-mfa status # ai đã enroll (TOTP/U2F) trên máy này isecos-mfa enroll nguyenvana # enroll hộ user (chạy dưới quyền đó khi có thể) isecos-mfa repair # khôi phục PAM nếu gói khác regenerate common-auth isecos-mfa disable # tắt MFA user (ghi audit; dùng khi mất điện thoại) ``` Lưu ý kỹ thuật quan trọng (bài học spec): file state TOTP **phải** là `~/.google_authenticator` (gạch dưới, do binary `google-authenticator` sinh) — sửa tay/biến tên file sẽ khiến mọi mã bị từ chối. Đồng hồ máy phải NTP sync (`timedatectl`) — TOTP chịu lệch tối đa ~90 giây. ### 4.2. NAC — kiểm soát truy cập mạng (802.1X) **Mô hình tổng thể** (phía mạng là hạ tầng RADIUS của đơn vị; phía endpoint là iSecOS): ``` Máy trạm (supplicant) Switch/AP (authenticator) RADIUS server wpasupplicant/NM ◄─EAPOL─► cổng 802.1X ◄─RADIUS─► (FreeRADIUS/ chứng thư EAP-TLS Cho phép/chặn cổng FreeIPA, CA công vụ) /etc/isecos/nac/*.crt ``` **Phía endpoint** (hook `062-nac-shared.chroot`, đã bake): - Supplicant 802.1X **EAP-TLS**: `wpasupplicant` + NetworkManager; chứng thư máy đặt tại `/etc/isecos/nac/{client.crt,client.key,ca.crt}` (root:0600, cấp từ CA công vụ); mẫu kết nối: `/etc/isecos/nac/8021x-connection.conf.example`. - Tạo kết nối 802.1X có dây cho một máy (ví dụ): ```bash sudo nmcli connection add type ethernet con-name lacong-viec ifname enp3s0 \ 802-1x.eap tls 802-1x.identity "PC-SEC-014@so.gov.vn" \ 802-1x.client-cert /etc/isecos/nac/client.crt \ 802-1x.private-key /etc/isecos/nac/client.key \ 802-1x.ca-cert /etc/isecos/nac/ca.crt sudo nmcli connection up lacong-viec ``` - **Posture + enforce**: `isecos-nac status` (đã xác thực 802.1X chưa); `isecos-nac enforce on` → service + timer 60s kiểm tra — **chưa xác thực** thì nftables chain `isecos_nac` default-deny mọi output, chỉ cho DHCP (67/68), EAPOL và DNS nội bộ. Tắt: `isecos-nac enforce off`. **Cảnh báo vận hành**: bật enforce trên mạng chưa có 802.1X (hoặc chứng thư máy chưa cấp) sẽ **cắt luôn SSH/định tuyến của máy** — đúng thiết kế. Luôn bật theo đợt, giữ đường console, hoặc bật từ console Control Center để tắt được ngay khi cần. **Phía máy chủ** (FreeRADIUS/FreeIPA + dynamic VLAN theo phòng ban): thuộc hạ tầng mạng đơn vị — xem `docs/server-infrastructure.md`; roadmap tích hợp CA phát chứng thư endpoint tự động qua Control Center. ### 4.3. DLP — kiểm soát USB, chặn mass-storage **Chính sách mặc định đã bake** (hook `064-dlp-shared.chroot`): - `usbguard` (1.1.3) với `/etc/usbguard/rules.conf`: `allow with-audit` cho HID (Class 03 — bàn phím/chuột), **mặc định deny phần lại — kể cả mass storage (Class 08)**; daemon cấu hình `ImplicitPolicyBlock`, audit log `/var/log/usbguard/usbguard-audit.log`. - Tắt automount GNOME (`org.gnome.desktop.media-handling`). - Audit rule riêng watch `/etc/usbguard/rules.conf` + thư mục audit log. **Nghiệp vụ whitelist USB công vụ** (yêu cầu người dùng gửi lên): ```bash # 1) Xem thiết bị đang cắm và bị chặn (cột target=block): isecos-dlp status # 2) Cho phép MỘT thiết bị cụ thể (vendor:product) kèm ghi chú phục vụ kiểm toán: sudo isecos-dlp allow-usb-storage 0951:1666 "USB cong vu - Phong BCVT" # 3) Thu hồi toàn bộ (khi thu USB/chốt đợt): sudo isecos-dlp deny-all-storage ``` Tra cứu `vendor:product`: cột ID trong `isecos-dlp status` (hoặc `lsusb`). Mọi thao tác cắm/rút/whitelist đều có dấu vet audit (`ausearch -k isecos_dlp`, `/var/log/usbguard/usbguard-audit.log`). **Phạm vi trung thực**: DLP endpoint hiện xử lý cửa USB (block/allow + audit); DLP "sâu" (watermark bản in, chặn clipboard liên app, fingerprint nội dung dựa trên danh mục mật) là tính năng Control Center tương lai — không hứa với đơn vị trong giai đoạn alpha. --- ## 5. Quản lý cập nhật ### 5.1. Mô hình cập nhật — tổng quan Máy trạm **không bao giờ cập nhật trực tiếp từ internet**. Ba nguồn, đều qua `isecos.isecurity.vn`: | Nguồn | Suite | Nội dung | Ai kích hoạt | |---|---|---|---| | `/apt/os/` (mirror Debian do repo-sync giữ) | `mota-x`, `mota-x-security`, `mota-x-updates` | Toàn bộ gói hệ thống + bản vá bảo mật | `apt update` / unattended-upgrades (tự động cho security) | | `/apt/isecos/` (repo riêng, ký GPG `isecos-apt@isecurity.vn`) | `mota-x` | Gói iSecOS, đứng đầu là `isecos-base` (sở hữu `/etc/os-release` = dấu phiên bản OS) | `isecos-upgrade` | | `/iso/` | — | ISO phát hành mới | quản trị (cài mới) | ### 5.2. Mirror sync — đồng bộ mirror từ Debian Thành phần `server/repo-sync/` (chạy trên server, docker-compose cùng nginx): `debmirror` kéo Debian trixie (`main contrib non-free` + `trixie-security`, `trixie-updates`, ~60–80 GB lần đầu) + `aptly` publish repo iSecOS. Đồng bộ theo lịch (cron/systemd timer trên server), đặt **ngay sau khi Debian phát hành bảo mật** để vòng vá của fleet không trễ hơn Debian. ```bash # Trên server isecos — chạy tay 1 lần / xem script trong server/repo-sync/ docker compose run --rm repo-sync # job đồng bộ mirror + re-publish repo # Kiểm tra kết quả: curl -s https://deb.isecos.isecurity.vn/dists/mota-x/InRelease | head -3 curl -s https://apt.isecos.isecurity.vn/dists/mota-x/InRelease | gpgv --keyring /etc/apt/keyrings/isecos.gpg ``` Snapshot theo kênh (`mota-x-stable` / `mota-x-staged`) để rollout theo đợt và rollback được — xem `docs/architecture.md` mục "Cập nhật có kiểm soát". ### 5.3. isecos-upgrade — nâng cấp phiên bản fleet **Phát hành phiên bản mới (kỹ thuật)**: bump version = build gói `isecos-base` mới (postinst ghi lại `/etc/os-release`) → đẩy `.deb` lên `/apt/isecos/` suite `mota-x` → aptly re-publish + ký. Máy người dùng chỉ cần: ```bash isecos-upgrade check # thấy "CO BAN NANG CAP PHIEN BAN MOI: 1.0-alpha6 -> 1.0-alpha7" sudo isecos-upgrade apply # apt update + cài isecos-base mới + apt full-upgrade ``` Chuỗi xác thực **3 tầng, không thể bỏ qua kể cả `--force`**: chữ ký GPG InRelease (keyring `/etc/apt/keyrings/isecos.gpg`) → SHA256 Packages đối chiếu InRelease → SHA256 `.deb` đối chiếu stanza Packages. `/etc/os-release` được sao lưu `/var/backups/isecos/` (giữ 10 bản); log `/var/log/isecos-upgrade.log`. Lưu ý thứ tự phiên bản dpkg: `1.0~alpha7 < 1.0` — công cụ đã tự chuẩn hóa (`-`→`~`) khi so sánh, không "hack" tay. **Quy trình rollout đề xuất** (một phiên bản mới): 1. Đăng ký trên Control Center (Dashboard/announcement) + email đơn vị. 2. **Giai đoạn pilot**: nâng 5–10 máy (kể cả máy của đội CNTT) → theo dõi posture 1–2 ngày (`isecos-upgrade status` từng máy qua agent). 3. **Từng đợt** theo khối/phòng; nhắc người dùng chạy `apply` đầu giờ, khởi động lại khi có kernel mới. 4. Máy "lười" cập nhật: SSH/console chạy hộ; lưu kết quả vào AuditLog. 5. Sự cố sau nâng cấp: xem `journalctl -b -1`, `/var/log/isecos-upgrade.log`, `/var/log/apt/term.log`; khôi phục cấu hình `/etc/os-release` cũ từ `/var/backups/isecos/` nếu cần nhận diện phiên bản. ### 5.4. apt policy — ghim phiên bản, giữ gói **Pin một gói về phiên bản xác định** (VD giữ LibreOffice khi có conflict với phần mềm chuyên ngành): ```bash # /etc/apt/preferences.d/90-hold-libreoffice Package: libreoffice* Pin: version 4:25.* Pin-Priority: 1001 ``` **Hold gói** (chặn mọi nâng cấp cho tới khi bỏ hold): ```bash sudo apt-mark hold libreoffice-core apt-mark showhold sudo apt-mark unhold libreoffice-core ``` **Kiểm tra nguồn & phiên bản sẽ cài**: ```bash apt-cache policy # xem phiên bản + độ ưu tiên pin từ repo nào apt list --upgradable # danh sách chờ nâng cấp apt-get -s full-upgrade | head # mô phỏng (không cài gì) ``` Nguyên tắc: pin/hold chỉ dùng cho ngoại lệ có hồ sơ (ghi rõ lý do + thời hạn gỡ); không dùng pin như biện pháp "đóng băng fleet" — đóng băng làm tụt vòng vá bảo mật, vi phạm baseline CIS. --- ## 6. Sao lưu và khôi phục ### 6.1. Quản lý khóa LUKS và recovery key Mỗi máy có cấu trúc khóa: | Slot/Token | Mở khóa bằng | Ai giữ | |---|---|---| | keyslot 0 | passphrase của người dùng (argon2id) | người dùng | | keyslot 1 | recovery keyfile (sinh lúc cài, **đã bị xóa khỏi đĩa máy** sau khi export) | két/kho đơn vị (escrow) | | token clevis JWS | TPM2 của chính máy đó (PCR7) | máy tự giữ | **Escrow recovery key** (bắt buộc, làm NGAY sau cài/nhận máy): ```bash # Trên máy (một lần): thêm khóa dự phòng dài ngẫu nhiên sudo cryptsetup luksAddKey /dev/sda5 # hỏi passphrase hiện tại + khóa mới # Xuất keyfile + header đĩa để cất: sudo cryptsetup luksHeaderBackup /dev/sda5 --header-backup-file sda5-header.bin # Nén + mã hóa gói escrow rồi copy ra ngoài máy (mã hóa bằng GPG của đơn vị): tar czf - sda5-header.bin | gpg -e -r escrow@so.gov.vn > pc-sec-014-luks-escrow.tar.gz.gpg rm -f sda5-header.bin # không để lọt header trên đĩa ``` Quy tắc escrow: mỗi máy một phong bì niêm phong (hoặc kho mật số hai người kiểm soát — "two-person rule"), ghi rõ hostname + serial; mất phong bì = coi như lộ khóa → thu hồi bằng `luksRemoveKey`/`luksKillSlot` và cấp mới. `luksHeaderBackup` định kỳ mỗi khi đổi cấu trúc đĩa — **mất header là mất mọi keyslot**. ### 6.2. Chiến lược sao lưu hệ thống | Đối tượng | Nội dung | Cách | Chu kỳ khuyến nghị | |---|---|---|---| | **Dữ liệu người dùng** (`/home` — nằm trong LUKS) | tài liệu, hồ sơ Thunderbird, KeePassXC | agent/backup qua SSH nội bộ: `restic` (mã hóa đầu cuối) hoặc `rsync` lên NAS đơn vị | hằng ngày (incremental) | | **Email** | hộp thư IMAP | tự nằm trên mail server đơn vị | theo mail server | | **Cấu hình máy** | `/etc` (đã tách phần động) | `restic`/`tar` cùng đợt `/home` | hằng ngày | | **Control Center** | PostgreSQL (endpoints, policies, audit) | `pg_dump` → offsite | hằng ngày + trước mọi lần nâng cấp CC | | **Control Center (phụ)** | Redis RDB/AOF, `.env`, khóa JWT/enroll | rsync cấu hình + bản dump | theo thay đổi | | **Apt server** | repo `/apt/isecos/`, mirror `/apt/os/` | mirror build lại được từ Debian — chỉ cần sao lưu **kho GPG key ký repo** + danh sách gói riêng | theo thay đổi | Lưu ý bảo mật: sao lưu `/home` chứa dữ liệu nhạy cảm — bản sao lưu **phải mã hóa** (restic/GPG) và NAS/kho sao lưu nằm trong vùng an ninh của đơn vị. Đừng sao lưu đĩa LUKS "thô" bằng dd — vừa nặng vừa tạo bản sao dữ liệu nhạy cảm cần được bảo vệ ngang đĩa gốc. ### 6.3. Quy trình khôi phục sự cố (Disaster Recovery) **A. Máy trạm hỏng phần mềm — dữ liệu còn trên đĩa (không boot được):** ```bash # 1) Boot Live ISO iSecOS (mục Live system) # 2) Mở đĩa LUKS bằng passphrase (KHÔNG dùng echo — thêm \n làm sai): sudo printf 'passphrase' | cryptsetup open --type luks --key-file=- /dev/sda5 rescue # 3) Kích hoạt LVM + mount: sudo vgchange -ay isecos-vg sudo mount /dev/isecos-vg/root /mnt # 4) Salvage dữ liệu sang NAS: sudo rsync -a /mnt/home/ backup-nas::pc-sec-014/ # 5) Sửa hệ thống nếu cần (chroot): for d in dev proc sys; do sudo mount --rbind /$d /mnt/$d; done sudo chroot /mnt ``` **B. Máy trạm hỏng phần cứng / mất máy**: trình tự = báo cáo sự cố (an ninh thông tin) → thu hồi escrow khóa nếu cần đọc đĩa → cài máy mới từ ISO → khôi phục `/home` từ NAS → enrollment agent mới → trả máy. Máy bị mất vẫn bảo vệ dữ liệu nhờ LUKS (kẻ lạ không có passphrase/keyfile). **C. Control Center sập**: dựng lại từ `os/control-center` (docker compose up) → khôi phục PostgreSQL từ `pg_dump` → đổi `ISEC_ADMIN_PASSWORD` + JWT secret (phòng lộ) → kiểm tra agent tự kết nối lại (agent retry mỗi 5 phút, không cần thao tác trên từng máy). Rèn DR định kỳ: mỗi quý chạy thử một kịch bản (A hoặc C) trong phòng lab và ghi kết quả vào hồ sơ kiểm toán. --- ## 7. Giám sát (Monitoring) ### 7.1. Prometheus — thu metrics từ Control Center Control Center expose metrics chuẩn Prometheus: | Endpoint | Nội dung | |---|---| | `GET /api/health` | sức sống tổng thể (liveness) | | `GET /api/health/ready` | readiness (DB, Redis, dependency) | | `GET /api/health/metrics` | metrics Prometheus (HTTP latency, số endpoint online/offline, agent checkin, lỗi API…) | Cấu hình scrape trên Prometheus của đơn vị: ```yaml # /etc/prometheus/prometheus.yml (thêm) scrape_configs: - job_name: isecos-control-center scheme: https static_configs: - targets: ['isecos.isecurity.vn:443'] metrics_path: /api/health/metrics ``` Alert khuyến nghị khởi đầu: - `up{job="isecos-control-center"} == 0` quá 5 phút → CC mất — nghiêm trọng. - Tỉ lệ endpoint OFFLINE của fleet tăng đột biến (có thể chỉ ra sự cố mạng/switch/chính sách NAC nhầm). - HTTP 5xx rate từ metrics API cao → lỗi backend. - Diskspace/volume Postgres đầy (can thiệp trước khi audit log đứt). ### 7.2. Log aggregation — hiện tại + lộ trình Wazuh **Hiện tại mỗi máy ghi log cục bộ** (đủ cho điều tra tại chỗ): | Log | Nguồn | Dùng khi | |---|---|---| | `journalctl` | systemd toàn bộ + tag `isecos-agent` | vòng đời agent, áp policy | | `ausearch -k isecos_nac / isecos_dlp / isecos_ccagent` | auditd (rules đã bake) | tra cứu thay đổi cấu hình bảo mật | | `/var/log/usbguard/usbguard-audit.log` | usbguard | cắm/rút/whitelist USB | | `/var/log/apt/term.log`, `/var/log/isecos-upgrade.log` | apt/isecos-upgrade | lịch sử cập nhật | | `/var/log/rsyslog` (đã cài rsyslog + logrotate) | hệ thống | log chung | Thu về trung tâm **ngay hôm nay** được bằng rsyslog remote (máy trạm đã có rsyslog): cấu hình `*.* @@log-collector.so.gov.vn:6514` (TLS) trong `/etc/rsyslog.d/60-remote.conf` — push qua policy hoặc bake vào hook đơn vị. **Lộ trình (Phase 4)**: Wazuh manager tại `/logs/` của `isecos.isecurity.vn` — agent Wazuh trên endpoint đẩy alert, Control Center query Wazuh API cho: cảnh báo an ninh tương quan, kết quả tuân thủ CIS (OpenSCAP), file integrity monitoring, active response. Thiết kế tích hợp đã ghi sẵn trong `docs/control-center-spec.md` mục 8.4 — không cần đổi gì trên endpoint hôm nay. --- ## 8. Khắc phục sự cố cho quản trị viên ### 8.1. Bộ lệnh chẩn đoán nhanh trên endpoint ```bash # Tổng quan một máy: isecos-upgrade status && isecos-agent status systemctl --failed # service hỏng journalctl -p err -b # lỗi kể từ boot df -h / /home; free -h # đầy đĩa/RAM systemd-analyze blame | head # boot chậm vì gì timedatectl # NTP (bắt buộc đúng cho TOTP) # Bảo mật: aa-status | grep -c enforce # AppArmor sudo ufw status verbose # firewall sudo nft list ruleset | grep -A5 isecos_nac # chain NAC enforce sudo ausearch -k isecos_dlp --format interpret | tail ``` ### 8.2. Bảng sự cố quản trị thường gặp | # | Triệu chứng | Chẩn đoán & xử lý | |---|---|---| | 1 | **Máy không hiện trên Control Center / OFFLINE liên tục** | Trên máy: `isecos-agent status` → thiếu `CC_URL`? `curl -s https://isecos.isecurity.vn/api/health` thử mạng; `systemctl status isecos-agent.timer`; `/etc/isecos/cc-agent.id` có chưa (enroll fail sẽ hiện trong `journalctl -t isecos-agent`). Sai ENROLL_KEY → đổi ở cả Settings lẫn file conf | | 2 | **Policy bật trên console nhưng máy không áp dụng** | Chờ chu kỳ 5 phút hoặc `sudo isecos-agent once`; xem `journalctl -t isecos-agent` dòng `applied:`; kiểm tra enrollment trùng (máy clone còn `cc-agent.id` của máy mẫu — xóa rồi enroll lại, mục 2.4) | | 3 | **Bật NAC enforce mất SSH hoàn toàn** | Đúng thiết kế default-deny khi chưa 802.1X. Vào console máy: `sudo isecos-nac enforce off`, kiểm tra `isecos-nac status` + chứng thư `/etc/isecos/nac/`, rồi mới bật lại. Kế hoạch lâu dài: cấp cert + RADIUS trước khi enforce (mục 4.2) | | 4 | **`isecos-upgrade check`/`apt update` lỗi GPG hoặc mạng toàn fleet** | Repo chưa đồng bộ xong hoặc mirror lag — thử lại sau; `curl -sI https://apt.isecos.isecurity.vn/dists/mota-x/InRelease`; kiểm tra job repo-sync trên server. Xác thực GPG fail THẬT (không phải lag) = dừng nâng cấp toàn fleet, kiểm tra keyring `/etc/apt/keyrings/isecos.gpg` và kho ký trên server | | 5 | **User bị khóa vì mất điện thoại OTP** | Xác minh danh tính trực tiếp (quy trình đơn vị) → console: `sudo isecos-mfa disable ` → người dùng `isecos-mfa enroll` lại; nhắc in lại mã khôi phục. Nếu nghi ngờ bị lợi dụng mạo danh — đổi mật khẩu luôn | | 6 | **Máy hỏi passphrase đĩa mỗi boot dù đã enroll TPM** | PCR7 đổi (Secure Boot/BIOS vừa sửa) — đúng thiết kế. Sau khi đăng nhập: `sudo isecos-tpm-enroll`. Lặp lại vô cớ: kiểm tra firmware cập nhật tự động, `clevis luks list -d /dev/sda5` xem token còn bind | | 7 | **Check GPG ISO/key phát hành fail** | Đối chiếu fingerprint `33D4 52CF 996B C871 50D2 91AB 00F6 23A3 E6B3 5107` với kênh chính thức nội bộ; ISO sai checksum → tải lại; nghi ngờ key mới thật sự thì xác thực qua kênh out-of-band trước khi import | | 8 | **Endpoint báo đầy đĩa** (`df -h /` >90%) | Dọn an toàn: `sudo journalctl --vacuum-size=500M`, `sudo apt clean`, xóa `/var/log/apt/*.gz` cũ; tìm tập tin lớn: `sudo du -xh / | sort -h | tail -20`. `/home` đầy thì phối hợp người dùng dọn; không xóa gì trong `/var/backups/isecos/` | | 9 | **Máy clone trùng hostname/enrollment gây rối console** | Làm checklist mục 2.4 trên từng máy (machine-id, hostname, `cc-agent.id`), xóa bản trùng trên trang Endpoints | | 10 | **Control Center chậm / lỗi 5xx** | `docker compose logs -f api`; `GET /api/health/ready` xem dependency nào đỏ; kiểm tra Redis/Postgres resource; full mode quá tải → xem xét tách DB ra node riêng (spec mục 9) | --- ## 9. Checklist tăng cường bảo mật cho production Chạy qua checklist này trước khi mở rộng fleet ra production (bổ sung cho những gì ISO đã hardening sẵn: CIS baseline, AppArmor, auditd, ufw, unattended-upgrades, LUKS2+TPM2, Secure Boot shim): | # | Hạng mục | Việc cần làm | Trạng thái | |---|---|---|---| | 1 | **Tài khoản console** | Đổi `ISEC_ADMIN_EMAIL`/`ISEC_ADMIN_PASSWORD` mặc định; mỗi admin một tài khoản riêng; bật MFA cho chính console khi có | ☐ | | 2 | **Khóa enroll** | Đổi `ISEC_AGENT_ENROLL_KEY` khỏi giá trị lab; luân chuyển theo quý; chỉ cấp cho người dựng máy | ☐ | | 3 | **RBAC** | Gán vai trò đúng chức danh; KHÔNG dùng superadmin cho việc thường ngày; rà soát quý | ☐ | | 4 | **TLS** | Chứng thư `isecos.isecurity.vn` từ CA nội bộ/Let's Encrypt; TLS 1.3; chỉ mở 443 ra ngoài | ☐ | | 5 | **mTLS agent** (khi có CA) | Chuyển agent↔CC sang client cert theo enrollment (spec 6.1) thay Bearer key | ☐ | | 6 | **Escrow LUKS** | 100% máy có keyslot 1 + header backup trong két hai người kiểm soát; sổ theo dõi xuất/nhập phong bì | ☐ | | 7 | **Sao lưu** | Đã chạy và **đã thử khôi phục** (mục 6.3) — sao lưu chưa test = chưa có sao lưu | ☐ | | 8 | **NTP nội bộ** | Máy trạm sync NTP công vụ (TOTP + log timestamp); kiểm tra `timedatectl` định kỳ | ☐ | | 9 | **Kho GPG phát hành** | Key ký ISO/repo trong HSM hoặc máy riêng offline; quy trình ký hai người; fingerprint công bố nội bộ | ☐ | | 10 | **Kiểm tra CIS** | Chạy OpenSCAP CIS Debian benchmark trên máy mẫu mỗi bản phát hành; lưu kết quả hồ sơ chứng nhận | ☐ | | 11 | **AppArmor** | Rà `aa-status`: profile enforce cho chromium/thunderbird/remmina/keepassxc/vlc/gochat đang bật; không chuyển enforce→complain ngoài lab | ☐ | | 12 | **Chu kỳ vá** | Cam kết SLA vá bảo mật (khuyến nghị ≤72h với critical); theo dõi Debian security tracker qua mirror sync | ☐ | | 13 | **Thanh lọc USB** | Rà whitelist `isecos-dlp` định kỳ; thu hồi USB không còn sử dụng | ☐ | | 14 | **Audit retention** | Cấu hình retention AuditLog + xuất CSV lưu kho lưu trữ theo quy định (≥ quy định lưu trữ hồ sơ của ngành) | ☐ | | 15 | **Ổ cứng/máy rời** | Quy trình thu hồi máy: wipe an toàn (`cryptsetup luksErase`) trước khi xuất kho/thanh lý | ☐ | | 16 | **Phản ứng sự cố** | Phân công trực POC; số liên hệ nội bộ; bài tập sự cố mỗi quý (kèm kịch bản mục 6.3) | ☐ | --- ## 10. Cấu hình mạng — Firewall, VPN, Proxy ### 10.1. Firewall (ufw) **Nguyên tắc fleet**: máy trạm **không mở dịch vụ vào** (default deny incoming / allow outgoing — đã bake); máy chủ profile server cho phép SSH: ```bash # Kiểm tra hiện trạng: sudo ufw status verbose # Server iSecOS (profile server đã bake sẵn): sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 22/tcp sudo ufw --force enable # Khoanh vùng SSH theo nguồn (khuyến nghị — chỉ dải mạng quản trị): sudo ufw delete allow 22/tcp && sudo ufw allow from 10.0.9.0/24 to any port 22 proto tcp # Mở dịch vụ nội bộ cụ thể (ví dụ web nội bộ trên server đơn vị): sudo ufw allow from 10.0.0.0/8 to any port 443 proto tcp ``` Chú ý tương tác **ufw ↔ NAC**: khi `isecos-nac enforce on`, chain nftables `isecos_nac` **độc lập** với ufw và default-deny output — gỡ rule ufw không đưa máy ra khỏi kiểm soát NAC. Muốn máy không bị cô lập: tắt enforce (`isecos-nac enforce off`) hoặc hoàn tất 802.1X. ### 10.2. VPN **Endpoint làm client VPN** (đi vào mạng cơ quan từ xa): ```bash # OpenVPN (tệp .ovpn do đơn vị cấp): sudo apt install network-manager-openvpn network-manager-openvpn-gnome # từ kho nội bộ nmcli connection import type openvpn file ./canh-so.ovpn nmcli connection up canh-so # WireGuard (hỗ trợ native trong NetworkManager): nmcli connection import type wireguard file ./wg0.conf nmcli connection up wg0 ``` Sau đó bật tự động kết nối: `nmcli connection modify canh-so connection.autoconnect yes`. Khuyến nghị: cấu hình VPN qua policy/gói nội bộ thay vì cài tay từng máy; split-tunnel chỉ route dải mạng công vụ để GoChat/Chromium nội bộ hoạt động mà không dồn cả internet qua VPN. **Site-to-site / truy cập ngược vào fleet**: không SSH trực tiếp vào máy trạm từ ngoài (không mở cổng vào). Mẫu hỗ trợ từ xa: dùng trang **Điều khiển từ xa** của Control Center (phiên có ghi hình + audit), hoặc agent kích hoạt kết nối ngược khi cần (roadmap). ### 10.3. Proxy **apt qua proxy** (khi server repo phải đi qua proxy đầu ra): ```bash # /etc/apt/apt.conf.d/95proxy Acquire::http::Proxy "http://proxy.so.gov.vn:3128"; Acquire::https::Proxy "http://proxy.so.gov.vn:3128"; ``` **Biến môi trường proxy** cho agent/curl (đẩy qua policy khi cần): ```bash # /etc/systemd/system/isecos-agent.service.d/proxy.conf [Service] Environment="HTTPS_PROXY=http://proxy.so.gov.vn:3128" Environment="NO_PROXY=isecos.isecurity.vn,10.0.0.0/8,localhost" ``` Lưu ý: NO_PROXY nên **loại trừ `isecos.isecurity.vn`** nếu server nằm trong mạng nội bộ — đi thẳng cho nhanh và tránh phụ thuộc proxy. **Proxy cho Chromium** (policy doanh nghiệp, quản lý tập trung): ```json // /etc/chromium/policies/managed/isecos-proxy.json (trên endpoint) { "ProxyMode": "fixed_servers", "ProxyServer": "http://proxy.so.gov.vn:3128", "ProxyBypassList": "isecos.isecurity.vn,10.0.0.0/8,*.so.gov.vn" } ``` Người dùng kiểm tra bằng `chromium://policy` — chính sách managed không thể tắt bởi người dùng. ### 10.4. DNS và NTP nội bộ - **DNS**: endpoint dùng DNS nội bộ (DHCP của mạng công vụ hoặc cấu hình tĩnh qua NetworkManager). Khi NAC enforce bật, chỉ DNS server CA nội bộ được đi qua chain `isecos_nac` — đảm bảo máy đổi sang DNS nội bộ khi ở chế độ này. - **NTP** (bắt buộc cho TOTP + log): chrony đã cài sẵn; trỏ về NTP công vụ: ```bash # /etc/chrony/sources.d/isecos.sources server ntp.so.gov.vn iburst sudo systemctl restart chrony && chronyc sources -v ``` --- *Phụ lục — CLI iSecOS trên endpoint: `isecos-upgrade` (status/check/apply) · `isecos-agent` (once/status) · `isecos-mfa` (enroll/status/disable/repair) · `isecos-nac` (status/enforce) · `isecos-dlp` (status/allow-usb-storage/ deny-all-storage) · `isecos-tpm-enroll`. Mọi lệnh có `--help`.* *Tài liệu: iSecOS 1.0-alpha7 (MotaX) — Admin Guide. Góp ý tài liệu / báo sự cố: isecos@isecurity.vn*