Упоредите два OpenVPN профила без одавања кључева
Текстуални diff може открити уграђене кључеве исто тако лако као што покаже измењену директиву. Упоређујте по улози на заштићеним копијама, па направите засебну редиговану дијагностичку датотеку.
Два профила, један се повезује а други не, а брз начин да видите зашто је diff. Проблем је што исти diff испише уграђени приватни кључ, статички кључ и сваки блок акредитива који датотека носи, а људи залепе излаз у разговор пре него што примећују. Одлука о томе шта упоређујете долази пре покретања наредбе. Упоређујте структуру и улоге на заштићеним копијама, а кад неко други треба да види, направите засебну редиговану датотеку.
Шта .ovpn датотека заиста носи
Датотека .ovpn је конфигурација са необавезним уграђеним блоковима. Може да садржи CA сертификат, клијентски сертификат, приватни кључ, кључ tls-auth или tls-crypt, те директиве које показују на спољне датотеке или траже акредитиве. Две датотеке могу изгледати готово идентично и разликовати се само унутар блока, или у једној директиви која потпуно мења пренос. Број редова вам не говори ништа о томе шта се од тога догодило.
Разлика унутар блока кључа није јавни доказ ничега. Поново издат сертификат и сертификат са новим кључем могу дати исти облик промене, па неслагање блока говори да је материјал другачији, а не која га је одлука створила. Третирајте то као сигнал да упоредите поља, не као налаз.
Упоређујте по улози, не по реду
Пратите сопствени редослед везе: прво одредиште и пренос, затим поверење и очекивани идентитет, затим аутентификација корисника, затим руте, DNS и скрипт-куке. Тај редослед одговара ономе што клијент ради, па је прва разлика на коју наиђете прва ствар која је могла да прекине везу. Абецедно поређење уместо тога разбацује повезана подешавања по целом излазу.
Преглед који води рачуна о пољима гледа ове ставке тим редом. Све што клијент тражи интерактивно припада реду аутентификације, а не редовима поверења.
remote,protoи порт, укључујући сваки блок везе.caиcert: издавач, субјекат и датум истека.- Да ли је приватни кључ уопште присутан, никад шта садржи.
tls-authилиtls-cryptприсуство и смер кључа.- Директиве аутентификације, укључујући сваку референцу на датотеку акредитива.
- Руте, DNS опције и скрипт-куке које се покрећу при повезивању.
Кад датотека садржи неколико блокова везе, држите сваку опцију уз њено одредиште. Поређење само првог реда remote може да пропусти алтернативу коју клијент заиста бира на овој мрежи.
Зашто је обични diff погрешан алат
Обични diff је направљен за текст, не за тајне. Радо ће исписати приватни кључ у историју екрана и неће вам рећи да директива у коју гледате нема везе са кваром. Издвајање поља је истовремено сигурније и читљивије, јер материјал сертификата може да се пореди као метаподаци, а не као бајтови.
openssl x509 -in ca.crt -noout -subject -issuer -enddate
openssl x509 -in client.crt -noout -subject -issuer -enddate
grep -E '^(remote|proto|port|tls-auth|tls-crypt|route|dhcp-option)' profile.ovpn
Прве две наредбе исписују идентитет и ваљаност без додиривања кључа, па је њихов излаз безбедан за лепљење. grep исписује називе директива и вредности, али никад тела блокова, што га чини правим првим прегледом кад сумњате на разлику у преносу или усмеравању. Ако сам блок мора да се упореди, упоредите његов хеш, а не садржај.
Направите редиговану копију за тикет
Уклоните праве тајне и непотребне идентификаторе, а задржите називе поља и довољно структуре да објасните разлику. Маркер истог облика ипак открива где материјал стоји и колико је био дугачак, па одлучите да ли је и то прихватљиво. Проверите сам коначни прилог, уместо да верујете наредби коју се сећате да сте покренули. Не уређујте радни оригинал само да бисте направили пример, јер редиговани профил није нужно извршан и никада не сме поново да се увезе.
Држите оригинале препознатљивим по имену датотеке и хешу, уместо да их копирате у три директоријума са сличним именима. Хеш ниска је довољна да докаже која је датотека прегледана и не кошта ништа ако исцури. Орежите копије након што се промена затвори, да следећа особа наследи једну ауторитативну датотеку.
Држите поређење везано за квар
Поређење заслужује своју цену кад одговори на питање о једном увозу или једном квару везе. Прво именујте корак који пада, па упоредите само поља од којих тај корак зависи; скупљање свих клијентових акредитива у један директоријум чини следеће цурење вероватнијим, а следећу дијагнозу споријом. Што је питање уже, то је списак поља која могу да одговоре краћи.
Ако је нова датотека дошла од оператера, потврдите пут њене дистрибуције пре него што замените материјал поверења. Након промене прегледајте увезену копију коју је клијент заиста одабрао и договорени резултат, јер директива може бити игнорисана или другачије прочитана од друге верзије клијента. Датотека на диску није доказ везе која је текла. Семантика директива је у OpenVPN 2.6 приручнику.