Tất nhiên là bạn không thể làm điều đó. Điều này sẽ đánh bại mục đích của 2FA. Máy chủ của bạn phải có cách xác minh thông tin đăng nhập của người dùng và thông tin này không nên được gửi qua mạng (ví dụ: bạn không thể chỉ sử dụng tệp client.ovpn).
Mặc dù bạn không nhất thiết phải tạo người dùng unix, nhưng bạn phải cho phép người dùng của mình cài đặt mã xác minh của họ cho máy chủ. Bạn có thể sử dụng sftp với người dùng ảo bằng chứng chỉ đã được cấp của họ, https với ủy quyền của khách hàng, lẫn nhau, CIFS (samba) hoặc ftp cũ tốt với tiện ích mở rộng TLS hoặc bất kỳ cách nào khác để máy chủ biết mã xác minh được tạo bởi người dùng . Kênh liên lạc phải được bảo mật (được mã hóa | | cục bộ).
Đương nhiên nếu người dùng của bạn tải lên các tệp của riêng họ, bạn không thể sử dụng thông tin xác thực dựa trên tệp tổng hợp được sử dụng bởi openvpn-otp. May mắn thay, chúng tôi có một tùy chọn khác (và tốt hơn nhiều) bằng cách sử dụng pam mô-đun bảo mật tuyệt vời linux.
Trước hết, bạn phải thu thập các tệp người dùng được tạo bởi google-Authenticator trong một thư mục theo một trong các phương pháp được đề cập ở trên. Trong trường hợp của chúng tôi, nó sẽ là / etc / google-auth.
Bạn phải thực thi id người dùng cho tất cả các tệp ở đây, vì bạn không có người dùng thực. Hãy để nó là openvpn . Các quyền phải là 0400 (-r --------). Pam không thích thông tin có thể đọc được trên thế giới / nhóm (chắc chắn). Bạn có thể dễ dàng thực thi điều này với samba, apache, ftp hoặc trong trường hợp xấu nhất bằng cách sử dụng tab cron (không được khuyến nghị).
Đối với mục đích thử nghiệm, chỉ cần làm điều này:
mkdir /etc/google-auth
apt-get install libpam-google-authenticator
google-authenticator
# set up as you wish, save image and/or codes
mv ~/.google_authenticator /etc/google-auth/some_username
chown -R openvpn /etc/google-auth
Sau đó, bạn yêu cầu openvpn xác thực với libpam, có mô-đun google auth riêng. Nối nó vào tệp máy chủ openvpn của bạn:
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn
Điều này nói rằng chúng tôi sẽ sử dụng phương thức xác thực pam với id ph auth id openvpn .
Bây giờ, tạo thiết lập pam cho openvpn. Chỉnh sửa /etc/pam.d/openvpn:
auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER} user=openvpn
account required pam_permit.so
Ở đây chúng tôi nói rằng nếu không xác thực google thành công, chúng tôi sẽ thất bại ngay lập tức (cần thiết), chúng tôi đang sử dụng một tệp bí mật đặc biệt thay vì $ HOME / .google_authenticator (secret =) và chúng tôi truy cập các tệp như người dùng openvpn vì không có người dùng thực sự liên quan với người dùng của chúng tôi. Trong dòng tiếp theo, chúng tôi chỉ nói rằng chúng tôi cho phép mọi người kết nối sau khi xác thực thành công. Tất nhiên bạn nên thực hiện chính sách cho phép của riêng bạn ở đây. Bạn có thể kiểm soát người dùng được phép bằng tệp, mysql db hoặc ldap với các mô-đun pam tương ứng.
Nối nó vào tệp khách openvpn của bạn
auth-user-pass
auth-nocache
reneg-sec 0
Chúng tôi sử dụng auth-user-pass để cho phép máy khách openvpn hỏi tên người dùng và mật khẩu. Chúng tôi không thích bộ nhớ đệm ("mật khẩu" đang thay đổi) và việc phủ định lại định kỳ có hại cho chúng tôi vì lý do tương tự.
Sau đó, bạn sẽ có thể kết nối mà không cần openvpn-otp. Vui lòng xem đây là phương pháp linh hoạt hơn nhiều, vì bạn có thể thực hiện các quy tắc rất phức tạp trong các tệp kiểm soát pam nếu bạn muốn. Bạn có thể bật / tắt người dùng dựa trên thư mục mysql hoặc ldap của bạn mà không cần chạm vào các chứng chỉ đó chẳng hạn.