Статичен ключ или TLS за връзка OpenVPN между два върха?
Статичният режим на OpenVPN не може да сменя ключовете си за трафик. Ако два върха се нуждаят от автоматично подновяване, преминете към режим TLS и оставете схемата точка-точка непроменена.
Две машини, които говорят само една с друга, могат да запазят тази топология и пак да получат договорени ключове за трафик. Формата на мрежата и режимът на защита са независими избори и именно бъркането им кара хората да се опитват да сменят статична тайна, като подменят файл, докато и двата демона продължават да работят. Подмяната на ключовия файл при работеща двойка не сменя нищо. Статичният режим, който OpenVPN 2.6 отбелязва като остарял, държи един ключ за целия живот на тунела, така че файлът на диска и ключът в паметта отново съвпадат само след рестартиране на двата края. Ако изискването е автоматично подновяване, режимът на защита трябва да се промени.
Какво не може статичният режим
В режим на тайна двата върха споделят предварително споделен ключ, който криптира и удостоверява тунела директно. Няма ръкостискане, така че няма механизъм някоя страна да предложи нов ключов материал, да докаже самоличност или да се възстанови от несъответствие без намеса на оператор. И двете свойства следват от липсата на канал за управление, а не от липсваща опция, и никой конфигурационен флаг не добавя такъв към този режим.
В ръководството на OpenVPN 2.6 изрично е казано, че ключът остава, докато не бъде генериран нов. Това е приемливо за лабораторна връзка или фиксирана двойка устройства с документирана процедура за смяна и е неприемливо навсякъде, където дълготрайна тайна е реален риск. Подмяната на файл не създава нов ключ за работеща двойка; тя създава два върха, които не се разбират. Затова замяната на файла добавя прекъсване, без да добавя смяна.
Също няма представа за самоличност на връх извън притежаването на файла. Всеки, който държи ключа, е връх и нищо в тунела не записва коя страна коя е, така че отнемането е навсичко или нищо.
Преминаване към TLS без препроектиране на връзката
Режимът TLS добавя канал за управление и с него възможността да се договарят ключове за канала с данни. При внедряване точка-точка едната страна поема ролята на сървър, а другата — на клиент, но топологията остава връзка между два върха: всяка страна знае крайната точка на другата и не се появява пул или многопотребителска услуга. Ролите са подробност от ръкостискането, а не нова архитектура.
Дайте на всяка машина собствена самоличност. Всяка страна се нуждае от сертификат и частен ключ, от котвата на доверие, която валидира другата, и от правило за проверка на връх, което посочва кой се очаква. Не използвайте повторно частния ключ на единия връх на другия, за да пестите време; това превръща две самоличности в една и премахва възможността да отнемете която и да е страна отделно. Регистрацията е мястото, където това се прави правилно, защото поправянето по-късно означава преиздаване на сертификати.
Пазете мрежовия договор непроменен, докато защитата се променя. Същите адреси на тунела, маршрути и разрешени услуги трябва да важат преди и след това, за да бъде отказ по време на миграцията проблем на защитата, а не прикрита изненада в маршрутизацията. Запишете адресите и маршрутите преди промяната; сравняването им след това е по-бързо от възстановяването им по памет.
Някои внедрявания защитават и канала за управление със собствен статичен ключ, който не се сменя с канала за данни. Този ключ пази ръкостискането, а не полезния товар, така че компрометирането му разкрива договарянето, а не трафика. Съхранявайте го отделно от материала за канала с данни и му дайте дата за подмяна, за която отговаря посочено лице. Смяната му означава рестартиране на двата върха в координиран прозорец, поради което заслужава запис в календара, а не в паметта.
Кой какво подновява и кога
В режим TLS подновяването се управлява от зададени граници: интервал от време, брой байтове или брой пакети. Документираният контрол по време е това, на което разчитат повечето внедрявания, а по-ниската ефективна стойност при двата върха може да започне подмяната, така че вдигането ѝ само от една страна няма да задържи събитието. Ограниченията по обем съществуват, защото натоварена връзка може да изчерпи ключ много преди часовникът да го направи. Нито една от границите не е проверка на здравето и нито една не ви казва, че подновяването е успяло.
Затова диагностицирането на повтарящо се предоговаряне от един конфигурационен файл е подвеждащо. Прочетете настройките на двата върха, после погледнете прехода в журнала, вместо да предполагате неизправност. Подновяване, което завършва чисто, изглежда като кратък изблик на трафик по канала за управление, а не като прекъсване на връзката.
Пазете обектите отделно в главата си. Сертификатът доказва дългосрочна самоличност и се подменя по график, който вие контролирате. Ключът на канала за данни се обновява автоматично, а отделен обмен за удостоверяване, ако внедряването го изисква, следва политиката на акаунта и може да се нуждае от собствени уговорки за по-късни обмени.
Пълното изключване на подновяването, чрез задаване на интервала на нула, не е поправка за шумен журнал. То превръща здравословно събитие от жизнения цикъл в постоянен ключ, което ви връща към свойството, от което се опитвахте да излезете.
Приемане на промяната
Изградете новата конфигурация от поддържания пример на инсталираното издание, а не от стар минимален фрагмент, чиито алгоритми и пътища до файлове са наследени от друго място. Координирайте превключването, така че двата върха да се променят заедно, и пазете одобрен път за възстановяване, в случай че една страна не се вдигне. Свалете връзката нарочно, вместо да чакате прекъсване, за да тествате връщането. Връщане, което сте репетирали, струва повече от връщане, което сте описали.
Тествайте три неща: първоначалната проверка на самоличността успява, предвиденият поток на приложението работи и контролирано подновяване се случва без загуба на трафик. След това прочетете прехода в журнала за това какво всъщност доказва: нов идентификатор на ключ означава, че върховете са завършили подмяна, а не че тунелът се е свързал отново. Отнасяйте се към него като доказателство за една стъпка и проверете броячите на трафика, преди да обявите миграцията за завършена.
Какво би скрило обещанието за нулево прекъсване: отказът, който още не сте видели. Неуспешно подновяване, изтичащ сертификат или повреда в пътя все още могат да смутят връзката и никое от тях не се изключва от чист тестов пробег. Свойството, за което си струва да се проектира, е по-тясно и по-полезно: рутинната смяна на ключове престава да бъде ръчна подмяна на файл.