Стежте за вузлами VPN, не записуючи, куди вони ходять
Доступності потрібні чотири поля, а не запис. Читайте рукостискання й лічильники через документований інтервал, тримайте мітки стабільними та задайте правило зберігання.
Для спостереження за вузлом VPN потрібні чотири факти, і жоден із них не є пунктом призначення. Чи піднятий тунель, коли він востаннє обмінювався трафіком, які ключі задіяні та скільки пройшло — цього достатньо для доступності. Усе понад це — запис про людину, і це має бути усвідомленим рішенням, а не побічним ефектом відкриття сторінки стану. Почніть із питання, на яке треба відповісти, а потім виберіть найменший вивід, який на нього відповідає.
Вирішіть питання до інструмента
Спершу запишіть операційне питання: чи підключений цей вузол і чи рухає він трафік? Це питання потребує живого перегляду, а живий перегляд не має проблеми зберігання. Друге питання — чи був вузол підключений у вівторок о 02:00 — потребує збереженого ряду і, отже, рішення про зберігання. Розділення цих двох і є весь дизайн, бо живий перегляд дешевий, а збережений ряд перетворюється на розмову про захист даних.
Тримайте перевірку працездатності окремо й від виводу стану. Недавнє рукостискання доводить, що тунель домовився, а не що застосунок за ним працює, тому перевіряйте застосунок дозволеною перевіркою, а не виводьте це з лічильників. Коли перевірка не проходить, а рукостискання недавнє, проблема за тунелем.
Читайте три поля, які на нього відповідають
Звичайний вивід стану WireGuard містить інтерфейс, відкритий ключ, кінцеву точку, останнє рукостискання та лічильники передавання. Для присутності потрібні відкритий ключ і останнє рукостискання; за потреби додайте лічильники байтів, щоб бачити рух. Кінцева точка для присутності не потрібна і є першим полем, яке слід відкинути, бо вона вказує, звідки підключається пристрій. Сторінка посібника описує кожне поле, яке друкує інструмент, і достатньо коротка, щоб прочитати її один раз:
wg show
wg show wg0 latest-handshakes
Читайте ці числа як вік, а не як логічні значення. Рукостискання актуальне лише щодо власного інтервалу оновлення ключів протоколу, а лічильник, що не зрушив, може означати простійний вузол, а не зламаний. Тримайте обидва в одному поданні, щоб вік і рух читалися разом.
Виберіть інтервал, який можете захистити
Кожен відлік стану — це запис, тому інтервал є рішенням про зберігання з ярликом моніторингу. Відлік раз на десять секунд дає дрібну деталізацію і множить збережені рядки, а відлік раз на хвилину зазвичай достатній для доступності за шосту частину вартості. Вибирайте інтервал за обіцяним часом відгуку, а не за тим, що вміє інструмент. Потім запишіть число біля панелі.
Для OpenVPN засіб стану пише файл із заданим інтервалом. У конфігурації сервера це виглядає так status /var/log/openvpn-status.log 60, де число в кінці — секунди між перезаписами, а файл замінюється, а не доповнюється. Ця деталь важлива: замінений файл не має історії, тоді як збирач, що дописує, її створює.
Переконайтеся, що збирач також дотримується інтервалу. Інструмент, який бере відлік щосекунди і зберігає один рядок за хвилину, усе одно читає щосекунди.
Тримайте мітки стабільними, а зіставлення обмеженим
Відкритий ключ ідентифікує зв’язок пристроїв навіть без прикріпленого імені, тому ставтеся до ключа як до персональних даних, а не як до непрозорого ідентифікатора. Позначайте вузли стабільними внутрішніми ідентифікаторами, що переживають перепідключення, і тримайте зіставлення ідентифікатора з людиною в обмеженому місці. Панель, яка пише часовий ряд, є збереженим записом, навіть коли VPN не веде власного файлу. Коли панель — єдине сховище, саме до неї застосовується правило зберігання.
Перегляньте й шлях експорту, бо скопійований CSV живе довше за систему, що його створила. Зведена доступність часто достатня для звіту: частка вузлів із рукостисканням усередині вікна відповідає на операційне питання, не перелічуючи, хто і коли був підключений.
Опишіть, що ви збираєте, а що ні
Напишіть опис збору простою мовою: які поля, з якого інтерфейсу, з яким інтервалом, де зберігаються, скільки зберігаються і хто може їх читати. Покладіть його поруч із runbook, а не в сховище політик, яке ніхто не відкриває під час інциденту. В описі також має бути сказано, чого моніторинг не бачить, бо саме це заважає комусь припустити, що відсутність даних про перегляд означає відсутність записів.
Переглядайте вікно зберігання щоразу, коли моніторинг змінюється, бо нове поле тихо подовжує те, що зберігається. Потім видаліть те, що опис називає видалюваним, і переконайтеся, що видалення справді відбулося.