Đăng nhập VPN bị treo sau Access-Challenge của RADIUS
Access-Challenge không phải thành công cũng không phải từ chối cuối cùng. Xem cách NAS, cổng và máy khách phải mang phản hồi tiếp theo trong cùng một lần trao đổi.
Mật khẩu của bạn đúng, đăng nhập VPN vẫn thất bại, và máy chủ RADIUS có thể đã làm đúng những gì được yêu cầu. Cổng nhiều khả năng đã nhận một Access-Challenge, không hiển thị gì hữu ích, rồi hết thời gian chờ hoặc coi câu trả lời đó là từ chối. Từ phía máy khách, nó trông như thông tin đăng nhập sai hoặc đường hầm hỏng. Nguyên nhân thường nằm giữa một cuộc trao đổi mà không ai ghi lại.
Một lần đăng nhập, hai lần trao đổi RADIUS
Khi phần phụ trợ muốn yếu tố thứ hai, nó không trả lời yêu cầu đầu tiên bằng chấp nhận hay từ chối. Nó trả lời bằng mã 11 và chờ phản hồi tiếp theo của người dùng, mà cổng phải gửi lại trong một yêu cầu tiếp nối. Yêu cầu tiếp nối đó thuộc cùng cuộc trao đổi xác thực, không phải một lần đăng nhập mới.
Trong một cấu hình hoạt động, người dùng thấy lời nhắc thứ hai: trước là mật khẩu, sau là mã dùng một lần, hoặc một lời nhắc kết hợp duy nhất nếu nhà vận hành đã ghi lại. Trong cấu hình hỏng, lời nhắc thứ hai không bao giờ xuất hiện và đăng nhập chỉ đơn giản thất bại.
Đó là triệu chứng cần theo đuổi, và dễ xác nhận chỉ từ phía máy khách: nếu máy khách VPN hỏi đúng một bí mật rồi từ chối mật khẩu mà bạn biết là hợp lệ, lần trao đổi nhiều khả năng đã dừng ở thử thách.
Thử thách thực sự mang gì
Đặc tả RADIUS mô tả mã 11 trong mục 4.4 và cho phép hai thuộc tính quan trọng ở đây. Reply-Message chứa văn bản dành cho người dùng, và State chứa một giá trị không rõ ràng mà máy chủ muốn nhận lại. NAS không được diễn giải State, chỉ trả lại nguyên vẹn.
Yêu cầu tiếp nối dùng Identifier mới và Request Authenticator mới, và phải mang cùng giá trị State cùng phản hồi của người dùng. Máy chủ khớp nó với thử thách đang chờ qua chính State đó, vì vậy một cổng tạo lại hoặc bỏ thuộc tính này không thể hoàn tất nghi thức. Response authenticator trong mỗi phản hồi cũng phải được xác thực, nếu không NAS nên loại bỏ gói tin.
Mục 4.4 bổ sung chi tiết giải thích phần lớn các thất bại im lặng: một NAS không hỗ trợ thử thách sẽ coi Access-Challenge là từ chối. Nếu dịch vụ VPN của cổng bạn dùng cũ hơn mức hỗ trợ đó hoặc bỏ qua nó, yêu cầu yếu tố thứ hai từ phụ trợ trở thành «xác thực thất bại» tức thì mà không có lời nhắc nào.
Yêu cầu nối chuỗi mất ở đâu
Nghi phạm đầu tiên là đường đi của lời nhắc, không phải thông tin đăng nhập. Một cổng thông tin hiển thị trường OTP cho đăng nhập web không tự động làm vậy cho dịch vụ VPN, và một số cổng chỉ chuyển thử thách cho máy khách công bố khả năng đó. Hãy thử cùng tài khoản ở cả hai điểm vào; nếu cổng thông tin hoạt động mà VPN không, bạn đang xem việc bàn giao, không phải token.
Định dạng nhập là nghi phạm thứ hai. Ghép mật khẩu và mã mà không có dấu phân cách do nhà cung cấp ghi lại, hoặc để thông tin đăng nhập đã lưu phát lại mã cũ, thất bại theo cách trông giống hệt mật khẩu sai. Dùng lời nhắc riêng hoặc định dạng kết hợp đã được nhà vận hành ghi lại, và đừng bao giờ tự nghĩ ra dấu phân cách.
Có những khiếm khuyết đặc thù theo phiên bản, nhưng danh sách phiên bản đã sửa từ nhiều năm trước không phải chẩn đoán cho triển khai hôm nay. Đọc ghi chú phát hành của phần mềm bạn thực sự chạy, và giữ giai đoạn trao đổi quan sát được làm bằng chứng.
Theo dõi một lần thử từ đầu đến cuối
Tái hiện một lần với gỡ lỗi phía máy chủ bật, và giữ mọi phiên khác ngoài cửa sổ bắt gói:
$ sudo radsniff -i eth0 -x -f 'udp port 1812'
$ sudo freeradius -X
$ radtest alice 'password' 127.0.0.1 0 testing123
Trong đầu ra, tìm hình dạng của cuộc trao đổi thay vì một dòng. Một Access-Request đầu tiên với Identifier 3, một Access-Challenge mang State, rồi Access-Request thứ hai với Identifier 4 lặp lại State đó và bao gồm phản hồi của người dùng. Nếu thiếu yêu cầu thứ hai, cổng chưa bao giờ tiếp nối. Nếu nó đến mà không có State, máy chủ không thể khớp với thử thách đang chờ và thường sẽ từ chối.
Khi chia sẻ dấu vết, hãy che thông tin đăng nhập, token và dữ liệu danh tính không cần thiết, và tương quan các sự kiện từ một lần thử thay vì trộn các lần thử lại từ nhiều tab trình duyệt. Dấu thời gian là bạn của bạn ở đây; một thử thách đến sau khi máy khách bỏ cuộc trông như từ chối với người dùng và như phản hồi chậm trong nhật ký.
Trạng thái cuối cùng bạn muốn là một cuộc trao đổi hoàn tất và được cấp quyền, sau đó là truy cập dịch vụ dự kiến. Một phản hồi đến từ máy chủ RADIUS chứng minh ít hơn nhiều so với điều đó.