Realm xác thực VPN: Không gian tên tài khoản nào thắng?
Realm định tuyến đăng nhập đến một hệ thống định danh, không phải đến một quốc gia. Chốt hình thức tên, lần theo yêu cầu qua proxy và ghi lại ai đã trả lời.
Mỗi lần đăng nhập VPN đều rơi vào một không gian tên tài khoản nào đó, và realm là bộ chọn quyết định không gian nào. Nó không nói gì về quốc gia, vị trí máy chủ hay mức độ tin cậy. Hai tên người dùng giống hệt nhau có thể sống trong các realm khác nhau, đó là lý do một mật khẩu đúng đôi khi lại xác thực nhầm tài khoản. Cuốn runbook này trước hết chốt hình thức định danh, sau đó lần theo yêu cầu đến hệ thống thực sự đã trả lời.
Realm chọn cái gì
Cổng nhận tên người dùng và phải quyết định kiểm tra nó ở đâu. Realm là phần của tên đó, hoặc thuộc tính bên cạnh, dùng để chọn cơ sở dữ liệu: một thư mục, một nhóm RADIUS, một tệp tài khoản cục bộ. NPS của Microsoft gọi đây là tên realm và định tuyến các yêu cầu kết nối bằng nó, trong khi định danh truy cập mạng EAP mang cùng ý tưởng đó như một hậu tố sau dấu at trong RFC 7542. Cả hai đều là bộ chọn, và không cái nào quyết định thông tin đăng nhập có tốt hay không.
Sự tách biệt này tạo ra hai kiểu thất bại rất khác nhau. Realm định tuyến đúng với mật khẩu sai cho một lần từ chối, trong khi realm định tuyến đến cơ sở dữ liệu sai có thể từ chối mật khẩu đúng hoặc chấp nhận mật khẩu của người khác. Không lỗi nào nhắc đến realm, vì vậy chẩn đoán đầu tiên luôn giống nhau: tìm ra hệ thống nào đã trả lời.
Cú pháp realm thuộc về triển khai. Một số dịch vụ muốn tên không đủ điều kiện kèm thuộc tính, số khác muốn user@domain, và một vài nơi chờ đợi dạng có dấu gạch chéo ngược mà hầu hết hướng dẫn không nhắc đến.
Dùng hình thức mà phần phụ trợ mong đợi
Hỏi người vận hành nên gõ hình thức nào trước khi thử hậu tố từ một hướng dẫn. Tên đủ điều kiện theo miền đến phần phụ trợ mong đợi tên đơn giản thường thất bại ở bước tra cứu, không phải ở bước kiểm tra mật khẩu. Cùng một tên ngắn trong hai thư mục là trường hợp realm thiếu gây thiệt hại lớn nhất.
Đừng coi tài khoản quản trị là bằng chứng. Bảng điều khiển web nơi bạn quản lý dịch vụ có thể xác thực với một tệp cục bộ, trong khi đường hầm kiểm tra một thư mục hoàn toàn khác. Hãy thử với thông tin đăng nhập mà người dùng thật sẽ dùng, trên giao diện mà người dùng thật sẽ dùng. Đăng nhập bảng điều khiển thành công không nói gì về realm mà cổng áp dụng cho xác thực VPN.
Trình duyệt và ứng dụng thư đôi khi lưu định danh trước đó và âm thầm gửi lại. Khi tên người dùng được báo cáo khác với tên đã gõ, bộ nhớ đệm đó là nơi đầu tiên cần xem.
Lần theo yêu cầu qua proxy
Trên front end FreeRADIUS, các realm được khai báo trong cấu hình proxy, và hậu tố được khai báo quyết định máy chủ nhà nào nhận yêu cầu. Đọc tệp đó trước khi thay đổi bất cứ điều gì, vì yêu cầu không khớp với realm nào sẽ được xử lý cục bộ theo mặc định.
grep -n -A4 '^realm' /etc/freeradius/3.0/proxy.conf
radtest '[email protected]' 'wrong-password' 10.20.30.10 0 testing123
journalctl -u freeradius --since '-10 min' | grep -iE 'realm|stripped'
grep cho thấy những hậu tố nào tồn tại và mỗi cái nhắm tới nhóm nào. Lệnh gọi radtest gửi một tên có realm và một mật khẩu cố ý sai, nên việc bị từ chối chứng minh cả định tuyến lẫn kiểm tra thông tin đăng nhập đã chạy. Các dòng nhật ký quanh lần thử đó cho thấy tên có bị loại bỏ trước proxy hay không và máy chủ nhà nào đã nhận nó. Nếu nhật ký hoàn toàn không cho thấy sự khớp realm, yêu cầu chưa bao giờ rời máy chủ cục bộ và vấn đề là hậu tố, không phải mật khẩu.
Thay đổi từng thứ một và lặp lại lần thử, vì nhật ký chỉ tách định tuyến khỏi lỗi thông tin đăng nhập khi đầu vào khác nhau giữa các lần chạy. Giữ bí mật chia sẻ ngoài lịch sử shell ở nơi công cụ hỗ trợ đọc từ tệp hoặc lời nhắc.
Ghi lại lần thử mà không làm lộ
Viết lỗi theo hình thức mà quản trị viên có thể hành động: giao diện, hình thức định danh, có realm hay không, và lỗi chính xác không bí mật. Giữ tên người dùng đang hoạt động ngoài báo cáo công khai và giữ realm bên trong. Việc che mọi định danh thành cùng một trình giữ chỗ lại che đúng sự không khớp mà bạn đang tìm. Dấu thời gian cũng quan trọng, vì cổng, proxy và thư mục lưu nhật ký riêng.
Sau đó ghi lại cho người dùng hình thức thắng cuộc, vì người tiếp theo gõ sai sẽ mở cùng một phiếu. Đặt lại mật khẩu không sửa được yêu cầu cứ tiếp tục rơi vào không gian tên sai. Realm là một quyết định định tuyến, và các quyết định định tuyến được sửa bằng cách đặt tên đúng.