დროებითი IP-ნებადართული სიის ბმულები: რას უშვებს სინამდვილეში ნებართვა
ბმული, რომელიც firewall-ის პორტს ხსნის, უშვებს მისამართს და არა ადამიანს. განსაზღვრეთ ფარგლები, მოითხოვეთ განზრახ დადასტურება და შეამოწმეთ გამეორება, ვადის გასვლა და IPv6.
ერთი დაწკაპუნების დროებით firewall-ის წესად გადაქცევა მოსახერხებელია და ამავე დროს აშენებს ავტორიზაციის სისტემას, რომელიც წყვეტს, ვის შეუძლია სერვისამდე მისვლა. ის გასცემს მისამართს და არა ადამიანს, და ეს განსხვავება მნიშვნელოვანია იმ მომენტში, როცა ორი ადამიანი ერთ NAT-ს იზიარებს. შემოფარგლეთ ნებართვის არეალი, დადასტურეთ ის განზრახ და მიეცით ვადის გასვლას აზრი ბმულის აშენებამდე. თქვენ წინაშე მდგარი გადაწყვეტილებაა, სად დავსვათ საზღვარი და არა, უნდა არსებობდეს თუ არა ის.
გადაწყვიტეთ, რომელ კითხვას პასუხობს ნებართვა
დაიწყეთ მოთხოვნით. თუ დასახელებულმა პირმა სერვისამდე უნდა მიაღწიოს და აპლიკაცია უკვე ავთენტიფიცირებს ამ პირს, ავთენტიფიცირებული კარიბჭე ინარჩუნებს იდენტობას აღსრულების წერტილში და მისამართის დაშვება საერთოდ არ სჭირდება. თუ სამიზნეა build-აგენტი, ადმინისტრაციული jump-პორტი ან მოწყობილობა, რომელიც ვერ მიიღებს მონაწილეობას მომხმარებლის შესვლაში, შეზღუდული არეალის მისამართის ნებართვა შესაძლოა ერთადერთი პრაქტიკული კონტროლი იყოს.
მომხმარებელზე ორიენტირებული აპლიკაციისთვის მისამართით დაშვების არჩევა ნამდვილ ავტორიზაციის პრობლემას სხვაგან გადაიტანს და შემდეგ პორტალი მემკვიდრეობით იღებს ბრალს იმ ხარვეზზე, რომელიც არასდროს დაუხურავს.
შემოფარგლეთ მოთხოვნა სერვერზე
ბრაუზერმა არ უნდა აირჩიოს დანიშნულება, პორტი ან პრეფიქსი. პორტალი სერვისს საკუთარი ჩანაწერებიდან წყვეტს და უფლებას სერვერის მხარეს ტესტით ამოწმებს, რაც იგივე პრინციპია, რომელსაც OWASP-ის ავტორიზაციის გზამკვლევი ყოველ მოთხოვნაზე იყენებს. მისამართის გამოყვანაც დაცულ საზღვარს ეკუთვნის: როცა უკუპროქსი აცხადებს კლიენტის მისამართს, მიიღეთ მხოლოდ კონფიგურირებული პროქსის ჯაჭვი და მისი დოკუმენტირებული სათაურების დამუშავება. ვიზიტორის მიერ მოწოდებული გადამისამართების სათაური წარმომავლობის შესახებ მტკიცებაა და არა მისი მტკიცებულება.
შემდეგ შეამოწმეთ, რომ პორტალი და სერვისი ერთსა და იმავე წყაროს ხედავენ. გაყოფილი გვირაბი, ერთი პროქსი-ნახტომი და IPv4 IPv6-ის წინააღმდეგ შეიძლება ორ დანიშნულებას ორი განსხვავებული მისამართი მისცეს, ამიტომ ერთი გზიდან გააქტიურებულმა ნებართვამ შეიძლება ვერ დაფაროს მომდევნო მოთხოვნა.
აჩვენეთ ნებართვა დაყენებამდე
ბმულის გახსნამ უნდა აჩვენოს შემოთავაზებული სერვისი, დაკვირვებული წყარო და ხანგრძლივობა და ჯერ არაფერი შეცვალოს. სწორედ ეს ერთი ნაბიჯი აქცევს ელფოსტით მოსულ ბმულს ქმედებიდან წინადადებად და ხელს უშლის წინასწარი ხედვის ბოტს ან ფოსტის სკანერს მხოლოდ მისი ჩამოტვირთვით წვდომის მინიჭებაში.
დადასტურება უნდა იყოს მდგომარეობის შემცვლელი მოთხოვნა ჩვეულებრივი ჯვარედინ-საიტური და წარმომავლობის დაცვებით. ტოკენი უნდა იყოს ერთჯერადი და ატომურად დაიხარჯოს იმ მომენტში, როცა წესი დგინდება, ხოლო ჩანაწერმა უნდა დააფიქსიროს მფლობელი, სერვისი, მისამართი, ნებართვის იდენტიფიკატორი და ვადა, ნედლი ტოკენის არასოდეს ჟურნალირებით.
ტოკენის მიწოდება იმავე ზრუნვას იმსახურებს, რასაც თავად წესი. ვადაგასული ან უკვე დახარჯული ბმული, რომელიც მაინც ქმნის წესს, იგივე გასაღებით დაყენებული მეორე კარია.
მისამართი საერთოა მაშინაც, როცა ნებართვა ძალაშია
საოფისო NAT, ოპერატორის NAT და საერთო VPN გასასვლელი თითოეული რამდენიმე ადამიანს ერთი მისამართის უკან აყენებს. ამ მისამართის დაშვება უშვებს ყველას, ვინც მის უკანაა — რამდენადაც ეს სერვისის შემდეგ საზღვარს ეხება —, თან არაფერს ამტკიცებს იმის შესახებ, ვის ხელშია ანგარიში, რომელსაც სერვისი ელოდება.
წესის მოხსნაც არ არის უნივერსალური გაწყვეტა. დამყარებული კავშირები, ქეშირებული აპლიკაციის ტოკენები და ხანგრძლივი სესიები შეიძლება წესს წუთებით ან გაცილებით მეტხანს გადაურჩეს, ამიტომ არჩეულმა სიცოცხლის ხანგრძლივობამ უნდა აირეკლოს, რას აკეთებს სერვისი დაშვების შემდეგ და არა მხოლოდ, რამდენ ხანს არსებობს წესი.
შეამოწმეთ ოთხი შემთხვევა და მისამართების ორივე ოჯახი
ნებართვა იმდენად კარგია, რამდენ შემთხვევასაც უძლებს: ახალი დაშვებული მოთხოვნა, დაუმტკიცებელი მომთხოვნი, იმავე ბმულის გამეორება და იგივე მოთხოვნა ვადის გასვლის შემდეგ.
შემდეგ თითოეული ოჯახი ცალკე შეამოწმეთ, რადგან სერვისის მიერ დაკვირვებული წყაროს მისამართი შეიძლება მათ შორის განსხვავდებოდეს.
dig +short A service.example.com
dig +short AAAA service.example.com
curl -4 -sS -o /dev/null -w "%{http_code}\n" https://service.example.com
curl -6 -sS -o /dev/null -w "%{http_code}\n" https://service.example.com
სასარგებლო შედეგია ჩვეულებრივი მომხმარებლის ავტორიზაციის ქვეშ მდგარი დროებითი, აუდიტირებადი დაშვების გადაწყვეტილება და არა მუდმივი ღიობა, რომელიც პირველად დამკლიკავის სახელს ატარებს.