auth-nocache với tệp thông tin xác thực: giúp hay hại?
auth-nocache loại bỏ thông tin xác thực được nhắc khỏi bộ nhớ. Khi mật khẩu nằm trong tệp, cảnh báo ít có ý nghĩa hơn, và tùy chọn này có thể phá vỡ việc thương lượng lại.
OpenVPN in ra cảnh báo khi khởi động, gợi ý dùng auth-nocache, và phản ứng hấp dẫn là thêm tùy chọn rồi xem dòng đó biến mất. Lời khuyên đó giả định đăng nhập tương tác. Khi tên người dùng và mật khẩu sống trong một tệp, sự so sánh thay đổi: tùy chọn không còn bảo vệ bản sao lâu dài, và trên một máy khách từ bỏ đặc quyền, nó có thể phá vỡ việc thương lượng lại về sau. Hai mô hình lưu trữ đáng được tách riêng trước khi bạn sửa một hồ sơ.
Hai cách trả lời yêu cầu thông tin xác thực
Mô hình thứ nhất là một người gõ thông tin xác thực vào terminal, hoặc giao diện quản lý giữ chúng cho phiên. OpenVPN giữ bản sao đó để trả lời lần thương lượng lại tiếp theo mà không hỏi lại, và cảnh báo nói chính về điều này. Không có gì trên đĩa tham gia, nên thứ duy nhất cần bảo vệ là tiến trình đang giữ giá trị. Đóng máy khách và bản sao biến mất cùng nó.
Mô hình thứ hai là auth-user-pass trỏ tới một tệp, trong đó tệp là nơi lưu và máy khách đọc nó khi cần một giá trị. Rủi ro đáng kể ở đây không phải bộ nhớ tiến trình mà là quyền và chủ sở hữu của tệp đó. Cảnh báo khởi động đến từ các chỉ thị trong cấu hình, không phải từ việc kiểm tra cách bạn cung cấp mật khẩu, nên nó xuất hiện ở cả hai mô hình và không chỉ vào mô hình nào.
Phần còn lại của so sánh này suy ra từ sự phân chia đó: xử lý bộ nhớ cho một mô hình, xử lý tệp và danh tính tiến trình cho mô hình kia.
auth-nocache thực sự loại bỏ điều gì
Với đăng nhập tương tác, --auth-nocache gỡ bản sao đã lưu khỏi bộ nhớ sau khi nó được dùng. Cái giá là một yêu cầu mới ở mỗi khoảng thương lượng lại, vì vòng tiếp theo không thể dùng lại thứ đã bị loại bỏ.
Với đăng nhập dựa trên tệp, máy khách có thể đọc lại tệp, nên việc loại bỏ phần lớn là vô hình. Nó trở nên hữu hình ở đúng một nơi người ta không ngờ: sau khi daemon từ bỏ đặc quyền, nếu tệp thông tin xác thực không đọc được bởi tài khoản mà nó đang chạy dưới quyền.
Hãy thêm tùy chọn vì bạn hiểu sự đánh đổi đó, không phải vì một cảnh báo đã xuất hiện. Một tùy chọn được thêm để làm log yên tĩnh hơn là tùy chọn mà không ai đo tác dụng của nó.
Nơi con đường dựa trên tệp gãy
Một máy khách khởi động bằng root để mở thiết bị đường hầm rồi chuyển sang user và group sẽ đọc tệp thông tin xác thực hai lần: một lần trước khi chuyển, một lần ở lần thương lượng lại sau đó. Nếu tệp ở chế độ 600 và thuộc sở hữu root, lần đọc thứ hai thất bại, và lỗi xuất hiện một giờ sau đó như một lỗi xác thực trông giống sự cố máy chủ. Hãy kiểm tra log máy khách quanh khoảng thương lượng lại, sau đó kiểm tra tài khoản và tệp cùng nhau.
stat -c '%a %U:%G' /etc/openvpn/client.creds
ps -o user:12,args -C openvpn | headCả hai dòng đều quan trọng. Dòng đầu cho biết ai có thể đọc tệp, dòng thứ hai cho biết daemon đang chạy thực sự là ai, và sự khác biệt giữa hai điều đó giải thích một lỗi mà gõ lại mật khẩu bao nhiêu lần cũng không sửa được.
Các sửa chữa thực tế không hào nhoáng: chuyển tệp vào một thư mục và chủ sở hữu mà tài khoản của daemon có thể đọc, hoặc giữ cách đọc đặc quyền và xác nhận máy khách của bạn chỉ đọc một lần. Đừng giải quyết bằng cách làm cho tệp ai cũng đọc được.
Trường hợp thực sự muốn tùy chọn này
Một lần đăng nhập mang mã dùng một lần muốn auth-nocache vì một lý do khác. Mã dùng một lần bị tiêu hết ở lần xác thực đầu, nên bản sao trong bộ nhớ đệm vô dụng ở lần thương lượng lại tiếp theo, và một giá trị cũ thậm chí có thể bị phát lại.
Đó là câu hỏi về loại thông tin xác thực, không phải về nơi lưu nó. Mật khẩu tĩnh trong một tệp được bảo vệ có đặc điểm ngược lại: nó phải đọc được ở mọi lần thương lượng lại, và sự bảo vệ bạn cần nằm trên tệp.
Hãy giữ hai lý do đó riêng trong phần bình luận của hồ sơ, nếu không người quản trị tiếp theo sẽ cho rằng tùy chọn ở đó vì lý do mà anh ta sẽ chọn.
So sánh trong một quyết định
Chọn mô hình tương tác khi có người và độ tươi mới quan trọng, và chấp nhận yêu cầu lặp lại như cái giá của nó. Chọn mô hình tệp khi máy khách chạy không giám sát, và dồn công sức vào quyền sở hữu, chế độ và việc từ bỏ đặc quyền.
Không mô hình nào tự nó làm cho một mật khẩu đã lưu an toàn, và không mô hình nào làm cho cảnh báo khởi động có ý nghĩa.
Nếu cảnh báo là lý do duy nhất bạn mở hồ sơ, hãy ghi lại quyết định thay vì một tùy chọn không giải thích: thông tin xác thực đến từ một tệp mà tài khoản của daemon đọc được, một lần thương lượng lại đã được thấy thành công, và phần về thương lượng lại trong hướng dẫn OpenVPN 2.6 đã được đọc trước khi thay đổi khoảng của nó. Ghi chú đó sống lâu hơn bất kỳ cờ đơn lẻ nào.