Việc đăng nhập dùng khóa SSH qua VPN không có nghĩa là khóa riêng đã được giao cho nhà điều hành mạng, và sự trấn an đó hẹp hơn những gì người ta nghe. Xác thực khóa công khai gửi một khóa công khai và một chữ ký do máy khách tạo cục bộ. Chuyển tiếp agent là một cách bố trí khác với mức phơi nhiễm khác, và nó có thể để lại một khả năng xác thực dùng được trên máy mà bạn không kiểm soát. Phản ứng bạn phải có tùy thuộc vào việc điều nào trong hai điều đó thực sự đã xảy ra.

Xác thực khóa công khai gửi gì

Trong phương thức khóa công khai tiêu chuẩn, máy khách đưa ra một khóa công khai, máy chủ quyết định có chấp nhận khóa đó hay không, và máy khách ký một thử thách bằng khóa riêng, khóa này ở lại trong tệp hoặc trong agent của nó. Thứ đi qua mạng là khóa công khai và chữ ký sinh ra. Không có gì trong trao đổi đó đòi hỏi máy chủ, đường hầm hay bất kỳ ai trên đường phải giữ vật liệu riêng.

Đặc tả xác thực định nghĩa bằng chứng đó, và khóa riêng không phải là một trường trong yêu cầu.

Đó là một phát biểu về giao thức, không phải giấy chứng nhận tư cách cho mọi điểm cuối liên quan. Việc kiểm tra danh tính máy chủ vẫn phải nguyên vẹn, vì một máy chủ không thể chứng minh mình là ai có thể đang thu thập chữ ký cho một mục đích bạn không định trước. Một VM thuê, một bastion thừa kế và một máy tính xách tay chạy tiện ích lạ là ba câu hỏi tin cậy riêng biệt. Hãy giữ chúng tách khỏi câu hỏi mật mã, vốn đã thực sự được giải quyết.

Chuyển tiếp agent ủy quyền điều gì

Chuyển tiếp agent mở một kênh từ máy chủ từ xa trở lại agent trên máy của bạn, để các tiến trình trên máy chủ đó có thể yêu cầu agent ký mà không bao giờ giữ khóa riêng. Khóa ở lại nơi nó ở, còn khả năng thì không. Bất cứ thứ gì có thể chạm tới socket được chuyển tiếp đó trên máy chủ từ xa, trong suốt vòng đời phiên, đều có thể yêu cầu các thao tác xác thực với tư cách một trong các danh tính đã nạp. Đó là thẩm quyền được ủy quyền, nên việc chuyển tiếp xứng đáng có một chính sách hẹp hơn việc giao nộp khóa công khai.

Một tệp khóa bị sao chép là tiết lộ. Một agent được chuyển tiếp là cho phép, và hai điều đó cần phản ứng khác nhau.

Bật chuyển tiếp cho một nhu cầu có tên và các máy chủ có tên, và kiểm tra xem máy khách thực sự làm gì thay vì những gì cấu hình có vẻ nói. Cái quan trọng là các thiết lập hiệu lực, vì một khối máy chủ âm thầm ghi đè giá trị mặc định toàn cục. Lập luận tương tự áp dụng ở phía máy chủ, nơi có thể từ chối hoàn toàn việc chuyển tiếp khi triển khai không bao giờ cần.

Đọc bằng chứng trước khi chọn phản ứng

Nếu cho rằng một tệp khóa riêng hoặc một danh tính ký tương đương đã bị lộ, phản ứng là thay thế và thu hồi qua quy trình của tổ chức bạn, cùng với việc gỡ bỏ sự chấp nhận của nó khỏi mọi dịch vụ đã tin nó. Xóa một bản sao cục bộ không làm vô hiệu các bản sao bạn không thấy.

Nếu lo ngại là truy cập agent tạm thời, phản ứng hẹp hơn: dừng việc ủy quyền không cần thiết, xem lại các phiên và danh tính liên quan, và để người sở hữu sự cố quyết định việc thay thế có chính đáng không. Bằng chứng quan trọng ở đây, vì không có xuất dữ liệu quan sát được không chứng minh rằng không có xác thực nào bị lạm dụng, và chỉ thay đổi đường đi không phải là chẩn đoán khóa bị đánh cắp. Ghi lại thành phần nào được tin, chuyển tiếp có được bật không và những gì thực sự quan sát được. Rồi chọn phản ứng phù hợp với bản ghi đó thay vì phản ứng kịch tính nhất.

ssh-add -l
ssh -G host.example | grep -i forwardagent

Chạy chúng trước và sau một thay đổi để so sánh có ý nghĩa. Một phiên được thiết lập trước đó vẫn giữ quyền ủy quyền đã được cấp, bất kể thiết lập hiện tại nói gì.

Hai biện pháp kiểm soát không thể hoán đổi

Bảo vệ vật liệu riêng, giới hạn ai có thể yêu cầu ký nó, và xác minh danh tính đối phương là ba biện pháp kiểm soát liên quan, và không biện pháp nào thay thế biện pháp kia. Một nhóm gỡ chuyển tiếp mà không kiểm tra khóa máy chủ đã sửa được nửa vấn đề. Một nhóm xoay khóa vì đường đi thay đổi đã không sửa được gì.

Một điểm cuối bị xâm phạm là câu hỏi thứ tư, vì phần mềm có đặc quyền trên máy của chính bạn có thể làm nhiều hơn hẳn việc quan sát gói tin.

Phân loại sự cố vào các loại đó trước khi chạm vào bất cứ thứ gì, và giao cho mỗi loại một người phụ trách. Giữ một bản ghi ngắn về những gì được tin, những gì được ủy quyền và những gì đã xác minh, vì chính bản ghi đó làm cho lần xem xét tiếp theo rẻ thay vì một cuộc tranh luận khác. Nếu bất kỳ loại nào chưa biết, hãy viết chưa biết thay vì giả định trường hợp lành. Sự phân biệt là thực tiễn, không hàn lâm: nó quyết định bạn thay thông tin đăng nhập, thu hồi phiên, hay chỉ đơn giản là dừng chuyển tiếp.

Bài viết liên quan