რას შეიძლება კვლავ მიაღწიოს გატეხილმა ვებ-კარიბჭემ?
ვებ-კარიბჭე ზღუდავს, თუ რას ხსნის ვიზიტორი, და არა იმას, თუ რას დაუკავშირდება გატეხილი ჰოსტი. ორი მიმოხილვა, უფლებამოსილების ცხრილი და მიღწევადობის შემოწმების ბრძანებები.
დავუშვათ, კარიბჭის ჰოსტი გატეხილია მაშინ, როცა მისი სერტიფიკატი ჯერ კიდევ მოქმედია. ყველა წესი, რომელიც განსაზღვრავდა, რომელ გვერდებს შეიძლება მოითხოვოს ვიზიტორმა, ძალაში რჩება და არცერთი ეს წესი არ ზღუდავს იმ კავშირს, რომელსაც თავდამსხმელი ახლა ხსნის ამ ჰოსტიდან მონაცემთა ბაზის ქვექსელისკენ. სწორედ ეს ნაპრალია მიზეზი, რომ მხოლოდ ვებ-შესასვლელი წერტილი არ არის იგივე მტკიცება, რაც სეგმენტირებული ქსელი. ორივე მტკიცებას სჭირდება ცალკე მიმოხილვა, სხვადასხვა საწყისი წერტილიდან, სანამ რომელიმეს პატიოსნად წარმოდგენა შეიძლება.
ორი მტკიცება და მათგან მხოლოდ ერთი იწყება ვიზიტორთან
პირველი მტკიცება ადამიანს ეხება: ბრაუზერისა და მოქმედი სესიის მქონე ვიზიტორს შეუძლია ერთი აპლიკაცია გახსნას და მეტი არაფერი. მხოლოდ ვებ-შესასვლელი წერტილი კარგად პასუხობს ამ მტკიცებას, რადგან ვიზიტორი იღებს გვერდს და არა მარშრუტს. ეს პასუხი ღირს შენარჩუნებად და ესეც ერთადერთი მტკიცებაა, რომელსაც დიაგრამების უმეტესობა აფიქსირებს.
მეორე მტკიცება კომპონენტს ეხება: ვარაუდობენ, რომ კარიბჭე ან მის უკან არსებული აპლიკაციის პროცესი სხვის კონტროლქვეშაა. ამ ვარაუდიდან კითხვა იცვლება: რომელი URL-ებია დაშვებული — დარჩება რომელი დანიშნულებებისა და იდენტობების მიღწევა შეუძლია პროცესს.
ორივე მტკიცებას განსხვავებული მფლობელები ჰყავს, განსხვავებულ მტკიცებულებას იძლევა და დამოუკიდებლად მარცხდება. იდენტობის გუნდს შეუძლია პირველი აჩვენოს სესიის ტესტით; მეორეს სჭირდება ქსელური პოლიტიკა, სერვისის ანგარიშის მიმოხილვა და ჰოსტის კონტროლი. დიზაინი, რომელიც მხოლოდ ვიზიტორის ნახევარს აფიქსირებს, მიმოხილვის სლაიდზე სრულად გამოიყურება, ხოლო ინციდენტის დროს — თხლად, რადგან გატეხვის შემდეგ მნიშვნელოვანი კონტროლები არასოდეს ყოფილა მოცვის ფარგლებში. დაასახელეთ, რომელ მტკიცებას უჭერს მხარს თითოეული კონტროლი, თორემ ერთი კარიბჭის წესი ორივეს ჩაეთვლება.
დამუშავებული ხარჯების სერვისი და მისი წაგების ორი გზა
ავიღოთ ხარჯების სერვისი: 10.60.4.10-ზე საჯარო კარიბჭე ამოწმებს პერსონალს და ამტკიცებულ მოთხოვნებს გადასცემს 8443 პორტის აპლიკაციის მსმენელს, და ეს აპლიკაცია აღწევს ერთ PostgreSQL მსმენელს 10.60.4.20:5432-ზე expenses_app როლის სახით. თანამშრომლებმა არ უნდა მიიღონ ზოგადი შიდა წვდომა. ნორმალური მუშაობისას დიზაინი ნამდვილად იძლევა აპლიკაციისთვის სპეციფიკურ შესასვლელს მონაცემთა ბაზის მსმენელის არსად გამოქვეყნების გარეშე. მისამართები მნიშვნელოვანია, რადგან ამ სტატიის ყოველი შემდგომი შემოწმება მათ ასახელებს.
ახლა ამოიღეთ კარიბჭე ნდობილი სიმრავლიდან. რომელ დანიშნულებებს შეუძლია 10.60.4.10-ს მიაღწიოს, როცა მისი პროცესი თავდამსხმელს ეკუთვნის? URL ფილტრი, რომელიც ვიზიტორებს ზღუდავდა, არაფერს ამბობს იმ კავშირზე, რომელსაც კარიბჭის ჰოსტი ხსნის მონაცემთა ბაზის ქვექსელისკენ.
ამის ნაცვლად ამოიღეთ აპლიკაციის პროცესი და უფლებამოსილება ფორმას იცვლის: expenses_app როლი, სერვისები, რომლებზეც ამ სერვერს შეუძლია მიაღწიოს, და ფაილები, რომლებიც ამ ანგარიშს შეუძლია წაიკითხოს. ორივე შემთხვევაში წინა კარი შეიძლება დარჩეს მხოლოდ ვები, მაშინ როცა ბექენდის საზღვარი არ არსებობს. ამიტომ წინა კარზე არსებული ეტიკეტი ორი კითხვიდან არც ერთის პასუხი არ არის.
ააგეთ რუკა, თუ რა უფლებამოსილება აქვს თითოეულ მხარეს სინამდვილეში
მიზნობრივ ნებართვებად დაწერილი ხელშეკრულება ჩვეულებრივ გიმეორებთ დიზაინს. დაწერეთ ის როგორც ფლობილი უფლებამოსილება, გადამეტების უარმყოფელი შემოწმება და ამ შემოწმების მფლობელი, და ყოველი სტრიქონი გახდება შემოწმებადი. ეს ცხრილი ზემოთ მოცემული მაგალითის წინადადებაა და არა პროდუქტის მტკიცება:
| 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 |
საკუთრება უფლებამოსილებას მიჰყვება. იდენტობის გუნდი ფლობს მტკიცებებს, ქსელური პლატფორმის გუნდი — მარშრუტებს, აპლიკაციის გუნდი — მონაცემთა ბაზის როლს, მონაცემთა ბაზის ადმინისტრატორი — მსმენელს და მის ჰოსტზე დაფუძნებულ წესებს, ხოლო პლატფორმის მფლობელი — მართვის სიბრტყეს. მფლობელის გარეშე უარი დოკუმენტში წინადადებაა და არა კონტროლი.
დაყოფა ორმაგ დათვლასაც ხელს უშლის. პორტის შეზღუდვა ვერ გამოხატავს ცხრილის უფლებას, და მონაცემთა ბაზის როლი ვერ შეუშლის ჰოსტს უკავშირო ქვექსელისკენ სოკეტის გახსნას.
ჩამოთვალეთ, რას შეიძლება მიაღწიოს კარიბჭემ, ნაცვლად იმისა რომ ამტკიცოთ
საზღვრის მტკიცება იმდენად კარგია, რამდენადაც მის უკან არსებული ჩამონათვალი. კარიბჭის ჰოსტზე სამი ბრძანება ფარავს მარშრუტის არჩევას, ცოცხალ შემოწმებას და გასვლის პოლიტიკას:
ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter outputწაიკითხეთ გამოსავალი ამ თანმიმდევრობით. მარშრუტი ამბობს, საერთოდ არჩეულია თუ არა 10.60.4.20 ამ ჰოსტიდან; შემოწმება ამბობს, პასუხობს თუ არა მსმენელი; წესების სია აჩვენებს, აჩერებს თუ არა პოლიტიკა პაკეტს, თუ მის გზაზე არასოდეს ყოფილა არაფერი.
გაიმეორეთ ჩამონათვალი აპლიკაციის ჰოსტიდან. იქიდან მონაცემთა ბაზის მხარე ერთი მოთხოვნაა, რომელიც აპლიკაციის როლით სრულდება:
psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'წარმატებული კავშირი როლით, რომელსაც სხვა სქემის წაკითხვა არ შეუძლია, განსხვავებული შედეგია, ვიდრე წარმატებული კავშირი მფლობელის როლით. მხოლოდ მეორეა აღმოჩენა.
ჩაწერეთ უარები, შემდეგ მიმოხილვას თარიღი მიანიჭეთ
მიღება იწერება შედეგებად და არა განზრახვებად: თანამშრომლის სესია ვერ მიაღწევს მსმენელს, კარიბჭის ჰოსტი ვერ მიაღწევს უკავშირო ქვექსელს, და აპლიკაციის როლი ვერ შექმნის მონაცემთა ბაზას. თითოეული ცალკე შემოწმებაა დასახელებული მფლობელითა და თარიღით.
შეინარჩუნეთ მონიტორინგი, პაჩირება და აღდგენა ხელმისაწვდომი მათთვის შექმნილი მართვის გზით. საზღვარი, რომელიც საკუთარ მფლობელსაც ბლოკავს, შეფერხებად იქცევა, და ამ შეფერხებაზე ჩვეულებრივი პირველი რეაქცია წესის კვლავ გაფართოებაა. CISA-ს პერიმეტრის გაიდლაინი ითხოვს შემომავალი და გამავალი წვდომის შეზღუდვას გამართლებული პორტებითა და პროტოკოლებით, მათ შორის შიდა ქსელებს შორის ტრაფიკისა, რაც ბექენდიდან დაწყებული მიმართულებაა და რომელსაც დიაგრამების უმეტესობა გამოტოვებს.
მიანიჭეთ თარიღი მიმოხილვას და დაასახელეთ მისი მფლობელი. ხელახლა გაუშვით ჩამონათვალი და უფლებების მოთხოვნა კარიბჭის იმიჯის, მარშრუტიზაციის ცხრილის ან აპლიკაციის როლის ყოველი ცვლილების შემდეგ.