პროქსი IP-ების ბრუნვა VPN-ის გარეშე: რას ხედავს გასასვლელი
დაატრიალეთ პროქსის გასასვლელები VPN-ის გარეშე: რისი წაკითხვა შეუძლია HTTP პროქსის, როგორ უშლიან წებოვანი სესიები ხელს გატეხილ მდგომარეობას და რომელი გასასვლელი შეგიძლიათ დაიცვათ პოლიტიკაში.
პროქსის ბრუნვა და VPN თქვენს საჯარო მისამართს სხვადასხვა დონეზე ცვლის და სწორედ ეს განსხვავება წყვეტს, რა გაჟონავს. VPN ყველა პაკეტს გვირაბში გადააქვს, ამიტომ წყაროს მისამართი, რომელსაც სამიზნე ხედავს, გვირაბის ბოლო წერტილია. პროქსი ქსელური დონის ზემოთ ზის: გასასვლელიდან მხოლოდ ის მოთხოვნები ჩანს, რომლებსაც მის გავლით აგზავნით, ხოლო მანქანაზე ყველაფერი დანარჩენი ნამდვილ მისამართს ინარჩუნებს. ამ გაყოფის სწორად გაკეთება ბრუნვას მონიშვნის უჯრიდან დიზაინის გადაწყვეტილებად აქცევს.
საიდან მოდის რეალურად საჯარო მისამართი
მისამართი, რომელსაც სამიზნე ხედავს, არის ის, საიდანაც თქვენი ტრაფიკი ბოლოს გავიდა, ხოლო სახლის კავშირზე ეს თქვენს როუტერზე პროვაიდერის მისამართია და არა რაღაც, რაც მანქანას ეკუთვნის. როუტერის გადატვირთვამ შეიძლება იგივე იჯარა დააბრუნოს, ხოლო მისი MAC მისამართის შეცვლა ზოგჯერ ახალს ქმნის, მაგრამ არც ერთი არ გაძლევთ ქვეყნის არჩევანს. VPN წყაროს მისამართს IP დონეზე ცვლის, ამიტომ მანქანიდან გამავალი ყოველი პაკეტი, მათ შორის DNS და ფონური განახლებები, გვირაბის ბოლო წერტილიდან გადის. პროქსი ერთი დონით ზემოთ მუშაობს: იღებს მოთხოვნას, ხსნის საკუთარ კავშირს სამიზნესთან და მხოლოდ ეს მოთხოვნა ჩანს გასასვლელიდან. მანქანაზე ყველაფერი დანარჩენი კვლავ ნამდვილ მისამართს იყენებს.
ეს გაყოფა ხსნის უმეტეს გაკვირვებას. პროქსიზე მიმართული ბრაუზერის გაფართოება მხოლოდ იმას ცვლის, რასაც ბრაუზერი აგზავნის და მეტს არაფერს, ამიტომ იმავე ჰოსტზე მეორე აპლიკაცია კვლავ აჟონავს თავდაპირველ მისამართს. სისტემურ VPN-ს საპირისპირო ჩავარდნის რეჟიმი აქვს: ფარავს ტრაფიკს, რომლის ლოკალურად დატოვებაც გინდოდათ და იხურება მხოლოდ მაშინ, თუ კლიენტი ასეა კონფიგურირებული. ამ ორს შორის არჩევა სინამდვილეში იმის არჩევაა, რომელი ტრაფიკი უნდა მოძრაობდეს.
შემდეგ ბრუნვა ვრცელდება იმ დონეზე, რომელიც აირჩიეთ. პროქსის შემთხვევაში ბრუნვა ნიშნავს, რომ შემდეგი მოთხოვნა სხვა გასასვლელს იყენებს. VPN-ის შემთხვევაში ეს ნიშნავს გვირაბის დანგრევას და ხელახლა აშენებას, რაც უფრო ნელია და ხილული ხელახალი დაკავშირების სახით ჩნდება.
რისი წაკითხვა შეუძლია HTTP პროქსის და რისი არა
უბრალო HTTP-ზე პროქსი მოთხოვნის სტრიქონში აბსოლუტურ URI-ს, ყველა სათაურს და სხეულს ხედავს. მას შეუძლია ეს ყველაფერი ჩაწეროს და ნებისმიერი ნაწილი გადაწეროს, ამიტომ პასუხებში სკრიპტის ჩამატებელი უფასო პროქსი ზუსტად იმას აკეთებს, რასაც პროტოკოლი უშვებს. აუტენტიფიკაცია იყენებს Proxy-Authorization, ხოლო დაკარგული ან არასწორი მონაცემები წარმოქმნის 407 Proxy Authentication Required კავშირის შეცდომის ნაცვლად.
HTTPS-ზე კლიენტი აგზავნის CONNECT host:port და პროქსი ხსნის ნედლ გვირაბს, რის შემდეგაც დაშიფრულ ბაიტებს ხედავს. ის მაინც სწავლობს ჰოსტის სახელს CONNECT სტრიქონიდან და ჩვეულებრივ TLS ხელის ჩამორთმევის SNI ველიდან, ამიტომ ჰოსტის სახელის დონეზე ჟურნალირება გადარჩება მაშინაც, როცა დატვირთვა არ გადარჩება. დატვირთვის წაკითხვა მოითხოვს TLS-ის დასრულებას სერტიფიკატით, რომელსაც კლიენტი ენდობა, რაც სხვა პროდუქტია სხვა რისკით. და HTTP სემანტიკის სპეციფიკაცია CONNECT-ს გვირაბის მოთხოვნად განსაზღვრავს, რაც სწორი გონებრივი მოდელია იმისთვის, რისი დანახვაც გასასვლელს შეუძლია და არ შეუძლია.
curl -v -x http://proxy.example.net:8080 https://example.com 2>&1 | grep -E 'CONNECT|Proxy-'
დეტალური გამოსავალი CONNECT სტრიქონს ნებისმიერ TLS ტრაფიკამდე აჩვენებს და სწორედ იმ მომენტში იგებს პროქსი თქვენს დანიშნულებას. 407-ით პასუხისმგებელი პროქსი გვირაბს არასდროს გახსნა, ამიტომ სხვა TLS პარამეტრებით ხელახლა ცდა არ დაეხმარება.
ბრუნვის გრანულარობა წყვეტს, რა გატყდება
ყოველ მოთხოვნაზე ბრუნვა ის პარამეტრია, რომელიც ყველაზე უსაფრთხოდ გამოიყურება და ყველაზე მეტს ამტვრევს. Cookie-ები, CSRF ტოკენები და სერვერის მხარეს სესიები იდენტობაზეა მიბმული და იდენტობა, რომელიც შესვლასა და შემდეგ გამოძახებას შორის იცვლება, სამიზნეს სესიის გატაცებად ეჩვენება. ბევრი პროვაიდერი წებოვან სესიას პროქსის მომხმარებლის სახელში კოდირებით გვთავაზობს, ამიტომ გასასვლელი არჩეული ფანჯრის განმავლობაში ფიქსირებული რჩება.
გრანულარობა ამოირჩიეთ დავალებიდან და არა პროვაიდერის ნაგულისხმევიდან. დამოუკიდებელი გვერდების მომტან ამომღებს შეუძლია ყოველ მოთხოვნაზე ბრუნვა, ხოლო გადახდის ნაკადმა ან ავტორიზებულმა API-მ ერთი გასასვლელი უნდა შეინარჩუნოს მთელი ნაკადის განმავლობაში. ქვემოთ მოცემული ორი გამოძახება წებოვან მომხმარებლის სახელსა და ჩვეულებრივ მბრუნავ საბოლოო წერტილს აჩვენებს და socks5h სქემა სახელებს პროქსიში წყვეტს და არა ლოკალურად.
curl -sS -x http://user-session-a1b2:[email protected]:8080 https://ifconfig.me
curl -sS -x socks5h://127.0.0.1:1080 https://ifconfig.me
ლოკალური DNS ჩუმი გაჟონვაა. თუ კლიენტი სახელს დაკავშირებამდე წყვეტს, გამხსნელი მაინც იგებს ყოველ ჰოსტს, რომელსაც სტუმრობთ, მაშინაც კი, თუ HTTP მოთხოვნა სხვაგან გადის. და socks5h ფორმა და პროქსის მხრიდან გადაწყვეტა ამას თავიდან გვაცილებს და მათი გამოყენება არაფერი ღირს.
რას ახარისხებს სამიზნე მისამართის გარდა
მისამართის რეპუტაცია რამდენიმე შეყვანიდან ერთია. სამიზნეები აერთიანებენ ASN-ს და მის იარლიყს მონაცემთა ცენტრი ან საცხოვრებელი, კლიენტის TLS ანაბეჭდს, HTTP/2 პარამეტრებს, სათაურების რიგს, მოთხოვნების სიხშირეს და ნავიგაციის ფორმას. თავისგარეშე ბრაუზერით მართული საცხოვრებელი გასასვლელი შეიძლება ჩავარდეს იქ, სადაც ნამდვილი სესიით მართული მონაცემთა ცენტრის გასასვლელი გადის.
გასასვლელის ტიპი განსაზღვრავს, რა შეგიძლიათ პატიოსნად ამტკიცოთ ტრაფიკზე და თითოეულს განსხვავებული ფასი აქვს.
| Exit type | What the target sees | Main cost |
|---|---|---|
| Datacenter proxy | Hosting ASN, cheap, often pre-blocked | Low reputation, easy to detect |
| Residential network | A consumer ISP address belonging to someone else | Consent and terms-of-service exposure |
| Mobile carrier | A carrier NAT address shared by many subscribers | Price, plus shared blame for abuse |
| Your own cloud egress | An address you are accountable for | Recognisable, but defensible |
გაზიარებული გასასვლელი ნეიტრალური არ არის. ყველაფერი სხვა, რაც ამ მისამართიდან მუშაობს, რეპუტაციის იმავე კალათაში ვარდება და სხვა მოიჯარეების მიერ უკვე დამწვარი მისამართი ვარდება მანამ, სანამ თქვენი პირველი მოთხოვნა წაიკითხება.
აირჩიეთ გასასვლელი, რომელსაც პოლიტიკაში აღწერთ
სასარგებლო კითხვა არ არის როგორ დავმალოთ მისამართი, არამედ ვინ არის პასუხისმგებელი მისგან გამავალ ტრაფიკზე. თქვენი საკუთარი ღრუბლოვანი გასასვლელი თითო დავალებაზე, ხელშეკრულებითი პროვაიდერი მონაცემთა დამუშავების შეთანხმებით და გამოქვეყნებული შენახვით და თვითგამართული VPN თითო დავალებაზე ერთი იდენტობით — ყველა ერთი წინადადებით აღწერილია. უფასო სია — არა, რადგან მის ოპერატორს თქვენდამი ვალდებულება არ აქვს და ჩაწერის ყველა სტიმული აქვს.
შეინარჩუნეთ საკუთარი სიხშირის ლიმიტები იმაზე დაბლა, რასაც სამიზნე იტანს და შეაგროვეთ მხოლოდ ის ველები, რაც დავალებას სჭირდება, რომ შეცდომა პატარა დარჩეს. ბლოკისგან თავის დასაღწევად უფრო სწრაფი ბრუნვა ჩვეულებრივ ზრდის მოთხოვნების სიხშირეს, რომელმაც ის გამოიწვია.
ჩაწერეთ არჩეული გასასვლელი, მისი ბრუნვის ფანჯარა და მისი მფლობელი სამუშაოს კონფიგურაციაში პირველ გაშვებამდე. როცა ბლოკი მოვა, სწორედ ეს ჩანაწერი გეტყვით, გასასვლელი შეცვალოთ თუ ქცევა.