Thiết lập SSH an toàn với Kryptonite trên Cloud Server của ViCloud

1 năm trước

Thiết lập SSH an toàn với Kryptonite trên Cloud Server của ViCloud 

Mở đầu

 

SSH(Shell Secure) là cách cơ bản nhất để kết nối và điều khiển Linux server. Việc bảo mật giao thức này thực chất là để duy trì và bảo vệ cơ sở hạ tầng mạng. Hãy thêm vào một public key cho danh sách key được cấp quyền trên remote server, 

Điều nan giải nhất là làm thế nào để lưu trữ private key của bạn một cách cẩn thận.

Bình thường, những nhà phát triển lưu những private key của họ ở địa chỉ  ~/.ssh . Tuy nhiên, bạn có thể dễ dàng truy cập vào private key của mình với lệnh cat ~/.ssh/id_rsa. Tất cả phần mềm trên thiết bị cũng có thể truy cập vào chúng kể cả khi chúng bị mã hóa bằng mật khẩu.

Một giải pháp cho vấn đề này là thêm vào một yếu tố bảo mật thứ hai, chằng hạn như MFA( multi-factor authentication, cơ chế xác thực sử dụng nhiều yếu tố  ). Nhược điểm của cách này nằm ở 2 yếu tố: Chi phí và tính khả dụng. Với mọi server, bạn phải cấu hình OpenSSH server để sử dụng module OATH-TOTP PAM và load lại toàn bộ yếu tố bảo mật vào, khiến quá trình xử lí tốn rất nhiều thời gian và tiềm ẩn nhiều lỗi. Hơn nữa mỗi lần kết nối tới server, bạn phải mở một ứng dụng trên điện thoại, lấy mã xác thực rồi xác nhận trên terminal, điều này mang đến sự bất tiện.

Để tránh những nhược điểm của việc cài MFA, ta có thể sử dụng HSMs( USB Hardware Security Modules, là những thiết bị USB loại nhỏ lưu trữ thông tin bảo mật ),như NitroKey hay YubiKey để tạo ra và lưu trữ những cặp public-private key. Mỗi khi cần SSH đến server, kết nối USB này với máy tính rồi bấm vào nút trên USB, và bạn đã sẵn sàng để truy cập.

Nhưng HSM thường khá đắt, khoảng 50$(!),hơn nữa bạn cần mang chúng theo mỗi khi cần SSH đến server, và mỗi lần truy cập bạn phải cắm nó vào máy tính và bấm nút, điều này cũng khá bất tiện. Nó cũng không có màn hình để hiển thị, nên bạn cũng không biết cụ thể mình đang chấp thuận phiên đăng nhập nào vào, cũng như mình vừa xác nhận những gì. 

Kryptonite là một giải pháp mới để bảo vệ SSH private key của bạn, vì nó miễn phí, dễ cài đặt và sử dụng, giao diện thân thiện và có thêm nhiều lớp bảo mật bên trong. Hơn nữa nó không yêu cầu thay đổi server-side và cho phép bạn chấp thuận yêu cầu đăng nhập qua thông báo đẩy mà không cần mở ứng dụng trên điện thoại. Những host đã biết sẽ luôn được đảm bảo kết nối với bạn dù bạn sử dụng thiết bị nào để SSH đến server nào.

Bài hướng dẫn này sẽ giúp bạn tạo ra một cặp key SSH với Kryptonite trên điện thoại, ghép đôi điện thoai của bạn với máy tính, và sử dụng Kryptonite để SSH đến Cloud Server của ViCloud

Yêu cầu bắt buộc:

Bạn cần có:

  • Một Cloud Server sử dụng bất cứ nền tảng Linux nào tại ViCloud.
  • Smartphone dùng iOS 9.1 hoặc android 6.0 trở lên.
  • Máy tính cá nhân chạy macOS (10.10 trở lên),Ubuntu, Debian, RHEL, CentOS, Fedora, hoặc Kali Linux.
 

Bước 1 — Tạo Kryptonite Key Pair

 

Đầu tiên, tải về Kryptonite trên get.krypt.co vào điện thoại của bạn.

Khi cài xong, mở app và nhấn vào Generate Key Pair để tạo Kryptonite SSH Key Paircủa bạn.

Tiếp theo, cài giao diện dòng lệnh của Kryptonite

 

Bước 2 —Cài đặt kr

Bước tiếp theo là cài đặt giao diện dòng lệnh trên máy tính cá nhân của bạn để cho phép SSH xác thực với các key trên Kryptonite, ở đây ta cài đặt với lệnh curl

Vì lí do bảo mật, nếu muốn kiểm tra lại gói cài đặt trước khi cài, bạn có thể chạy lệnh curl https://krypt.co/kr > install_kr . Tham khảo thêm trong thư mục kr nếu muốn biết thêm chi tiết

Cho phép Kryptonite hiển thị thông báo đẩy, để ứng dụng có thể gửi cho bạn thông báo về yêu cầu đăng nhập thông qua thông báo.

Bước tiếp theo là ghép đôi Kryptonite với máy tính.

 

Bước 3 — Ghép đôi Kryptonite với máy tính

Sau khi kr được cài gõ lệnh:

kr pair
  •  

Một QR code sẽ xuất hiện ở terminal yêu cầu truy cập. Nếu màn hình quá nhỏ, phóng to lên để thấy cả đoạn mã.

Trong ứng dụng Kryptonite, chọn Allow Camera Access ở dưới màn hình. Khi camere xuất hiện, quét mã QR trên terminal ở trên. Sau vài giây, Kryptonite sẽ hiển thị một thông báo và terminal sẽ in ra Kryptonite SSH public key của bạn.

 

Test lại quá trình bằng Kryptonite.

 

Bước 4 — Kiểm tra SSH với Kryptonite

Thử SSH tới server me.krypt.co 

sdssh me.krypt.co

 

Chú ý vào thông báo xuất hiện trên Kryptonite yêu cầu bạn cho phép một lần duyệt SSH với 3 lựa chọn:

  • Allow Once : Chỉ cho phép truy cập một lần vào me.krypt.co
  • Allow for 1 hour cho phép mọi yêu cầu SSH đến server từ máy tính trong 1 giờ. Bạn vẫn nhận được thông báo khi truy cập được thực hiện nhưng không cần phải xác nhận.
  • Reject từ chối yêu cầu và phiên đăng nhập SSH thất bại.

Chọn Allow Once, một phiên đăng nhập SSH thành công sẽ được hiển thị.

Nếu bạn khóa điện thoại và thử SSH vào me.krypt.co một lần nữa, Kryptonite sẽ gửi một thông báo đẩy cho thiết bị của bạn với dòng lệnh yêu cầu truy cập từ màn hình khóa.

 

Bước 5 — Thêm Public key của bạn vào một Cloud Server 

 

Công cụ dòng lệnh kr có thể được sử dụng để thêm Kryptonite public key vào một Cloud Server đang chạy mà bạn có thể truy cập thông qua local SSH key hoặc mật khẩu.

Chạy lệnh sau để thêm Kryptonite public key vào file người dùng được truy cập của Cloud Server,chắc chắn rằng bạn đang nhập đúng tên username và IP Cloud Server của bạn.

$ kr add user@your_server_ip

Thử SSH vào server để kiểm tra:

$ ssh user@your_server_ip

Bạn sẽ nhận được một  yêu cầu SSH trên điên thoại của mình.

 

Tổng kết

Qua bài viết này, bạn đã học được cách cài đặt Kryptonite và thêm Kryptonite public key của mình vào ViCloud , giờ đây bạn có thể SSH đến mọi Cloud Server của mình từ bất kì máy tính được ghép cặp nào.

Những private key của bạn được lưu trữ an toàn trong điện thoại của bạn. Khi chấp nhận yêu cầu, private key được dùng để tạo một dạng mã đăng nhập SSH trên thết bị của bạn. Mã này được gửi trở lại máy tính để hoàn tất xác thực SSH.

Cám ơn bạn đã đọc bài viết tại cộng đồng ViCloud Community, vui lòng comment bên dưới để cho nhận xét!