strongSwan EAP: danh tính IKE so với tên AAA mong đợi
Một máy khách strongSwan EAP có thể kiểm tra hai tên máy chủ. remote.id bao phủ cổng IKE và local.aaa_id bao phủ máy chủ EAP; chúng không phải cùng một trường.
Xác thực EAP trên IKEv2 có thể yêu cầu máy khách kiểm tra hai tên máy chủ khác nhau trong một kết nối. Cổng kết thúc IKE trình bày một danh tính, và phần phụ trợ EAP kết thúc trao đổi TLS bên trong có thể trình bày một danh tính khác. Trong strongSwan chúng nằm trong các khối cấu hình khác nhau, và đặt tên vào khối sai sẽ tạo ra lỗi trông giống sự cố chứng chỉ. Chính việc đọc xem bước kiểm tra nào thất bại cho biết cần sửa khối nào.
Một kết nối, hai danh tính máy chủ
Danh tính thứ nhất thuộc về trao đổi IKE. Máy khách quay số đến một địa chỉ và mong đợi bên kia chứng minh một danh tính cụ thể, thường là tên trong chứng chỉ của cổng.
Danh tính thứ hai thuộc về EAP. Với PEAP hoặc TTLS, máy khách dựng đường hầm TLS tới máy chủ xác thực bên trong IKE SA, và máy chủ bên trong đó trình bày chứng chỉ của chính nó. Khi phần phụ trợ là một máy chủ riêng, tên của nó khác với tên của cổng. Máy khách chỉ kiểm tra tên thứ nhất sẽ chấp nhận bất cứ điều gì tên thứ hai khẳng định. Còn máy khách được cấu hình với một tên ở cả hai nơi sẽ thất bại ngay khi hai tên thực sự khác nhau.
Cả hai tên đều đến từ cấu hình của người vận hành, không phải từ chứng chỉ giúp lỗi biến mất. Hỏi người vận hành về chi tiết triển khai nhanh hơn đoán hai tên máy chủ.
Trường nào thuộc lớp nào
Trong swanctl, địa chỉ và danh tính IKE là các thiết lập riêng, và danh tính EAP là thiết lập thứ ba.
Địa chỉ từ xa chọn nơi gói tin đi, và danh tính từ xa nêu điều bên kia phải chứng minh. Kỳ vọng EAP được ghi dưới khối local, vì nó mô tả trao đổi EAP của máy khách này chứ không phải hành vi IKE của bên kia. Chính vị trí này bị đọc sai. Tên nằm trong cấu hình của máy khách trong khi mô tả một máy chủ, và đó chính là lý do nó trông như đặt sai chỗ.
connections {
office {
remote_addrs = vpn.example.com
local {
auth = eap-peap
aaa_id = auth.example.com
}
remote {
auth = pubkey
id = vpn.example.com
}
}
}
Đoạn đó không phải một kết nối hoàn chỉnh; vật liệu tin cậy, thông tin đăng nhập và chính sách của các kết nối con vẫn phải có. Sao chép nguyên văn vào một tệp đang chạy sẽ thay thế những thiết lập bạn vẫn cần.
Vì sao aaa_id sống dưới local
Khối local mô tả đầu này làm gì trong quá trình xác thực, bao gồm phương thức nó sẽ dùng và danh tính nó mong đợi từ đầu kia cho phương thức đó. Không có gì trong đó khẳng định máy chủ AAA chạy trên cùng máy.
Giá trị mặc định làm cái bẫy sắc hơn. Khi không có giá trị rõ ràng nào được đặt, danh tính AAA mong đợi đi theo danh tính từ xa, nên triển khai một tên vẫn chạy và che giấu sự khác biệt. Giá trị rõ ràng chỉ quan trọng khi triển khai EAP thực sự kết thúc ở nơi khác. Đặt nó thành một tên khác mà không có lý do đó sẽ tạo ra lỗi mà người vận hành không thể tái tạo. Hãy đọc triển khai trước khi phát minh tên thứ hai.
Giữ giá trị trùng khớp với điều chứng chỉ của phần phụ trợ thực sự khẳng định, bao gồm cả dạng của tên. Một dấu chấm ở cuối hoặc ký tự đại diện không bao phủ máy chủ là đủ để bước kiểm tra thất bại.
Các giao diện không thể diễn đạt sự tách biệt
Hồ sơ NetworkManager không phải cùng một giao diện cấu hình như swanctl. Plugin phía sau nó chỉ cung cấp một tập điều khiển danh tính hẹp hơn, và việc có những cái nào tùy thuộc phiên bản đã cài.
Điều đó quan trọng khi triển khai thực sự cần hai tên. Một trường được gắn nhãn danh tính máy chủ có thể cấu hình một lớp mà không cấu hình lớp kia, nên hồ sơ có vẻ đúng mà vẫn thất bại ở bước kiểm tra bên trong. Hãy kiểm tra plugin đã cài hỗ trợ gì trước khi cho rằng hồ sơ có thể diễn đạt cách bố trí đó. Nếu không thể, lựa chọn thuộc về người vận hành: một con đường cung cấp khác, hoặc một thiết kế danh tính máy chủ đã được sửa. Làm yếu PEAP hoặc chấp nhận bất kỳ tên nào là thay đổi chính sách xác thực thay vì sửa nó.
Phương án thay thế không phải là thứ để tự nghĩ ra trên máy khách. Hãy yêu cầu cách bố trí được hỗ trợ bằng văn bản, rồi giữ câu trả lời đó cùng hồ sơ.
Phân biệt danh tính không khớp với chứng chỉ hết hạn
Tên không khớp và chứng chỉ hết hạn là những lỗi khác nhau, và nhật ký phân biệt chúng. Hãy đọc thông điệp trước khi quyết định đổi trường nào.
swanctl --list-conns
swanctl --list-sas
journalctl -u strongswan -n 50 --no-pager
Đặt danh tính AAA dự kiến không gia hạn chứng chỉ và không thiết lập tin cậy vào nhà phát hành của nó, và gia hạn chứng chỉ không sửa được tên mong đợi sai. Hãy đọc bước kiểm tra nào đã thất bại trước khi sửa một trường danh tính khác. Sau đó tải lại cấu hình và xác nhận kết nối đã tải hiển thị giá trị bạn đặt, vì một tệp đã sửa mà chưa bao giờ được tải thì không thay đổi gì. Hãy ghi cả hai tên và các lớp của chúng vào ghi chú triển khai.