Два клиенти на еден хост звучат како уште еден серверски блок и втор порт. Тоа станува друг проект штом ќе наброите се што клиентот навистина го поседува: слушател, базен на тунели, идентитет, датотеки за доверба, рути и распоред за отповикување. Прескокнете едно од нив и вториот клиент тивко наследува дел од првиот. Направете картичка за секој клиент и пополнете ја пред првиот клиент да се поврзе.

Доделете целосна картичка со ресурси за секој клиент

Резервирајте го целиот сет заедно: јавен порт, подмрежа на тунелот, патека на конфигурацијата, одредиште на дневниците, име на примерокот на услугата и уред. Нивното именување како група е она што ја спречува класичната копија на работна датотека што се уште го содржи базенот или интерфејсот на првиот клиент. Вредностите се примери, не резервирани портови, затоа проверете што хостот веќе користи. Услуга што стартува не е исто што и клиент што е целосен.

Држете ја картичката покрај конфигурацијата и ажурирајте ја секогаш кога ќе се промени вредност. Документацијата што се оддалечува од реалноста е полоша од никаква.

Држете го материјалот за доверба внатре во секој клиент

Одделно издавачко тело за секој клиент ја прави границата лесна за размислување и го држи клучот за потпис подалеку од хостот изложен на интернет. Заеднички корен исто така може да работи, но заедничко сидро не прави две услуги еден домен на членство. Одлучете кои синџири ги прифаќа секој слушател и кои идентитети на клиенти ги овластува, потоа запишете ги двете. Не отстранувајте сертификати од синџир со обиди и грешки додека нешто не се поврзе.

Сопствениот приватен клуч на серверот припаѓа во заштитена датотека за секој клиент, а не во директориум со шаблони што се реплицира заедно со конфигурацијата.

Одделете ги мрежите како и процесите

Два процеса на два порта се уште делат хост и табела за рутирање ако не ги одделите. Потврдете што слуша пред да му верувате на дизајнот.

ss -lunp | grep -E '1194|1195'
openssl verify -CAfile customer-a/ca.crt customer-a/client.pem

Проверката на слушателот покажува кој процес го поседува секој јавен порт, а верификацијата покажува дали сертификатот на клиентот се врзува за предвиденото сидро. Ниту еден од излезите не докажува дека клиентот на A не може да стигне до подмрежата на B, затоа дефинирајте политика за извор и одредиште, повратни рути и секоја намерно заедничка услуга. Мрежните именски простори или контејнерите ги одделуваат контекстите за рутирање и го намалуваат случајното мешање, но тие не се целосна граница на закупец сами по себе. Изберете посилен механизам за изолација кога моделот на закани го бара тоа.

Доставете го отповикувањето пред предавањето

Распоредувањето на сертификат не е целосно додека отповикувањето нема пат за доставување. Проверете го издавачот на CRL и прозорецот на важност како дел од воведувањето.

openssl crl -in customer-a/crl.pem -noout -lastupdate -nextupdate
systemctl status openvpn@customer-a

Проверката на CRL известува кога списокот е издаден и кога истекува, а статусот на услугата потврдува дека примерокот што го чита работи. Освежете го списокот според распоредот на политиката за издавање дури и кога ништо ново не е отповикано, бидејќи истечен CRL може да го одбие секој клиент. Објавете целосна датотека наместо да ги оставате читателите да налетаат на делумно пишување, и валидирајте го потписот пред распоредувањето. Запишете кој го поседува издавањето, работата на крајната точка и повлекувањето, така што исклучувањето на клиентот A нема да го наруши B.

Потоа пуштете го приемниот пар: дозволен клиент стигнува до сопствената услуга, а акредитивот на A е одбиен од слушателот на B. Тоа е границата изразена како тест.

Поврзани статии