Зміна пароля VPN без блокування всіх пристроїв
Зміна пароля не оновлює збережені копії. Складіть опис кожного клієнта, замініть збережене значення в його власника й зупиніть цикл повторних спроб.
Три телефони, маршрутизатор і одна перевірка моніторингу досі тримають старий пароль, і один із них перепідключається кожні дев’яносто секунд. Пароль облікового запису змінено десять хвилин тому, тож кожен із цих клієнтів тепер надсилає значення, яке сервер відхиляє. Саме тоді міф руйнується: зміна пароля торкається облікового запису, а не копій старого значення на кожному пристрої. Далі йде робота, яку зміна не виконала.
Міф: одна зміна, одразу всюди
Вважається, що зміна пароля завершує всі сеанси й вимагає чистого повторного входу. Це не так, бо сервер відстежує лише останні прийняті облікові дані, а клієнти зберігають те, що зберегли. Пристрій зі збереженим паролем повторює його за власним розкладом і тихо зазнає невдачі, доки хтось не помітить, що обліковий запис заблоковано. Коли прийняти, що копії живуть поза обліковим записом, ротація перестає виглядати однією дією.
Ніщо з цього не заперечує ротації. Це аргумент за те, щоб вважати збережені копії частиною зміни, а не запізнілою думкою. Блокування зазвичай походить від паралельних повторів: кожен пристрій продовжує надсилати старе значення за власним розкладом, доки не спрацює лічильник. Тоді обліковий запис виглядає атакованим, хоча йому просто пропонують облікові дані, які ніхто не замінив. Ця різниця важлива, бо рішення — список пристроїв, а не суворіша політика блокування.
Складіть опис копій перед ротацією
Напишіть опис до того, як відкриєте форму пароля. Перелічіть кожного клієнта, скрипт, автоматизацію й керований профіль, які автентифікуються як цей обліковий запис: телефон, що підключається сам, маршрутизатор, налаштований два роки тому, ноутбук, що прокидається лише по понеділках, і перевірку моніторингу, яка намагається щохвилини. Для кожного зазначте, де зберігаються облікові дані, чи доступний пристрій під час зміни й який шлях відновлення існує, якщо він не може перепідключитися. Саме цей список перетворює ризиковану зміну на планову, і він має існувати до того, як старий пароль перестане працювати.
Пристрої офлайн — класичний пропуск. Ноутбук у шухляді повертається через три тижні й подає застаріле значення в найгірший момент. Зазначте також його місце й розклад, бо доведеться його наздоганяти, а не чекати.
У парку Linux пошук механічний, а не розумний. Шукайте профілі, що посилаються на файл облікових даних, потім самі файли облікових даних, бо переписувати треба другий список. Повторіть вправу для настільних клієнтів і телефонів, де сховищем є профіль або запис у зв’язці ключів, а не шлях. Мета — список, за яким можна працювати, а не сканування, що стверджує, ніби знаходить кожну копію.
grep -rl auth-user-pass /etc/openvpn /etc/NetworkManager
grep -rl auth-user-pass ~/.config 2>/dev/null
Порівняйте копії з людьми, які ними володіють. Пристрій, на який ніхто не претендує, — це пристрій, який ніхто не оновить, і саме він найімовірніше продовжить повторні спроби.
Який секрет ви насправді ротуєте
Пароль облікового запису — лише одні облікові дані в розгортанні VPN. Парольна фраза ключа, ідентичність сертифіката й необов’язковий секрет партнера мають власний шлях заміни та власного власника. Зміна пароля облікового запису нічого не робить для пристрою, що автентифікується сертифікатом, а перевипуск сертифіката нічого не робить для клієнта зі збереженим паролем. Назвіть секрет, перш ніж називати рішення.
Якщо ротація зумовлена підозрою, а не політикою, процес інциденту важливіший за план зручності. Відкличте те, чого вимагають докази, і прийміть додаткову роботу зі списком пристроїв. Це рішення належить власнику інциденту, а не тому, хто випадково тримає форму скидання пароля.
Замініть збережене значення там, де воно живе
Змініть облікові дані через механізм, який документує служба, потім оновіть збережену копію або виконайте вхід на кожному пристрої, який хочете залишити. Не редагуйте згенеровану конфігурацію за менеджером, що її переписує, бо менеджер відновить старіше значення під час наступного запуску, і правка стане відкладеним збоєм. Оновіть джерело, яке читає менеджер, або використайте власне сховище облікових даних клієнта. У будь-якому разі пристрій має отримати нове значення там, де клієнт справді читає.
Клієнту, який зберігає файл пароля, потрібен переписаний файл, а клієнту, який запитує, потрібен завершений вхід. NetworkManager тримає секрет усередині профілю з’єднання, тож зміна йде через nmcli, а не через текстовий редактор:
nmcli connection modify work vpn.secrets "password=NEW"
nmcli connection up work
Профіль, що читає файл облікових даних, — це третій випадок. Замініть вміст цього файлу, залиште його дозволи закритими й перезавантажте клієнт замість редагування профілю, що на нього вказує. Профіль не змінився; змінився лише секрет, який він читає.
Перепідключіть кожен потрібний пристрій один раз, навмисно, і подивіться, які зазнають невдачі. Якщо пристрій продовжує зазнавати невдачі, подивіться на обліковий запис, на який він указує, і на сховище, яке він читає, перш ніж знову міняти пароль, бо друга зміна примножує копії, які треба оновити. Пристрій, що зазнає невдачі двічі, зазвичай указує на неправильний обліковий запис або читає сховище, якого ви ще не знайшли. Виправте це й підключіться знову.
Сеанси й токени переживають пароль
Зміна пароля не доводить, що наявні сеанси або окремі сертифікати відкликано. Деякі служби тримають сеанс живим, доки він не спливе або його явно не завершать, а видані токени мають власний строк життя. Перевірте, що служба насправді робить, замість того щоб припускати глобальність зміни. Якщо зміна зумовлена підозрою, явно завершіть сеанси й підтвердьте результат.
Настанови щодо життєвого циклу облікових даних у NIST SP 800-63B тримають автентифікатори й сеанси в окремих категоріях, тому зміна пароля й глобальний вихід — різні операції. Ставтеся до них як до двох завдань із двома критеріями завершення. Перше завершене, коли нове значення працює, а друге — коли старих сеансів немає.
Зафіксуйте завершення, не записуючи новий пароль у журнал. Журнал ротації, що містить облікові дані, — це новий інцидент, який чекає на спільному диску. Зазначте дату, оновлені пристрої й пристрої, що ще не завершені.