Ні, звичайно, ви не можете цього зробити. Це переможе саму мету 2FA. Ваш сервер повинен мати спосіб перевірки облікових даних користувачів, і ця інформація не повинна надсилатися через мережу (тобто ви не можете використовувати лише файл client.ovpn).
Хоча вам не обов’язково створювати користувачів Unix, але ви повинні дозволити своїм користувачам встановлювати їх верифікаційні коди на сервер. Ви можете використовувати sftp з віртуальними користувачами, використовуючи вже виданий сертифікат, https з клієнтською (взаємною) авторизацією, CIFS (samba) або старий добрий ftp з розширенням TLS або будь-яким іншим способом, який дозволяє серверу знати коди підтвердження, створені користувачами . Канал зв'язку повинен бути захищеним (зашифрованим || локальним).
Звичайно, якщо ваші користувачі завантажують власні файли, ви не можете використовувати зведені файлові облікові дані, які використовує openvpn-otp. На щастя, у нас є ще один (і набагато кращий) варіант, використовуючи відмінний модуль захисту пам’яті Linux.
Перш за все, ви повинні зібрати файли користувачів, створені google-автентифікатором, в каталог одним із способів, згаданих вище. У нашому випадку це буде / etc / google-auth.
Ви повинні застосувати єдиний ідентифікатор користувача для всіх файлів тут, оскільки у вас немає реальних користувачів. Нехай це буде openvpn . Дозволи повинні бути 0400 (-r --------). Pam не любить (звичайно), читати дані для світових / групових. Ви можете легко застосувати це за допомогою samba, apache, ftp або в гіршому випадку за допомогою вкладки cron (не рекомендується).
Для тестування просто зробіть це:
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
Після цього ви просите openvpn пройти автентифікацію проти libpam, у якого є власний модуль аутентифікації Google. Додайте це до файлу сервера openvpn:
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn
Це говорить про те, що ми будемо використовувати метод автентифікації пам із пам’яті pam auth id openvpn .
Тепер створіть налаштування пам’яті для openvpn. Редагувати /etc/pam.d/openvpn:
auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER} user=openvpn
account required pam_permit.so
Тут ми говоримо, що без успішної аутентифікації google ми не вдається негайно (необхідний), ми використовуємо спеціальний секретний файл замість $ HOME / .google_authenticator за замовчуванням (secret =), і ми отримуємо доступ до файлів як uservvpn, оскільки реального користувача не пов’язано з нашими користувачами. У наступному рядку ми просто кажемо, що ми дозволяємо всім підключитися після успішної аутентифікації. Звичайно, слід застосувати тут власну політику дозволів. Ви можете контролювати дозволених користувачів за файлами, mysql db або ldap за допомогою відповідних модулів пам’яті.
Додайте це до файлу клієнта openvpn
auth-user-pass
auth-nocache
reneg-sec 0
Ми використовуємо auth-user-pass, щоб дозволити клієнту openvpn запитати ім’я користувача та пароль. Нам не подобається кешування ("пароль" змінюється), і періодичне повторне обговорення для нас погано з тієї ж причини.
Після цього ви зможете підключитися без openvpn-otp. Зверніть увагу, що це набагато гнучкіший метод, оскільки при бажанні ви можете реалізувати дуже складні правила у файлах контролю пам’яті. Ви можете вмикати / вимикати користувачів на основі каталогу mysql або ldap, не торкаючись, наприклад, цих сертифікатів.