Защитната стена между портове не е граница на хоста
Два отворени порта и едно правило на защитната стена пропускат най-важното: какво може да чете и контролира уеб работникът. Проверявайте отказа, не само услугата.
Уебсайтът отговаря на 443, VPN отговаря на 1194, защитната стена пропуска точно тези две и прегледът минава. Нищо в тази последователност не попита какво може да чете уеб работникът или кои файлове може да пренапише. Компрометиран работник не се нуждае от отворен порт, ако може да достигне контролен сокет или директория за конфигурация с права за запис. Границата е власт, а слушателите са само частта, която се вижда лесно.
Отделно име на услуга е етикет; отделна идентичност е свойство за сигурност.
Бройте властта на работника, не портовете
Започнете с потребителя за изпълнение, неговите групи, възможности и изглед към файловата система. Сервизен акаунт, който случайно принадлежи на VPN група, може да чете ключов материал без нито един отворен порт. Монтиранията с права за запис са другата половина: качванията и кешовете трябва да стоят далеч от файлове за политики и тайни, а ненужно споделена директория с права за запис обезсмисля подреденото именуване. Проверете процеса, който би извършил операцията, защото привилегирован родител и непривилегировани работници не споделят една власт.
Това, че VPN ключ е четим при стартиране на демона, не означава, че уеб работникът се нуждае от него. Отделете четенето, което извършва демонът, от достъпа, който се дава на приложението.
Сокети, които дават повече, отколкото изглежда
Някои крайни точки са административни API, облечени като поток от метрики. Интерфейсът за управление на VPN може да променя сесии, да прекъсва клиенти и да чете състояние. Сокетът на контейнерната среда за изпълнение е още по-широк: достъпът до него на практика е контрол над хоста, далеч отвъд нуждите на уеб приложение. Нито един от двата не принадлежи към набора от монтирания на обикновено приложение и нито един не се появява, когато броите слушащите портове.
Свързването на административен слушател с локален адрес е начало, а не пълно ограничение, защото всеки входящ път към този адрес все още има значение. Разрешавайте само предвидените източници и интерфейси.
Контейнерите споделят едно ядро
Контейнерите добавят граници за процеси, файлова система и мрежа и споделят едно ядро с хоста. Това прави избора на възможности, монтиранията на хоста и достъпа до демона решаващи: монтирането на тайни на хоста или даването на привилегирован контрол върху средата за изпълнение заличава границата, която етикетът на контейнера предполага. Отделните VM наистина дават отделни ядра за гости, докато хипервизорът, административните идентичности, съхранението и резервните копия остават споделени. Изберете границата, чиято конфигурация и обновяване имат посочен собственик.
По-сложна подредба, която никой не поддържа, е по-лоша от проста, която наистина се преглежда.
Проверете отказа, после услугата
Използвайте одобрени проверки в реалния контекст на работника, за да потвърдите, че той не може да променя VPN политика, да чете ненужни тайни или да докосва интерфейса за управление. Успешно четене като администратор не проверява нищо относно този отказ. След това проверете уебсайта, обикновена разрешена VPN операция и какво се случва с всяко от тях при рестартиране. Пазете път за възстановяване, който не зависи от поправянето на VPN, така че грешката да остане поправима.
Двете роли все още споделят CPU, памет, капацитет на връзката нагоре и събития по поддръжка. Тези споделени ресурси принадлежат в плана, дори когато границата на властта е чиста.
Запишете какво може да прави всеки процес, какво се чупи, ако той спре, и коя граница остава споделена. Броят на портовете не е такъв запис.