Bạn thuê VPS tại datacenter, thì thực tế sysAdmin của datacenter luôn có quyền cao nhất (ở mức hypervisor, host machine, network, storage) → tức là nếu họ muốn, họ có thể can thiệp. Nhưng bạn có thể giảm rủi ro tối đa để việc đọc code hay truy cập vào server trở nên rất khó.
1. Hạn chế quyền truy cập từ bên ngoài
- Đổi port SSH mặc định (22 → ví dụ 2222 hoặc ngẫu nhiên).
- Tắt root login qua SSH, chỉ cho phép user thường + sudo.
- Bật xác thực bằng SSH key thay vì password.
- Dùng fail2ban / firewall (ufw/iptables) để chặn brute-force login.
- Chỉ whitelist IP cá nhân của bạn để vào được VPS.
2. Mã hóa dữ liệu và code
- Encrypt code/data at rest:
- Dùng LUKS, VeraCrypt để tạo partition/container mã hóa → chỉ khi boot và nhập passphrase thì mới giải mã.
- Nếu sysAdmin reboot máy mà không có passphrase thì chỉ thấy dữ liệu dạng binary mã hóa.
- Mã hóa database (MySQL, Postgres) bằng Transparent Data Encryption (TDE) hoặc thủ công bằng app-level encryption.
- Với file quan trọng: nén + mã hóa bằng
gpg
hoặc openssl
.
3. Làm code “khó đọc”
- Nếu bạn deploy app cho production, có thể obfuscate code (nén, scramble, strip debug info).
- Với PHP → dùng
ionCube
, Zend Guard
.
- Với Python → dùng
pyarmor
, cython
.
- Với JS → minify + obfuscate (UglifyJS, Obfuscator.io).
4. Giới hạn sysAdmin của VPS
- Dùng full disk encryption (LUKS) ngay từ khi cài OS. SysAdmin có thể “stop/start/reinstall” VPS nhưng không mount được partition nếu không có passphrase.
- Không để mã nguồn thẳng trên VPS, thay vào đó:
- Build app → deploy bản compiled.
- Sensitive config (API key, secret) để trong env file đã mã hóa, chỉ giải mã khi chạy app.
5. Giải pháp cao hơn
- Thuê VPS từ provider tin cậy (nơi chính sách nghiêm, không can thiệp).
- Tự dựng dedicated server (colocation) → lúc này bạn cầm ổ cứng, sysAdmin DC chỉ hỗ trợ phần cứng.
- Dùng zero-trust model: dữ liệu nhạy cảm chỉ giải mã ở client-side, server chỉ xử lý dữ liệu đã mã hóa.
👉 Tóm lại:
- Bạn không thể ngăn tuyệt đối sysAdmin DC, vì họ luôn có quyền root ở tầng hạ tầng.
- Nhưng bạn có thể mã hóa toàn bộ + khóa truy cập SSH → nếu họ muốn đọc code thì sẽ phải bẻ khóa AES/GPG/LUKS, việc này cực kỳ khó nếu pass mạnh.