Quản lý truy cập tập trung với Teleport: Hướng dẫn bảo mật SSH, Kubernetes và Cơ sở dữ liệu

Security tutorial - IT technology blog
Security tutorial - IT technology blog

Quản lý hạ tầng không còn là “cơn ác mộng” quản lý khóa

Quản lý SSH key cho 5 máy chủ thì dễ. Nhưng quản lý cho 50 máy chủ—trong khi phải xoay xở với các cụm Kubernetes và cơ sở dữ liệu production—mọi thứ sẽ bắt đầu trở nên mất kiểm soát. Trong tháng đầu tiên làm quản trị hệ thống (sysadmin), tôi đã mất gần 20 giờ chỉ để kiểm tra các file authorized_keys nhằm xóa những người đã nghỉ việc từ nhiều tháng trước. Đó không chỉ là sự tẻ nhạt; đó còn là một lỗ hổng bảo mật nghiêm trọng.

Teleport giải quyết vấn đề này bằng cách thay thế các khóa vĩnh viễn bằng các chứng chỉ ngắn hạn. Hãy coi nó như một mặt phẳng truy cập thống nhất (unified access plane). Nó đóng vai trò như một cánh cửa bảo mật cho toàn bộ hệ thống của bạn, yêu cầu Xác thực đa yếu tố (MFA) cho mọi phiên làm việc và cung cấp lịch sử kiểm tra (audit trail) rõ ràng về việc ai đã làm gì và khi nào.

Bắt đầu nhanh: Cài đặt và vận hành Teleport trong 5 phút

Chúng ta sẽ bắt đầu bằng việc cài đặt Teleport trên một node Linux duy nhất. Instance này sẽ đảm nhận mọi thứ: Dịch vụ xác thực (Auth Service – CA), Proxy (gateway) và một SSH Node (mục tiêu).

1. Cài đặt Teleport Binary

Teleport hỗ trợ hầu hết các bản phân phối Linux hiện đại. Nếu bạn đang dùng Ubuntu hoặc Debian, hãy sử dụng các lệnh sau để tải từ kho lưu trữ chính thức:

sudo curl https://apt.releases.teleport.dev/gpg \
  -o /usr/share/keyrings/teleport-archive-keyring.asc

source /etc/os-release
echo "deb [signed-by=/usr/share/keyrings/teleport-archive-keyring.asc] \
  https://apt.releases.teleport.dev/${ID?} ${VERSION_CODENAME?} stable/v15" \
  | sudo tee /etc/apt/sources.list.d/teleport.list > /dev/null

sudo apt update
sudo apt install teleport

2. Khởi tạo cấu hình

Bạn cần một file cấu hình hợp lệ để xác định cách Teleport hoạt động. Nếu bạn có tên miền trỏ về máy chủ của mình, bạn có thể tự động thiết lập SSL với Let’s Encrypt.

# Thay thế teleport.example.com bằng tên miền hoặc IP công cộng của bạn
sudo teleport configure --acme [email protected] --cluster-name=teleport.example.com > /etc/teleport.yaml

3. Khởi chạy dịch vụ

Bây giờ, hãy kích hoạt daemon để nó tự động khởi động lại sau khi reboot.

sudo systemctl enable teleport
sudo systemctl start teleport

4. Tạo tài khoản Admin

Cuối cùng, chúng ta cần tạo tài khoản đầu tiên. Lệnh này sẽ tạo ra một liên kết đăng ký một lần và hết hạn sau một giờ.

sudo tctl users add admin --roles=editor,access --logins=root,ubuntu,ec2-user

Mở liên kết đó trong trình duyệt để thiết lập MFA—tôi khuyên bạn nên dùng YubiKey hoặc Google Authenticator. Đối với mật khẩu chính (master password), tôi thường dùng trình tạo mật khẩu trên trình duyệt tại toolcraft.app/vi/tools/security/password-generator. Nó rất nhanh, chạy cục bộ trên trình duyệt và đảm bảo bạn không bắt đầu hệ thống của mình với một thông tin đăng nhập yếu.

Sự thay đổi về kiến trúc: Sử dụng chứng chỉ thay vì khóa

Teleport không chỉ là một lớp bọc SSH; nó là một tư duy hoàn toàn mới về cách chúng ta cấp quyền truy cập. Trong một thiết lập truyền thống, nếu một chiếc laptop bị mất cắp, các khóa private key của nó vẫn hoạt động cho đến khi bạn tìm và thu hồi chúng một cách thủ công. Đó chính là mầm mống cho những thảm họa bảo mật.

Cách thức hoạt động của chứng chỉ ngắn hạn

Với Teleport, bạn chạy lệnh tsh login và xác thực bằng MFA. Sau đó, Dịch vụ xác thực (Auth Service) sẽ cấp cho bạn một chứng chỉ hết hạn sau khoảng 8 giờ. Khi bạn kết nối với máy chủ, node đó sẽ kiểm tra chứng chỉ dựa trên CA đáng tin cậy của nó. Khi hết 8 giờ, chứng chỉ đó trở nên vô dụng. Không cần dọn dẹp, không còn các khóa bị bỏ quên và không cần thu hồi thủ công.

Ba thành phần chính

  • Auth Service: Bộ não của hệ thống. Nó quản lý Certificate Authority (CA) và thực thi các chính sách truy cập của bạn.
  • Proxy Service: Người gác cổng. Nó xử lý toàn bộ lưu lượng truy cập đi vào. Vì Proxy tạo đường truyền (tunnel) các phiên làm việc tới các node nội bộ, máy chủ của bạn không cần phải công khai ra internet.
  • Node Service: Agent. Nó chạy trên các mục tiêu (máy chủ, K8s hoặc DB) và duy trì kết nối an toàn hướng ra ngoài tới Proxy.

Khả năng nhận diện giao thức

Teleport thực sự hiểu lưu lượng truy cập đi qua nó. Đối với SSH, nó ghi lại đầu ra của terminal như một bộ phim. Với Kubernetes, nó ghi lại các lệnh kubectl. Với Cơ sở dữ liệu, nó ghi lại các truy vấn SQL thô. Đây là khả năng hiển thị chuyên sâu mà các SSH tunnel tiêu chuẩn đơn giản là không thể cung cấp.

Bảo vệ cơ sở dữ liệu mà không cần chia sẻ thông tin đăng nhập

Truy cập cơ sở dữ liệu (Database Access) là một trong những tính năng tốt nhất của Teleport. Bạn có thể cấp quyền cho một lập trình viên truy cập vào instance PostgreSQL production mà không cần cung cấp username hoặc password của cơ sở dữ liệu. Mọi thứ đều được xử lý thông qua chứng chỉ.

1. Thêm cơ sở dữ liệu vào Teleport

Cập nhật file teleport.yaml trên máy chủ nơi đặt cơ sở dữ liệu (hoặc một node gateway):

db_service:
  enabled: "yes"
  databases:
    - name: "prod-db"
      description: "Cơ sở dữ liệu PostgreSQL Production chính"
      protocol: "postgres"
      uri: "localhost:5432"

Khởi động lại dịch vụ để áp dụng thay đổi. Sau đó, bạn sẽ cấu hình cơ sở dữ liệu để tin tưởng CA của Teleport cho việc xác thực.

2. Truy cập DB thông qua CLI

Từ terminal cục bộ của bạn, quy trình làm việc rất mượt mà:

tsh login --proxy=teleport.example.com
tsh db login prod-db

# Kết nối bằng các công cụ cục bộ tiêu chuẩn của bạn
tsh db connect prod-db

Teleport sẽ khởi tạo một proxy cục bộ, xử lý các chứng chỉ ở chế độ nền và cho phép bạn sử dụng psql như bình thường. Trong khi đó, mọi truy vấn bạn chạy đều được ghi lại để phục vụ việc tuân thủ (compliance).

Mẹo chuyên nghiệp cho môi trường Production

Sau một thời gian vận hành Teleport, ba thói quen sau đây sẽ giúp bạn tránh được nhiều rắc rối.

Xem lại các bản ghi: Giao diện Web không chỉ để cho đẹp. Nếu một file cấu hình bị lỗi lúc 3 giờ sáng, bạn có thể xem lại bản ghi phiên làm việc của người cuối cùng đăng nhập. Đó là cách nhanh nhất để thấy chính xác điều gì đã xảy ra mà không cần phải đoán mò.

Tổ chức bằng Label: Đừng chỉ liệt kê các node theo hostname. Hãy sử dụng các label như env: production hoặc team: devops. Điều này cho phép bạn tạo các quy tắc RBAC thông minh, ví dụ: “Lập trình viên Backend chỉ có thể truy cập các node không phải môi trường production.”

Luôn cập nhật: Teleport phát triển rất nhanh. Họ tung ra các bản cập nhật tính năng và bảo mật quan trọng vài tháng một lần. Tôi thường duy trì ở phiên bản minor ngay trước bản mới nhất (ví dụ: dùng v15.1 khi v15.2 ra mắt) để đảm bảo tính ổn định trong khi vẫn được vá lỗi kịp thời.

Chuyển sang Teleport giúp thay đổi tư duy bảo mật của bạn từ “tin tưởng mạng lưới” sang “tin tưởng định danh”. Bạn sẽ mất thêm vài phút để cấu hình so với một SSH key cơ bản, nhưng sự an tâm—khi biết chính xác ai đang chạm vào hạ tầng của mình—hoàn toàn xứng đáng với công sức bỏ ra.

Share: