auth-nocache з файлом облікових даних: допомагає чи шкодить?
auth-nocache відкидає запитані облікові дані з пам’яті. Коли пароль лежить у файлі, попередження означає менше, і параметр може зламати повторне узгодження.
OpenVPN під час запуску виводить попередження, яке пропонує auth-nocache, і спокуслива відповідь — додати параметр і дивитися, як рядок зникає. Ця порада передбачає інтерактивний вхід. Щойно ім’я користувача й пароль живуть у файлі, порівняння змінюється: параметр перестає захищати довготривалу копію, а на клієнті, що скидає привілеї, він може згодом зламати повторне узгодження. Дві моделі зберігання варто тримати окремо, перш ніж правити профіль.
Два способи відповісти на запит облікових даних
Перша модель — людина, яка вводить облікові дані в терміналі, або інтерфейс керування, що тримає їх протягом сеансу. OpenVPN зберігає цю копію, щоб відповісти на наступне узгодження без повторного запитання, і попередження саме про це. На диску нічого не задіяно, тому єдине, що треба захищати, — процес, який тримає значення. Закрийте клієнт, і копія зникне разом із ним.
Друга модель — auth-user-pass , що вказує на файл, де файл і є сховищем, а клієнт читає його, коли потрібне значення. Істотне тут — не пам’ять процесу, а права й власник цього файлу. Попередження під час запуску походить із директив у конфігурації, а не з перевірки того, як ви подаєте пароль, тому воно з’являється в обох моделях і не вказує на жодну.
Решта цього порівняння випливає з такого поділу: робота з пам’яттю для однієї моделі, робота з файлом і ідентичність процесу для іншої.
Що auth-nocache насправді відкидає
За інтерактивного входу --auth-nocache видаляє збережену копію з пам’яті після використання. Ціна — новий запит на кожному інтервалі повторного узгодження, бо наступний круг не може повторно використати відкинуте.
За входу через файл клієнт може прочитати файл знову, тому відкидання здебільшого непомітне. Воно стає помітним в одному місці, де його не чекають: після того як демон скине привілеї, якщо файл облікових даних недоступний для читання тому обліковому запису, під яким він тепер працює.
Додавайте параметр тому, що розумієте цей обмін, а не тому, що з’явилося попередження. Параметр, доданий, щоб журнал став тихішим, — це параметр, чий ефект ніхто не виміряв.
Де ламається шлях через файл
Клієнт, який стартує як root, щоб відкрити тунельний пристрій, а потім перемикається на user і group , читає файл облікових даних двічі: один раз до перемикання, один раз під час наступного узгодження. Якщо у файлу режим 600 і власник root, друге читання не вдається, і збій проявляється за годину як помилка автентифікації, схожа на проблему сервера. Перевірте журнал клієнта навколо інтервалу узгодження, потім перевірте обліковий запис і файл разом.
stat -c '%a %U:%G' /etc/openvpn/client.creds
ps -o user:12,args -C openvpn | headОбидва рядки важливі. Перший каже, хто може читати файл, другий — хто насправді працюючий демон, і невідповідність між ними пояснює збій, який жодне повторне введення пароля не виправить.
Практичні виправлення не ефектні: перенесіть файл до каталогу й власника, які може читати обліковий запис демона, або залиште привілейоване читання й підтвердьте, що клієнт читає лише один раз. Не розв’язуйте це тим, що зробите файл читабельним для всіх.
Випадок, який справді хоче параметр
Вхід з одноразовим кодом хоче auth-nocache з іншої причини. Одноразовий код витрачається під час першої автентифікації, тому кешована копія марна під час наступного узгодження, а застаріле значення можна навіть відтворити.
Це питання про тип облікових даних, а не про те, де вони зберігаються. Статичний пароль у захищеному файлі має протилежний профіль: він мусить бути читабельним під час кожного узгодження, а потрібний захист — на файлі.
Тримайте ці дві причини окремо в коментарях профілю, інакше наступний адміністратор припустить, що параметр стоїть там із тієї причини, яку обрав би він.
Порівняння в одному рішенні
Обирайте інтерактивну модель, коли є людина і важлива свіжість, і приймайте повторний запит як її ціну. Обирайте файлову модель, коли клієнт працює без нагляду, і витрачайте сили на власника, режим і скидання привілеїв.
Жодна модель сама по собі не робить збережений пароль безпечним, і жодна не робить попередження під час запуску осмисленим.
Якщо попередження — єдина причина, з якої ви відкрили профіль, запишіть рішення, а не непояснений параметр: облікові дані беруться з файлу, який може читати обліковий запис демона, узгодження спостерігалося успішним, і розділ про узгодження в посібнику OpenVPN 2.6 було прочитано перед зміною його інтервалу. Ця нотатка переживе будь-який окремий прапорець.