Барлығы құрылыс жүргізушісі VPN қонағы пайдаланатын сол хост сокетін қажет етпейінше жұмыс істейді, содан кейін жұмыстың неге шлюз кілттерін оқи алатынын ешкім түсіндіре алмайды. Барлығы бір машинаға орнатылды, өйткені сыятын, және әр қонаққа кең қатынас берілді, өйткені оны іске қосудың ең жылдам жолы сол еді. Нәтиже — сенім шекарасы қуат кабелі болып табылатын хост. Рөлдерді бөлу естілгеннен аз жұмыс, ол оларға ат қоюдан басталады.

Қазір бәрін бөлісетін үш рөл

VPN кіреберісі, жеке қызметтер жиынтығы және құрылыс жүргізушісі әртүрлі нәрселерді қалайды. Біріншісіне ашық порт пен жеке жақтағы тар желі керек. Екіншісіне тұрақты сақтау және қолданба құпиялары керек. Үшіншісі басқа біреу жазған кодты орындайды.

Үшеуіне бірдей қатынас беру симптомды шатастырады, өйткені содан кейін олардың кез келгені басқаларға әсер ете алады. Гипервизор сокетіне жететін құрылыс жұмысы VPN-ды тоқтата алатын жұмыс. Басқару желісіне маршруты бар қызмет қонағы коммутатор конфигурациясын өзгерте алады. Өкілеттіктер — мәселе, ал процесс тізімі тек оның көрінетін орны. Рөлдерді алдын ала атау әр өкілеттікке өмір сүретін орын береді.

Төмендегі эскиз осы бөлудің бастапқы нүктесі, жоғары қолжетімділік уәдесі емес. Оны тексерілетін болжам ретінде қарастырыңыз, дайын дизайн ретінде емес.

Үш процесті емес, үш рөлді бөліңіз

Бір хосттағы үш қонақ үш өкілеттік жиынтығын және үш желілік орынды береді. Олар үш ақау доменін бермейді, және дизайн мұны дауыстап айтуы керек.

Бөлу бір қонақтағы бұзушылық қалғандарына өкілеттікті автоматты түрде бермегенде ғана көмектеседі, ал бұл гипервизор параметрі, ат қою дәстүрі емес. VM-ді шлюз деп атау басқа қонақтың хостқа жетуіне кедергі болмайды. Хост атының орнына виртуалды коммутатор конфигурациясын оқыңыз, содан кейін әр қонақ өзі ойлаған жерде отырғанын растаңыз.

host
├─ vpn-gw      10.60.10.2/24   public 51820/udp only
├─ services    10.60.0.10/24   no route to the management network
└─ ci-runner   10.60.20.2/24   outbound only, no host socket

Топологияны жазып алыңыз, содан кейін оны иеленетін құралдармен тексеріңіз. Дұрыс емес көпірде пайда болған қонақ — бұл дерек емес, табылым. Кез келген қызмет конфигурациясын өзгертуден бұрын желіні түзетіңіз.

VPN қонағына тек өзіне тиесілі есіктерді ашуға рұқсат етіңіз

Туннель портын маршрутизаторда жариялаңыз, басқа ештеңе емес. Қонақтарды басқару порттары басқару жолына жатады, интернетке емес, гипервизордың өз интерфейсі де сонда жатады.

Жеке жақтағы желі қашықтағы пайдаланушыларға қажет қызметтерге жетуі керек және сонда тоқтауы керек. Қолданба аутентификациясы қосулы қалады, өйткені туннель — тасымал, кіру емес. VPN қонағының маршруттау кестесін бір сөйлеммен сипаттауға болатындай шағын ұстаңыз. Егер оны соншалықты қарапайым сипаттай алмасаңыз, шекара әлдеқашан бұлыңғырланған.

virsh net-list --all
virsh net-dumpxml lab-private
sudo nft list ruleset | grep -n -E '51820|10.60'

Хостта тыңдап тұрған және басқаруға қажет емес нәрсенің бәрі мүлде тыңдамауы керек. Бұған гипервизор API-і кіреді, оны ашық интерфейсте ашық қалдыру оңай.

Құрылыс жұмыстарына басқа типтегі шекара керек

CI жұмысы репозиторий басқаратын командаларды орындайды, сондықтан оның сенімі кодты кім жібере алатынына байланысты. Shell орындаушысы бұл командаларды хостта жүргізушінің пайдаланушысы ретінде орындайды, және бұл қолжетімді ең кең шекара.

Контейнер орындаушылары тар, ал артықшылықты контейнер тарлардың қатарында емес. Жүргізушіні өз желілік ауқымы бар жеке қонағында ұстаңыз және оған жұмыстарға қажет артефактілер мен орналастыруға қатынасты ғана беріңіз. Бір реттік жұмысшылар сақталған күйді азайтады; олар қолжетімділікті немесе құпиялардың ашылуын азайтпайды. Екеуіне де әлі нақты шектеулер керек.

Қызметтер қонағы деректерге ие, сондықтан оның резервтік жоспары жұмыс істеуі керек жоспар. Репозиторийлерді, жүктеулерді және дерекқорды бір кестеде ұстаңыз. Жұмыс күйін оқудың орнына қалпына келтіруді сынаңыз.

Үшеуі бөлісетін ақауға жоспар құрыңыз

Бір хост — бір ақау домені. Қайта жүктеу туннельді және әр жеке қызметті бір мезетте жояды, ал дәл сол кезде ішке кіретін жол ең маңызды болады.

VPN қонағына тәуелді емес консоль қатынасын сақтаңыз, ол физикалық консоль, жолақтан тыс басқару интерфейсі немесе провайдер консолі болсын. Сол дискіде сақталған сурет тәуелсіз көшірме емес, және өзі қорғайтын қонақтың ішінде жүретін резервтік көшірме де емес. Содан кейін суық іске қосуды тексеру тізімі ретінде емес, реттілік ретінде сынаңыз: хост, виртуалды желілер, туннель жолы және қарапайым тіркелгідегі бір аталған қолданба.

virsh list --all
systemctl is-active libvirtd
curl -sS -m 5 -o /dev/null -w '%{http_code}\n' https://10.60.0.10/
ss -ltnp | grep -E ':51820|:443'

Процестердің іске қосылу реті маршруттар мен DNS туралы ештеңе дәлелдемейді, сондықтан бірліктердің күйін емес, жолды сынаңыз. Жол — қашықтағы пайдаланушыға шынымен қажет нәрсе.

Қатысты мақалалар