Връзка на OpenVPN се проваля, някой намира поправка в един ред, която добавя SECLEVEL=0, и тунелът се вдига. Промениха се не сертификатът и не наборът от шифри; премести се праг на приемане на ниво библиотека и всичко, което процесът прави след това, наследява новата граница. Това си струва да се разбере, преди същият ред да бъде копиран във всеки профил в средата.

Определете коя библиотека и коя политика действат

SECLEVEL е понятие на OpenSSL, затова първият въпрос е дали вашата компилация изобщо използва OpenSSL. OpenVPN може да бъде свързан с повече от една криптографска библиотека и настройка, която важи за една от тях, е безсмислена за другите. Попитайте изпълнимия файл с какво е създаден, после попитайте библиотеката каква версия и конфигурация е заредила:

openvpn --version | head -3
openssl version -a

Прочетете изхода за версията внимателно, защото дистрибуциите променят настройките по подразбиране. Някои доставят системна конфигурация, която вдига минималното ниво над подразбирането на upstream и затова един и същ профил се държи различно на две машини с идентични пакети OpenVPN. Действащата политика е тази, която зареденият процес използва, а не тази от ръководството на upstream.

След това разделете двата слоя, които хората бъркат. OpenVPN има свои собствени TLS контроли, включително настройка за профил на сертификата и явни списъци с шифри, и те стоят над всичко, което библиотеката налага. Свалянето на нивото на библиотеката не променя кои шифри изброява вашата конфигурация на OpenVPN, а стесняването на списъка на OpenVPN не вдига прага на библиотеката. Да знаете кой слой ви е отказал е това, което пази поправката от това да остане догадка.

Разделете трите неща, които могат да бъдат отхвърлени

Първият кандидат е идентификационен материал: сертификат, чийто ключ е твърде малък или чийто алгоритъм за подпис политиката вече не приема. Вторият е параметър за обмен на ключове, например група, която политиката смята за твърде слаба. Третият е набор от шифри, който политиката изключва. И трите могат да причинят неуспех при ръкостискане и само текстът на грешката и етапът на договаряне ги различават.

Нито едно от тези три не е шифърът на канала за данни. OpenVPN договаря шифроването на тунела отделно от TLS ръкостискането, затова връзка, която успява след промяна на нивото на сигурност, не казва нищо за това кой шифър защитава полезния ви товар. Ако въпросът, който всъщност задавате, е за поверителността на данните, гледате напълно грешния регулатор.

Свалянето на нивото разширява приемането и на трите входа наведнъж. Това е частта, която хората пропускат: поправката, която допуска стар сертификат, допуска също слаба група и набор, който може би не сте имали намерение да разрешавате. Една грешка предизвика промяната и промяната е по-широка от грешката. Тази асиметрия е причината ограничено изключение да е по-добро от подразбиране за цялата среда.

Променете входа, а не прага

Запазете точната грешка, преди да пипате конфигурацията, включително етапа, който я е докладвал, и обекта, който е посочила. Проблемът със сертификата се решава чрез замяна на сертификата с нещо, което текущата политика приема, което обикновено означава преиздаване от органа, а не преинсталиране на същия файл.

Ако отхвърленият вход принадлежи на партньор, който не контролирате, разговорът е с неговия собственик за поддържан заместващ материал. Свалянето на собствения ви праг, за да приютите система, която никой не поддържа, прехвърля разхода от нея към всички, които се свързват след нея.

Където сървърът налага политиката, проверете дали настройка на ниво OpenVPN е действителната причина, преди да обвинявате библиотеката. Профил на сертификата, който изисква по-строг клас, отколкото внедреният сертификат може да удовлетвори, ще се провали независимо от нивото на сигурност и премахването на този профил е по-тясна промяна от изключването на проверките на библиотеката.

Ако трябва да го свалите, ограничете го и го запишете

Понякога одобрено изключение за съвместимост е правилният отговор, особено за стар партньор с датиран план за оттегляне. Ограничете го до услугата, която го нуждае, а не до целия хост: конфигурационен файл за конкретна услуга или отделна конфигурация на OpenSSL има по-малък обхват от експорт в глобалния профил.

Запишете четири неща с изключението: точната настройка, собственика, който го е одобрил, клиентите, които засяга, и условието, при което се премахва. Изключение без условие за оттегляне е постоянно отслабване с прикачено временно оправдание.

Връщането назад трябва да е една стъпка, която вече сте тествали. Пазете предишната конфигурация, приложете промяната, потвърдете, че услугата стартира, и знайте точно кой файл да възстановите, ако следващата връзка се държи различно от очакваното.

Проверете самоличността и защитата след това

Успешната връзка доказва само, че преработените условия са я допуснали. Потвърдете, че проверката на името на хоста и на партньора още върши работата си, че използваният сертификат е този, който сте смятали да внедрите, и че договореният канал за данни отговаря на политиката, която мислите, че имате.

openssl x509 -in /etc/openvpn/client.crt -noout -subject -dates -text | grep -E 'Signature Algorithm|Public-Key'
openvpn --show-tls | head -20

Справката на OpenSSL за нивата на сигурност е категорична, че рамката прилага ограничения върху ключове, подписи, групи и набори заедно и че нулевото ниво разрешава всичко, което проверява обратното извикване. Това е обхватът на промененото от вас и това е изречението, което да цитирате, когато някой попита дали поправката е била тясна.

Предаването, което издържа одит, казва коя политика кой вход е отхвърлила, какво е променено и какво остава прието в резултат. „Работи със SECLEVEL=0“ е наблюдение за една връзка, не оценка на сигурността на внедряването.

Подобни статии