Увімкніть auth-nocache, і попередження про кешування пароля зникає, разом із копією облікових даних, яку OpenVPN тримав для наступного переузгодження. Чи стане це запитом, тихою повторною спробою або обірваним тунелем, залежить від того, звідки облікові дані візьмуться вдруге. Тому це порівняння форм розгортання, а не вирок цій опції. Прочитайте ту форму, яку ви справді використовуєте, перш ніж редагувати будь-який профіль.

Звідки має взятися другий набір облікових даних

OpenVPN застосовує auth-nocache до секретів, які збирають auth-user-pass і askpass: після використання процес відкидає їх, а не тримає до наступного рукостискання. Переузгодження надходить за таймером, типово раз на годину, тож другий запит приходить задовго після того, як людина, що ввела пароль, пішла. Цей розрив — уся суть. Якщо кеш залишено ввімкненим, клієнт відтворює збережену копію, нікого не питаючи; якщо вимкнено, йому доводиться шукати секрет деінде або зазнавати невдачі.

Тож перелічіть кожне місце, звідки секрет може взятися в той момент, і будьте чесними щодо того, які з них існують на хості. Людина за терміналом, файл, який можуть прочитати auth-user-pass або askpass, або виданий сервером токен сеансу — це три, які тут важливі. Якщо жодного з них немає, переузгодження зривається через годину після зміни, а не в той момент, коли ви її зробили.

Три форми, три точки відмови

Настільний клієнт із людиною перед ним — м’який випадок: запит повертається, хтось знову вводить пароль, і ціна — увага. Служба, контейнер або маршрутизатор, що запускає OpenVPN без термінала, — жорсткий випадок, бо відповідати нікому, і з’єднання, яке раніше було тихим, тепер обриває тунель. Гібрид стоїть між ними й поводиться як настільний випадок, доки не зникне сеанс, який міг відповісти на запит. Їх розділяє не наявність GUI, а наявність джерела облікових даних у момент переузгодження.

Віднесіть своє розгортання до однієї з цих трьох форм, перш ніж щось змінювати, бо порада, яку ви знайдете в інтернеті, майже завжди написана для першої. Застосувати настільну відповідь до служби без термінала — це спосіб, у який тунель, що працював місяцями, починає падати щогодини.

Директива чи прапорець: виберіть одне й знайте, що саме використали

Усередині профілю auth-nocache — окремий рядок; у виклику, який явно називає профіль, це прапорець у тому командному рядку, і посібник OpenVPN перелічує обидві форми. Обидві роблять те саме зі збереженням облікових даних, і жодна не торкається типу інтерфейсу та не виправляє стороннього попередження в тому самому журналі. Різниця в стійкості: прапорець охоплює лише той запуск, тому служба, перезапущена з unit-файлу або скрипту-обгортки, не матиме його, якщо обгортка теж його не передасть.

auth-nocache
openvpn --config /path/client.ovpn --auth-nocache

Вирішіть, який артефакт володіє налаштуванням, змініть його там і більше ніде. Профіль, відредагований на ноутбуці, плюс unit systemd, який перекриває його прапорцем, — та сама пара, що дає суперечливу поведінку після перезавантаження.

Файл облікових даних переносить секрет, а не видаляє його

Спрямування auth-user-pass на файл дає джерело кожному наступному переузгодженню й кладе пароль туди, де він переживає перезавантаження. Запитайте, хто може читати цей файл, чи зможе демон прочитати його після відмови від привілеїв і що буде, якщо файлову систему змонтовано лише для читання або подання контейнера приховує шлях. Секрет на диску й секрет у пам’яті — різні проблеми, і вирішення однієї залишає іншу на місці. Ротація — той крок, який пропускають: пароль, змінений на сервері, але не у файлі, дає збій, що читається як мережева несправність.

Тримайте файл у власності облікового запису, що запускає демон, недоступним для читання нікому іншому й поза резервними копіями, що залишають хост. Серверна опція OpenVPN auth-gen-token видає клієнту токен сеансу після успішного входу, а це менша річ, яку можна залишити лежати, ніж пароль облікового запису. Запишіть крок ротації поруч із файлом у будь-якому разі, бо файл зазвичай переживає людину, яка його створила.

Розтягування переузгодження переносить ціну, але не прибирає її

Інша пропозиція — підняти reneg-sec, доки запит не стане достатньо рідкісним, щоб його ігнорувати. Це переписує графік ротації ключів сеансу й штовхає ту саму проблему облікових даних у пізніший, менш передбачуваний момент; джерела облікових даних воно не створює. Політику, яка з якоїсь причини оновлює ключі за графіком, не варто послаблювати лише заради того, щоб не вводити пароль.

Перевіряйте повторне підключення, а не сеанс, у якому сидите, бо живий сеанс нічого не доводить. Обірвіть тунель з боку сервера або перезапустіть клієнтську службу й подивіться, що зробить наступне переузгодження, коли за клавіатурою нікого немає. Якщо він перепідключається, назвіть механізм, який видав секрет; якщо ні, ви знайшли реальну ціну цієї опції на цьому хості. Будь-який результат дає відповідь, що тримається під час збою, а не ту, що трималася під час тестування.

У керованому парку власник розгортання має вміти назвати три речі: звідки беруться облікові дані, де вони зберігаються й хто їх ротує. Якщо якась із цих відповідей — людина, що налаштувала хост, опція там ще не безпечна.

Схожі статті