Унутраны ALB і публічнае DNS-імя: ці сапраўды ён адкрыты?
Публічны рэзалвер можа вярнуць прыватныя адрасы для ўнутранага балансіроўшчыка AWS. Праверце схему, шляхі і слухач, перш чым называць яго адкрытым.
Выканайце публічны DNS-запыт да ўнутранага балансіроўшчыка нагрузкі, і вы можаце атрымаць прыватны адрас, што выглядае як памылка канфігурацыі, пакуль вы не праверыце, для чаго гэты запіс. AWS дакументуе, што імёны ўнутраных балансіроўшчыкаў могуць быць публічна развязальнымі, хаця іх вузлы маюць толькі прыватныя адрасы. Рэзалвер адказаў, дзе знаходзіцца сэрвіс; ён не стварыў маршрут, не адкрыў групу бяспекі і нікога не аўтэнтыфікаваў. Ці з'яўляецца гэты адказ праблемай, залежыць ад фактаў, якія можна праверыць па парадку.
Крок першы: чытайце схему, а не IP
Поле схемы — гэта ўласнае сцвярджэнне балансіроўшчыка пра яго мяжу. aws elbv2 describe-load-balancers --names app-internal вяртае Scheme са значэннем internal або internet-facing, а таксама тып адраса для IPv4 або двайнога стэка. Балансіроўшчык, звернуты да інтэрнэту, усё роўна можа перадаваць на прыватныя цэлі, таму бачанне прыватных адрасоў бэкенда нічога не даказвае пра фронт.
Запішыце схему, перш чым глядзець на што-небудзь іншае, бо кожнае наступнае меркаванне ад яе залежыць. Яна таксама паказвае, якія сродкі кантролю існуюць — ад груп бяспекі і правілаў слухача да набору функцый гэтага тыпу балансіроўшчыка. Схема, скапіяваная са старога здымка кансолі, горш за адсутнасць нататкі. Перачытайце яе з API і ўстаўце значэнне ў тыкет.
Крок другі: паглядзіце, у што развязваецца імя
Запытайце з-за межаў VPC з дапамогай dig +short app-internal-1234567890.eu-west-1.elb.amazonaws.com і адзначце, ці адказы знаходзяцца ў 10.0.0.0/8, 172.16.0.0/12 або 192.168.0.0/16. Прыватны адказ ад публічнага рэзалвера — гэта чаканыя паводзіны для імя ўнутранага балансіроўшчыка; гэта не доказ таго, што адрас маршрутызуецца з інтэрнэту.
Развяжыце тое ж імя знутры VPC і параўнайце. Калі два адказы розныя, вы бачыце split-horizon імёны, і гэтая розніца — дэталь дызайну, а не ўцечка.
Крок трэці: пералічыце шляхі, якія могуць да яго дабрацца
Прыватны адрас дасяжны адтуль, дзе існуе маршрут і правіла бяспекі. Пералічыце іх свядома: VPN сайт-сайт, кліенцкі VPN, пиринг VPC, далучэнні transit gateway, Direct Connect і любы проксі або бастыён унутры VPC. Адзін з іх — мэтавы шлях, а астатнія — тыя, якія шукаў бы зламыснік.
Затым праверце сродкі кантролю на кожным шляху: групы бяспекі на балансіроўшчыку, сеткавыя ACL на падсетках і маршрутызацыю, якая наогул стварае гэты шлях. Большасць паведамленняў пра адкрыты ўнутраны сэрвіс вырашаецца тут: альбо існаваў ненаўмысны пиринг, альбо шлях быў наўмысным, а праграма не мела аўтэнтыфікацыі.
Крок чацвёрты: праверце слухач і праграму асобна
Паспрабуйце падключыцца з сеткі, якая не павінна дасягаць сэрвісу, і пераканайцеся, што не можаце. Затым паспрабуйце з той, якая павінна, і пераканайцеся, што дасягаеце слухача. Гэтыя два вынікі аддзяляюць сеткавую дасяжнасць ад паводзін праграмы, і яны — адзіныя доказы, важныя для пытання пра адкрытасць.
Дасяжны слухач — не тое самае, што даступная праграма. Праверце TLS-сертыфікат і палітыку пратакола, затым уласную аўтэнтыфікацыю і аўтарызацыю праграмы. Унутраны інструмент, які прымае любога выклікальніка ў карпаратыўным VPN, адкрыты для кожнага скампраметаванага ноўтбука ў гэтым VPN; гэта іншая рызыка, чым для інтэрнэт-фронту, але ўсё ж рызыка.
Памятайце, што сродкі кантролю адрозніваюцца па тыпе. Міжсеткавыя экраны прыкладнога ўзроўню далучаюцца да адной сям'і балансіроўшчыкаў, а не да другой, таму пацвердзіце, што рэальна даступна для схемы і тыпу перад вамі, замест таго каб меркаваць роўнасць.
Крок пяты: вырашыце, ці мае значэнне само імя
Публічная развязальнасць можа раскрыць імя сэрвісу, рэгіён і дыяпазон адрасоў. Стаўцеся да гэтага як да пытання раскрыцця інфармацыі з палітычным адказам, а не як да аўтаматычнага інцыдэнту: трымайце адчувальныя бізнес-тэрміны па-за імёнамі рэсурсаў і адзначце раскрыццё ў вашым рэестры рызык, калі канвенцыя наймення паказвае больш, чым вы хочаце.
Калі арганізацыя хоча прыватнага наймення, прыватная host-зона можа абслугоўваць alias, які развязваецца толькі ўнутры звязаных VPC. Гэта змяняе імя, якое бачаць карыстальнікі; яно не робіць імя, створанае правайдэрам, сакрэтным і не выдаляе ніводнага сеткавага шляху.
Не спрабуйце замацаваць адрасы, каб схаваць адказ. Адрасы балансіроўшчыка змяняюцца, замацаванне псуе звычкі праверкі TLS, а кантроль, які вам сапраўды патрэбны, — гэта хто можа ўсталяваць злучэнне і што праграма ад іх патрабуе. Праверце чатыры факты, запішыце іх, і пытанне перастае быць неадназначным.