Meshnet, Docker и разрешението помежду им
Възел в мрежата, който достига до публикуван контейнер, пресича разрешение на хоста и транслация на Docker. Прегледайте двете отделно, иначе одобрявате грешен обхват.
Два URL адреса могат да изглеждат еднакви от браузъра на връстник, но да означават съвсем различни неща за защитната стена. Единият сочи към услуга, която слуша на самия хост. Другият сочи към адрес на хост, чийто порт е публикуван в мрежа на контейнер, където стъпка на транслация предава връзката на друг IP. В мрежа връстник до връстник, която управлява достъпа до локалната мрежа с разрешение за всеки връстник, тази разлика е целият преглед.
Разрешението е за крайната точка на хоста, транслацията е за Docker, а входът е за приложението. Три решения, три места за проверка.
Проследете дестинацията след публикуването
Вземете Linux хост с Docker, който публикува порт 80 на контейнер на порт 8080 на хоста. Връстник се свързва с мрежовия адрес на хоста на 8080, хостът приема връзката и транслация на дестинацията я пренаписва към мостовия адрес на контейнера, обикновено нещо като 172.17.0.2 на порт 80.
Когато едно правило прегледа този поток, интересната дестинация е контейнерът, а не хостът. Политика, която разсъждава само за «услуга на тази машина», разсъждава за грешен обект. Заявката е пристигнала на хоста, но се доставя другаде.
Затова документацията на мрежата включва контейнерите на Docker сред ресурсите, които разрешението за локална мрежа управлява на Linux. Разрешението не е синоним на обикновен запис в списъка с разрешения на VPN и двете контроли не се заместват взаимно. Едната решава дали връстникът може изобщо да достигне локални ресурси; другата решава кои дестинации носи тунелен маршрут.
Решете колко локален достъп дава едно разрешение
Предоставянето на достъп до локалната мрежа на връстник не е решение за един контейнер. То може да разкрие други публикувани услуги на същия хост и може да стигне по-далеч в зависимост от това как хостът препраща. Прегледайте ефективния обхват, преди да натиснете превключвателя за едно табло.
След това вижте къде Docker публикува порта. Публикуването на 0.0.0.0 създава слушател на всеки адрес на хоста, което може да добави обикновен запис за LAN до мрежовия. Ако изискването е само мрежата, обвържете публикуването с конкретния адрес или интерфейс, който имате предвид, и третирайте по-широкото обвързване като отделна констатация, а не като удобство.
Дръжте политиката за препращане на хоста и собствената автентикация на приложението достатъчно тесни за услугата. URL адрес, който изглежда частен, не е контрол на достъпа, а контейнер, който се доверява на всеки източник в мостовата си мрежа, не е защитен от факта, че връстникът е одобрен. Автентикацията на приложението е третото решение и е единственото, което знае кой е потребителят. Разрешение на ниво хост не може да даде това знание.
Тествайте разрешението, не само URL адреса
От одобрения връстник отворете точната услуга и потвърдете, че работи. След това опитайте дестинация, която трябва да остане забранена, и потвърдете, че не работи. Тестването само на щастливия път ви казва, че разрешението е дадено; то не казва, че границата е там, където мислите.
Сравнете отделно услуга, присъща на хоста. Ако база данни слуша на хоста, а табло работи в контейнер, те следват различни пътища през същото разрешение и може да не се управляват еднакво от политиката за препращане на хоста. Запишете кое кое е, преди да напишете бележката за прегледа.
Не изчиствайте таблиците на Docker или правилата на мрежовия клиент, за да „нулирате“ достъпа. И двата продукта инсталират своя интеграция с политики и изчистването ѝ създава хост, който изглежда работещ, но заобикаля контролите, които са ви помолили да оцените. Ако правило изглежда грешно, прочетете го и променете точно това правило. Ако не можете да обясните какво прави едно правило, това е констатацията, а не причина да го изтриете.
Напишете констатацията с термините на самата система
Важно е разграничението, което продуктът действително налага, а не това в шаблона за преглед: разрешение за достигане на крайна точка на хост, разрешение за достигане на маршрутизирани частни ресурси и разрешение за използване на приложението. Публикуването на порт оставя тези три решения точно където бяха, а рецензент, който ги третира като едно, ще одобри грешен обхват.
Посочете адреса на хоста, публикувания порт, дестинацията на контейнера и разрешението на връстника в едно и също изречение. Това изречение е проверимо от някой друг и именно това го прави констатация, а не мнение.