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 был прочитан до изменения его интервала. Эта заметка переживёт любой отдельный флаг.

Похожие статьи