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 або правілы кліента сеткі, каб «скінуць» доступ. Абодва прадукты ўсталёўваюць уласную інтэграцыю палітыкі, і яе ачыстка стварае хост, які выглядае працуючым, але абыходзіць кантролі, якія вас папрасілі ацаніць. Калі правіла выглядае няправільным, прачытайце яго і змяніце менавіта гэтае правіла. Калі вы не можаце растлумачыць, што робіць правіла, гэта і ёсць знаходка, а не прычына яго выдаляць.
Напішыце знаходку ў тэрмінах самой сістэмы
Важнае тое адрозненне, якое прадукт фактычна забяспечвае, а не тое, што ў шаблоне рэцэнзіі: дазвол дасягнуць канчатковага пункта хоста, дазвол дасягнуць маршрутызаваных прыватных рэсурсаў і дазвол карыстацца праграмай. Публікацыя порта пакідае гэтыя тры рашэнні менавіта там, дзе яны былі, і рэцэнзент, які лічыць іх адным, ухваліць няправільны аб’ём.
Укажыце адрас хоста, апублікаваны порт, прызначэнне кантэйнера і дазвол суседа ў адным сказе. Гэты сказ можа праверыць хтосьці іншы, і менавіта гэта робіць яго знаходкай, а не меркаваннем.