2015-08-09 20 views
8

Giả sử tôi muốn thiết lập lược đồ xác thực của người nghèo cho một dịch vụ mạng đơn giản.Sử dụng các khóa ssh để xác thực trong các ứng dụng khác?

Tôi không muốn bận tâm với xác thực tên người dùng/mật khẩu, vì đơn giản tôi chỉ muốn có danh sách khóa công khai trong ứng dụng của tôi và bất kỳ ai chứng minh họ là chủ sở hữu của khóa đó đều có thể sử dụng dịch vụ của tôi.

Vì mục đích ứng dụng của tôi, nó sẽ đơn giản hóa quá trình xác thực vì tất cả người dùng của tôi đều nằm trong mạng cục bộ và tất cả đều sử dụng Unix. Bất cứ lúc nào tôi onboard một người dùng mới tôi chỉ có thể yêu cầu họ cho khóa công khai của họ ssh.

Có cách nào đơn giản để tái sử dụng cơ chế liên quan đến xác thực khóa công khai ssh trong ứng dụng không phải là ssh không? Đây là câu hỏi được dự định là ngôn ngữ bất khả tri.

Trả lời

2

Nếu bạn chỉ có danh sách người dùng có thể sử dụng ứng dụng của bạn và bạn không cần phải xem ai đã làm gì.

Bạn có thể thiết lập máy chủ của bạn để nó lắng nghe chỉ trên localhost (127,1) hơn là 0.0.0.0, và cung cấp một sshd hạn chế, chuyển tiếp các cổng cần thiết để kết nối với các ứng dụng

~/.ssh/authorized_keys sẽ cung cấp một danh sách các các khóa được ủy quyền có thể được sử dụng.

ssh -I private_key_file <hostname> -L 3000:localhost:3000 

Đối với một thiết lập cơ bản và giúp với cấu hình sshd của bạn, hãy kiểm tra câu trả lời này: https://askubuntu.com/questions/48129/how-to-create-a-restricted-ssh-user-for-port-forwarding

Lưu ý: Được cảnh báo rằng nếu bạn không khóa nó xuống, bất kỳ người sử dụng sẽ có đầy đủ truy cập vỏ trên hộp của bạn nơi máy được lưu trữ.

1

Giả sử bạn đang nói về ứng dụng dựa trên web. Những gì bạn đang tìm kiếm là X.509 Chứng chỉ ứng dụng khách (1.3.6.1.5.5.7.3.2). Điều này sẽ cho phép bạn xác định người dùng riêng lẻ với ứng dụng của bạn.

Những vấn đề này phải đối mặt với cùng một vấn đề thường gặp phải khi xem xét phân phối khóa. Mà thường được coi là một vấn đề khó khăn.

Nếu bạn muốn đi xuống con đường này, đây là những gì bạn cần làm.

  • Tạo một chứng chỉ gốc (một lần)
  • cài đặt máy chủ web với các module thích hợp để phân tích các chứng chỉ (nginx/apache)
  • Tạo một giấy chứng nhận cho mỗi người dùng (openssl)
  • Tải cerificiate từ trung máy chủ. (Có thể sử dụng phím quán rượu ssh của họ vào đây)
  • Cài đặt cert x509 tại địa phương (OS phụ thuộc)

Về phía server, bạn sẽ cần phải xử lý các CERT như một phần của máy chủ web (nginx hay apache nên có các mô-đun để thực hiện việc này) và sau đó chuyển tên vào ứng dụng của bạn dưới dạng trường tiêu đề mà sau đó bạn có thể xử lý nội bộ.

Đây là giải pháp bảo mật tốt hơn nhiều so với tên người dùng và mật khẩu, tuy nhiên phức tạp vì vấn đề phân phối khóa. Hầu hết mọi người sẽ không bận tâm vì trong hầu hết các ứng dụng, nó đủ dễ dàng để tích hợp thông tin đăng nhập với LDAP hoặc bán kính.

2

Một lỗi bẩn từ đầu của tôi: bạn có thể gói ứng dụng để nó tạo một đường hầm SSH thực tế từ máy chủ cục bộ đến máy chủ của bạn không và sử dụng nó cho?

Các vấn đề liên quan