Một kết nối OpenVPN thất bại, ai đó tìm ra bản sửa một dòng thêm SECLEVEL=0, và đường hầm hoạt động. Thứ đã thay đổi không phải chứng chỉ và cũng không phải bộ mã hóa; một ngưỡng chấp nhận trên toàn thư viện đã dịch chuyển, và mọi thứ tiến trình làm sau đó thừa hưởng ranh giới mới. Điều đó đáng để hiểu trước khi cùng dòng đó được sao chép vào mọi hồ sơ trong môi trường.

Xác định thư viện nào và chính sách nào đang có hiệu lực

SECLEVEL là một khái niệm của OpenSSL, nên câu hỏi đầu tiên là bản dựng của bạn có dùng OpenSSL hay không. OpenVPN có thể được liên kết với nhiều hơn một thư viện mật mã, và một thiết lập áp dụng cho một thư viện là vô nghĩa với các thư viện khác. Hỏi tệp nhị phân được dựng bằng gì, rồi hỏi thư viện đã nạp phiên bản và cấu hình nào:

openvpn --version | head -3
openssl version -a

Đọc kỹ đầu ra phiên bản, vì các bản phân phối vá các giá trị mặc định. Một số gửi kèm cấu hình hệ thống nâng mức tối thiểu lên trên mặc định của upstream, và đó là lý do cùng một hồ sơ hành xử khác nhau trên hai máy có gói OpenVPN giống hệt. Chính sách hiệu lực là chính sách mà tiến trình đang chạy đã nạp, không phải chính sách trong hướng dẫn của upstream.

Sau đó tách hai lớp mà người ta nhầm lẫn. OpenVPN có các điều khiển TLS riêng, gồm thiết lập hồ sơ chứng chỉ và danh sách mã hóa tường minh, và chúng nằm trên mọi thứ thư viện áp đặt. Hạ mức thư viện không thay đổi những mã hóa mà cấu hình OpenVPN của bạn liệt kê, và thu hẹp danh sách OpenVPN không nâng ngưỡng của thư viện. Biết lớp nào đã từ chối bạn là điều giữ cho bản sửa không trở thành phỏng đoán.

Tách ba thứ có thể bị từ chối

Ứng viên đầu tiên là vật liệu nhận dạng: một chứng chỉ có khóa quá nhỏ hoặc có thuật toán chữ ký mà chính sách không còn chấp nhận. Thứ hai là tham số trao đổi khóa, chẳng hạn một nhóm mà chính sách coi là quá yếu. Thứ ba là một bộ mã hóa mà chính sách loại trừ. Cả ba đều có thể gây lỗi bắt tay, và chỉ văn bản lỗi cùng giai đoạn thương lượng phân biệt chúng.

Không cái nào trong ba cái đó là mã hóa của kênh dữ liệu. OpenVPN thương lượng mã hóa đường hầm tách biệt với bắt tay TLS, nên một kết nối thành công sau khi đổi mức bảo mật không nói gì về việc mã hóa nào bảo vệ dữ liệu của bạn. Nếu câu hỏi bạn thực sự đặt ra là về tính bí mật của dữ liệu, bạn đang nhìn vào núm vặn hoàn toàn sai.

Hạ mức mở rộng việc chấp nhận cả ba đầu vào cùng lúc. Đây là phần người ta bỏ lỡ: bản sửa chấp nhận chứng chỉ cũ cũng chấp nhận một nhóm yếu và một bộ mà có lẽ bạn không định cho phép. Một lỗi đã thúc đẩy thay đổi, và thay đổi rộng hơn lỗi. Sự bất đối xứng đó là lý do một ngoại lệ có phạm vi tốt hơn giá trị mặc định cho toàn bộ môi trường.

Thay đổi đầu vào, không phải ngưỡng

Giữ lại lỗi chính xác trước khi chạm vào cấu hình, kể cả giai đoạn đã báo lỗi và đối tượng mà nó nêu tên. Vấn đề chứng chỉ được giải quyết bằng cách thay chứng chỉ bằng thứ mà chính sách hiện tại chấp nhận, thường nghĩa là cấp lại từ cơ quan chứng nhận thay vì cài lại cùng tệp đó.

Nếu đầu vào bị từ chối thuộc về một peer mà bạn không kiểm soát, cuộc trao đổi là với chủ của peer đó về vật liệu thay thế được hỗ trợ. Hạ ngưỡng của chính bạn để chứa một hệ thống không ai bảo trì sẽ chuyển chi phí từ họ sang tất cả những ai kết nối sau họ.

Ở nơi máy chủ áp đặt chính sách, hãy kiểm tra xem thiết lập cấp OpenVPN có phải là nguyên nhân thật trước khi đổ lỗi cho thư viện. Một hồ sơ chứng chỉ đòi hỏi hạng nghiêm ngặt hơn mức chứng chỉ đã triển khai có thể đáp ứng sẽ thất bại bất kể mức bảo mật, và gỡ hồ sơ đó là thay đổi hẹp hơn việc tắt các kiểm tra của thư viện.

Nếu buộc phải hạ, hãy giới hạn và ghi lại

Đôi khi một ngoại lệ tương thích đã được phê duyệt là câu trả lời đúng, đặc biệt với một peer cũ có kế hoạch ngừng sử dụng có ngày tháng. Giới hạn nó cho dịch vụ cần đến thay vì cả máy chủ: một tệp cấu hình riêng cho dịch vụ hoặc một cấu hình OpenSSL chuyên dụng có bán kính ảnh hưởng nhỏ hơn một bản xuất trong hồ sơ toàn cục.

Ghi lại bốn điều cùng với ngoại lệ: thiết lập chính xác, chủ sở hữu đã phê duyệt, các máy khách bị ảnh hưởng và điều kiện để nó bị gỡ bỏ. Một ngoại lệ không có điều kiện ngừng là sự suy yếu vĩnh viễn kèm theo một lý do tạm thời.

Khôi phục phải là một bước bạn đã kiểm thử. Giữ cấu hình trước đó, áp dụng thay đổi, xác nhận dịch vụ khởi động và biết chính xác tệp nào cần khôi phục nếu kết nối tiếp theo hành xử khác với dự kiến.

Sau đó xác minh nhận dạng và bảo vệ

Một kết nối thành công chỉ chứng minh rằng các điều kiện đã sửa cho phép nó. Hãy xác nhận rằng việc xác minh tên máy chủ và peer vẫn làm việc của nó, rằng chứng chỉ đang dùng là chứng chỉ bạn định triển khai và rằng kênh dữ liệu đã thương lượng khớp với chính sách mà bạn nghĩ mình có.

openssl x509 -in /etc/openvpn/client.crt -noout -subject -dates -text | grep -E 'Signature Algorithm|Public-Key'
openvpn --show-tls | head -20

Tài liệu tham chiếu về các mức bảo mật của OpenSSL nói rõ rằng khung áp đặt giới hạn đối với khóa, chữ ký, nhóm và bộ mã hóa cùng một lúc, và mức không cho phép mọi thứ mà callback kiểm tra. Đó là phạm vi của những gì bạn đã thay đổi, và đó là câu cần trích dẫn khi ai đó hỏi liệu bản sửa có hẹp không.

Việc bàn giao chịu được kiểm toán nói rõ chính sách nào đã từ chối đầu vào nào, điều gì đã thay đổi và điều gì vẫn được chấp nhận như kết quả. „Nó hoạt động với SECLEVEL=0“ là quan sát về một kết nối, không phải đánh giá bảo mật của việc triển khai.

Bài viết liên quan