- Cloudflare đã phát hành OPKSSH (OpenPubkey SSH) dưới dạng mã nguồn mở
- OPKSSH cho phép tự động tạo và sử dụng khóa SSH bằng đăng nhập SSO dựa trên OpenID Connect
- Người dùng không còn cần tự quản lý khóa công khai/khóa riêng SSH hoặc triển khai chúng lên máy chủ
- Có thể áp dụng phương thức truy cập dựa trên định danh cho xác thực SSH mà không cần sửa đổi giao thức SSH
Giới thiệu bối cảnh về SSO và OpenID Connect
- SSO (Single Sign-On) là phương thức xác thực cho phép người dùng truy cập nhiều hệ thống sau khi đăng nhập một lần
- OpenID Connect là giao thức chủ yếu được dùng cho SSO, phát hành ID token chứa thông tin người dùng
- ID token chứa thông tin như email người dùng, nhưng không bao gồm khóa công khai → vì vậy không thể dùng trực tiếp cho các giao thức bảo mật như SSH
Giới thiệu OpenPubkey
- OpenPubkey đưa khóa công khai của người dùng vào ID token để tạo thành PK Token
- Nhờ đó có thể xác thực rằng “Google xác nhận người dùng alice@example.com đang sử dụng khóa công khai 0x123”
- Có thể áp dụng mà không cần thay đổi giao thức OpenID Connect hiện có
Vai trò và ưu điểm của OPKSSH
- OPKSSH tích hợp OpenPubkey vào SSH để tạo khóa SSH dùng một lần thông qua đăng nhập SSO
- Hoạt động mà không cần thay đổi giao thức SSH hiện có, và chỉ cần thêm hai dòng vào tệp cấu hình là có thể áp dụng
-
Tăng cường bảo mật
- Sử dụng khóa SSH dùng một lần thay cho khóa dài hạn → giảm thiệt hại khi lộ khóa và có thể giới hạn vòng đời khóa
- Mặc định hết hạn sau 24 giờ, có thể thay đổi bằng cấu hình
-
Cải thiện sự tiện lợi cho người dùng
- Chỉ cần chạy lệnh
opkssh login là có thể tạo khóa SSH và đăng nhập
- Không cần sao chép khóa riêng SSH sang nhiều máy tính
-
Tăng khả năng quan sát trong quản trị
- Dựa trên địa chỉ email thay vì truy cập dựa trên khóa → có thể theo dõi rõ ai là người dùng
- Chỉ cần thêm email như
bob@example.com vào tệp cho phép truy cập là có thể cấp quyền ngay
Cách OPKSSH hoạt động
- Khi người dùng chạy
opkssh login:
- Tạo khóa công khai/khóa riêng SSH tạm thời
- Đăng nhập vào OpenID Provider (như Google) qua trình duyệt
- Khi thành công, tạo PK Token chứa khóa công khai và danh tính người dùng thông qua giao thức OpenPubkey
- Lưu tệp khóa công khai có chứa PK Token và tệp khóa riêng trong thư mục
.ssh
- Khi kết nối SSH:
- SSH client gửi khóa công khai có chứa PK Token tới máy chủ SSH
- Máy chủ dùng OpenPubkey verifier được cấu hình qua
AuthorizedKeysCommand để kiểm tra tính hợp lệ của khóa công khai
- Nếu PK Token hợp lệ và email nằm trong danh sách được phép truy cập thì cho phép đăng nhập
Giải quyết các vấn đề kỹ thuật
- Truyền PK Token: dùng trường mở rộng của chứng chỉ SSH để nhúng PK Token vào khóa công khai SSH
- Kiểm tra tính hợp lệ trên máy chủ: dùng
AuthorizedKeysCommand để ủy quyền việc kiểm tra tính hợp lệ của khóa công khai cho chương trình tùy biến (OpenPubkey verifier)
- Xác minh tính khớp của khóa công khai: kiểm tra xem khóa công khai bảo vệ phiên SSH có khớp với khóa trong PK Token hay không
Mã nguồn mở và ý nghĩa của nó
- OPKSSH được công bố trên GitHub theo giấy phép Apache 2.0
- Trước đây nó chỉ ở mức nguyên mẫu, nhưng hiện nay đã cung cấp bản phát hành ổn định với đầy đủ chức năng SSH
- Cloudflare không duy trì hoặc bảo đảm dự án này, nhưng đã đóng góp mã cho cộng đồng OpenPubkey
Các cải tiến chính
- Bổ sung chức năng SSH sẵn sàng cho sử dụng thực tế
- Cung cấp script cài đặt tự động
- Bao gồm công cụ cấu hình được cải tiến
1 bình luận
Ý kiến trên Hacker News
step-castep-cacó thể giao tiếp với các hệ thống OAUTH/OIDC và các nhà cung cấp đám mâyssh-keygenmặc định, nên thuận lợi hơn từ góc nhìn của quản trị viênstdiotừ máy chủ về máy khách, nhưng cung cấp thêm các lệnh bổ sung