Windows và strongSwan: khớp bốn phép biến đổi trong một đề xuất IKE
Một mật mã chung là không đủ khi hai bên không thống nhất về nhóm trao đổi khóa. Hãy so sánh cả bốn phép biến đổi, rồi áp dụng một chính sách hồ sơ duy nhất có phạm vi.
Cả hai bên đều hỗ trợ AES, cả hai đều chấp nhận SHA-256, vậy mà đường hầm vẫn không lên. Đề xuất thất bại ở một thành phần mà không ai so sánh, thường là nhóm trao đổi khóa. Tài liệu này đọc lần trao đổi thực tế trước khi thay đổi bất cứ thứ gì, áp dụng một chính sách có phạm vi và để lại một đường hoàn nguyên khôi phục các tham số trước đó.
Đọc lỗi trước khi thay đổi một nhóm
«Lỗi khớp chính sách» là bản tóm tắt, không phải chẩn đoán. Nghĩa là không tìm được đề xuất nào cả hai bên chấp nhận, và nó không nói gì về việc thành phần nào bị từ chối. Hãy coi đó là khởi đầu của cuộc điều tra, không phải bằng chứng về một nhóm cụ thể.
Câu trả lời thường nằm ở phía máy chủ. Nhật ký strongSwan ở mức phù hợp liệt kê đề xuất nhận được từ máy khách và đề xuất mà nó được cấu hình để chấp nhận, và sự khác biệt giữa hai danh sách nêu tên thành phần đã thất bại.
Đừng giả định máy khách cung cấp những gì một bài đăng diễn đàn cũ nói. Hồ sơ đang hoạt động và chính sách đã cài đặt của nó quyết định danh sách được cung cấp, và một bản dựng Windows đã cập nhật có thể cung cấp một bộ khác với bộ trong ảnh chụp màn hình mà bạn đang sao chép.
Viết cả hai danh sách ra. Bốn vị trí biến đổi và một nhóm là một danh sách ngắn, và so sánh từng dòng tốn ít thời gian hơn bất kỳ thí nghiệm nào. Bốn vị trí dễ giữ trong tầm mắt. Một tệp nhật ký thì không.
So sánh từng phép biến đổi, không chỉ một cái tên quen thuộc
Một đề xuất IKE là tập hợp các lựa chọn mà tất cả đều phải khớp. Mã hóa bảo vệ cuộc đàm phán, tính toàn vẹn hoặc một PRF xác thực nó, và một nhóm Diffie-Hellman tạo vật liệu khóa mới. Một đề xuất khớp ở hai mục đầu và khác ở mục thứ ba vẫn không được cả hai bên chấp nhận.
Hai trường Windows bị nhầm lẫn ở đây thuộc các giai đoạn khác nhau. DHGroup áp dụng cho trao đổi khóa IKE, còn PfsGroup áp dụng cho liên kết con bảo vệ lưu lượng. Thay đổi cái thứ hai không thể sửa lỗi ở cái thứ nhất.
Tên nhóm khác nhau giữa các cách triển khai, và đó là một nguồn nhầm lẫn riêng. strongSwan ghi modp2048 và ecp256 trong khi Windows dùng tên liệt kê như Group14 và ECP256, nên một phép so sánh phải dịch trước khi so. Hãy giữ một ghi chú hai cột với cả hai tên. Khi đó sự khác biệt tiếp theo được phân loại trong vài giây.
| Transform | Windows parameter | strongSwan name | Failure it causes |
|---|---|---|---|
| Encryption | CipherTransformConstants | aes, aes256gcm and similar | No common proposal at all |
| Integrity or PRF | AuthenticationTransformConstants | sha256, sha512 and similar | Proposal rejected after encryption matches |
| Key-exchange group | DHGroup | modp2048, ecp256 | Exchange fails during key establishment |
| Child SA protection | PfsGroup | esp proposal groups | Tunnel negotiates, data association does not |
Áp dụng một chính sách đầy đủ và có phạm vi
Công cụ được hỗ trợ cho hồ sơ IKEv2 gốc là một chính sách IPsec cho mỗi kết nối, được đặt như một đối tượng duy nhất thay vì từng trường. Xem trước trước, rồi áp dụng, và giữ các tham số trước đó trong bản ghi thay đổi.
Set-VpnConnectionIPsecConfiguration -ConnectionName "Northwind IKEv2" -AuthenticationTransformConstants SHA256128 -CipherTransformConstants AES256 -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -DHGroup ECP256 -PfsGroup ECP256 -WhatIf
Công tắc -WhatIf xem trước thay đổi cục bộ và không áp dụng gì. Điều đó hữu ích và đồng thời là một cái bẫy phổ biến, vì bản xem trước chỉ chứng minh rằng các tham số hợp lệ về cú pháp với lệnh cmdlet cục bộ. Nó không nói gì về việc cổng có chấp nhận đề xuất tạo ra hay không.
Nhân tiện hãy khớp cả phạm vi. Một kết nối trong kho của tất cả người dùng cần tham số tương ứng cho tất cả người dùng, và việc sửa hồ sơ theo từng người dùng với cùng tên hiển thị sẽ thay đổi một đối tượng khác mà đường hầm không dùng.
Sau đó đặt phía strongSwan về cùng bộ trước khi thử. Một thay đổi phối hợp ở cả hai đầu là phiên bản duy nhất của việc này hội tụ; thay đổi một phía và thử lại nhiều lần tạo ra một nhật ký đầy những lần từ chối giống nhau.
Kiểm chứng riêng lần trao đổi và lần làm mới khóa
Một kết nối thành công là một quan sát, và lần làm mới khóa là một quan sát khác. Cuộc đàm phán IKE ban đầu dùng một bộ tham số, và liên kết con mang lưu lượng có thể được đàm phán lại sau đó với chính sách riêng của nó. Một cấu hình kết nối rồi rơi sau một lúc thường là trường hợp thứ hai.
ipsec statusall | grep -A6 "Northwind"
Get-VpnConnection -Name "Northwind IKEv2" | Format-List *
Lệnh đầu tiên cho thấy góc nhìn của máy chủ về các liên kết đã thiết lập, bao gồm liên kết con và thời gian sống còn lại của nó. Lệnh thứ hai cho thấy hồ sơ máy khách hiện giữ gì, và đó là cách duy nhất để xác nhận rằng chính sách bạn đặt là chính sách đang có hiệu lực.
Hãy quan sát một lần làm mới khóa đầy đủ trước khi tuyên bố thành công. Điều đó có nghĩa là để kết nối duy trì đủ lâu cho liên kết con được thay thế, rồi xác nhận lưu lượng vẫn tiếp tục. Phần lớn sự không khớp chính sách ẩn ở bước đó, vì cuộc đàm phán ban đầu có thể thành công với một bộ mà lần làm mới không chấp nhận.
Hoàn nguyên là bộ tham số trước đó, không phải một phương án dễ dãi. Nếu máy khách chỉ đưa ra một nhóm cũ yếu, câu trả lời là cải thiện chính sách chung của máy khách và máy chủ, không phải thêm nhóm đó vào cổng nơi mọi bên trong tương lai có thể đàm phán hạ xuống tới nó.
Ghi lại bốn tham số, nhóm, phạm vi kết nối và kết quả của lần làm mới khóa. Đó là một ghi chú ngắn, và nó là khác biệt giữa một tài liệu hướng dẫn và một câu chuyện về lần đường hầm đi lên.