Sızmış veb şlüz daha nəyə çata bilər?
Veb şlüz ziyarətçinin nə açdığını məhdudlaşdırır, sızmış hostun nəyə qoşula bildiyini yox. İki baxış, səlahiyyət cədvəli və əlaqə yoxlama əmrləri.
Tutaq ki, veb şlüz hostu sertifikatı hələ qüvvədə ikən sızdırılıb. Ziyarətçinin hansı səhifələri istəyə biləcəyini tənzimləyən hər qayda qüvvədə qalır və bu qaydaların heç biri hücumçunun indi həmin hostdan verilənlər bazası yarımşəbəkəsinə açdığı bağlantını məhdudlaşdırmır. Bu boşluq ona görədir ki, yalnız veb giriş nöqtəsi seqmentləşdirilmiş şəbəkə ilə eyni iddia deyil. İki iddia ayrı-ayrı baxışlar, fərqli başlanğıc nöqtələri tələb edir, birincisi vicdanla irəli sürülməzdən əvvəl.
İki iddia və onlardan yalnız biri ziyarətçidən başlayır
Birinci iddia insan haqqındadır: brauzeri və etibarlı sessiyası olan ziyarətçi bir tətbiqi aça bilər və başqa heç nəyi. Yalnız veb giriş nöqtəsi bu iddiaya yaxşı cavab verir, çünki ziyarətçi marşrut deyil, səhifə alır. Bu cavab dəyərlidir və həm də əksər diaqramların qeyd etdiyi yeganə iddiadır.
İkinci iddia komponent haqqındadır: şlüzün və ya onun arxasındakı tətbiq prosesinin başqasının nəzarətində olduğu fərz edilir. Bu fərziyyədən sual hansı URL-lərə icazə verildiyindən prosesin hələ hansı təyinat və kimliklərə çata bildiyinə dəyişir.
İki iddianın sahibləri fərqlidir, fərqli sübut istehsal edir və bir-birindən asılı olmayaraq uğursuz olur. Kimlik komandası birincini sessiya testi ilə göstərə bilər; ikinci üçün şəbəkə siyasəti, xidmət hesabının baxışı və host nəzarətləri lazımdır. Yalnız ziyarətçi yarısını qeyd edən dizayn baxış slaydında tam, hadisə zamanı isə zəif görünür, çünki sızma sonrası vacib olan nəzarətlər heç vaxt əhatə dairəsində olmayıb. Hər nəzarətin hansı iddianı dəstəklədiyini adlandırın, əks halda bir şlüz qaydası ikisinə də yazılacaq.
İşlənmiş xərc xidməti və onun itirməyin iki yolu
Xərc xidmətini götürək: 10.60.4.10 ünvanındakı açıq şlüz işçiləri identifikasiya edir və təsdiqlənmiş sorğuları 8443 portundakı tətbiq dinləyicisinə yönəldir, həmin tətbiq isə expenses_app rolu kimi 10.60.4.20:5432 ünvanındakı bir PostgreSQL dinləyicisinə çatır. İşçilərin ümumi daxili giriş alması nəzərdə tutulmayıb. Normal iş şəraitində dizayn həqiqətən verilənlər bazası dinləyicisini heç yerdə yayımlamadan tətbiqə xas giriş təqdim edir. Ünvanlar vacibdir, çünki bu məqalədəki hər yoxlama onları adlandırır.
İndi şlüzü etibarlı çoxluqdan çıxarın. Prosesi hücumçuya aid olduqdan sonra 10.60.4.10 hansı təyinat vətərinə çata bilər? Ziyarətçiləri məhdudlaşdıran URL filtri şlüz hostunun verilənlər bazası yarımşəbəkəsinə açdığı bağlantı barədə heç nə demir.
Əvəzində tətbiq prosesini çıxarın və səlahiyyət formasını dəyişir: expenses_app rolu, həmin serverin çata bildiyi xidmətlər və həmin hesabın oxuya bildiyi fayllar. Hər iki halda ön qapı yalnız veb qala bilər, backend sərhədi isə yox. Buna görə ön qapıdakı etiket iki sualdan heç birinin cavabı deyil.
Hər tərəfin həqiqətən daşıdığı səlahiyyəti xəritələndirin
Nəzərdə tutulan icazələr kimi yazılmış müqavilə dizaynı sizə geri təkrar etməyə meyllidir. Onu daşınan səlahiyyət, artıqlığı təkzib edən yoxlama və həmin yoxlamanın sahibi kimi yazın, onda hər sətir sınanabilir olur. Bu cədvəl yuxarıdakı misal üçün təklifdir, məhsul iddiası deyil:
| Component | Authority it actually holds | Check that proves the denial | Owner of the check |
|---|---|---|---|
| Identity provider | Issues assertions and session cookies, and holds no network path of its own | A request to the application URL without a session is redirected to the login page | Identity team |
| Public gateway host | TCP reachability to whatever its routing table and egress rules permit | An egress rule drops 10.60.4.20:5432 and the probe reports the port filtered | Network platform team |
| Application role | SQL privileges granted to expenses_app inside the expenses database | A privilege query shows no ownership or create right on any other schema | Application team |
| Database listener | Accepts connections only from the source ranges named in its host-based rules | A connection from an unlisted address is refused before authentication | Database administrator |
| Management path | Administrative access reserved for patching, monitoring and recovery | A staff workstation cannot reach the administrative port or jump through it | Platform owner |
Mülkiyyət səlahiyyəti izləyir. Kimlik komandası təsdiqləri, şəbəkə platforması komandası marşrutları, tətbiq komandası verilənlər bazası rolunu, verilənlər bazası administratoru dinləyicini və onun host əsaslı qaydalarını, platforma sahibi isə idarəetmə müstəvisini sahiblənir. Sahibsiz rədd sənəddə cümlədir, nəzarət deyil.
Bölgü həm də ikiqat saymanın qarşısını alır. Port məhdudiyyəti cədvəl imtiyazını ifadə edə bilməz və verilənlər bazası rolu hostun əlaqəsiz yarımşəbəkəyə soket açmasının qarşısını ala bilməz.
Şlüzün nəyə çata bildiyini iddia etmək əvəzinə sadalayın
Sərhəd iddiası yalnız arxasındakı sadalama qədər yaxşıdır. Şlüz hostunda üç əmr marşrut seçimini, canlı yoxlamanı və çıxış siyasətini əhatə edir:
ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter outputÇıxışı bu sıra ilə oxuyun. Marşrut 10.60.4.20-nin həmin hostdan ümumiyyətlə seçilib-seçilmədiyini deyir; yoxlama dinləyicinin cavab verib-vermədiyini deyir; qayda siyahısı paketi siyasətin dayandırdığını, yoxsa onun yolunda heç vaxt bir şey olmadığını göstərir.
Salamlamanı tətbiq hostundan təkrarlayın. Oradan verilənlər bazası tərəfi tətbiq rolu ilə icra olunan bir sorğudur:
psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'Başqa sxemi oxuya bilməyən rol altında uğurlu bağlantı, sahib rol altında uğurlu bağlantıdan fərqli nəticədir. Yalnız ikincisi tapıntıdır.
Rəddləri qeyd edin, sonra baxışı tarixləndirin
Qəbul niyyətlər deyil, nəticələr kimi yazılır: işçi sessiyası dinləyiciyə çata bilmir, şlüz hostu əlaqəsiz yarımşəbəkəyə çata bilmir və tətbiq rolu verilənlər bazası yarada bilmir. Hər biri adlı sahibi və tarixi olan ayrı yoxlamadır.
Monitorinqi, yamaqlamağı və bərpanı onlar üçün dizayn edilmiş idarəetmə yolu ilə əlçatan saxlayın. Sahibini də bloklayan sərhəd kəsinti olur və həmin kəsintiyə adi ilk cavab qaydanı yenidən genişləndirməkdir. CISA perimetr tövsiyəsi giriş və çıxış girişinin əsaslandırılmış port və protokollarla məhdudlaşdırılmasını tələb edir, o cümlədən daxili şəbəkələr arasındakı trafik, yəni əksər diaqramların buraxdığı backend tərəfindən başladılan istiqamət.
Baxışı tarixləndirin və sahibini adlandırın. Şlüz obrazına, marşrut cədvəlinə və ya tətbiq roluna hər hansı dəyişiklikdən sonra sadalamanı və imtiyaz sorğusunu yenidən işə salın.