სერვისი იწყება, კლიენტი უერთდება და სერვერის მხარეს მარშრუტი არასდროს ჩნდება. ან დემონი უარს ამბობს გაშვებაზე და ასახელებს ბრძანებას, რომელიც ვერ შეასრულა. ორივე შედეგი მიჰყვება იმავე სამ ხაზს, რომლებიც ჩვეულებრივ ერთად კოპირდება გამაგრების სახელმძღვანელოდან: არაპრივილეგირებულ ანგარიშზე გადასვლა, ჯგუფის მიტოვება და ფაილური სისტემის ფესვის შეცვლა. სამიდან მხოლოდ ერთი მალავს ფაილებს და მხოლოდ ერთი მათგანი ართმევს მარშრუტიზაციის ცხრილის შეცვლის უფლებას. მათი გამოყოფა არის გზა გაიგოთ, რომელი ხაზი გჭირდებათ სინამდვილეში.

რას ართმევს ციხე, რაც დემონს ჯერ კიდევ სჭირდება

ფესვის შეცვლა ხდება გაშვების შემდეგ, ამიტომ დემონი ინარჩუნებს ყველაფერს, რაც უკვე გახსნა და კარგავს ყველაფერს, რასაც მოგვიანებით გახსნიდა. ნებისმიერი დამხმარე, რომელსაც კავშირი ამ წერტილის შემდეგ გაუშვებს, უნდა არსებობდეს ახალი ფესვის შიგნით, მის მიერ ჩატვირთული საერთო ბიბლიოთეკებითურთ. კონფიგურაციის ფაილისა და სერტიფიკატისგან აშენებულ ციხეს არც ერთი აქვს.

არაპრივილეგირებულ ანგარიშზე გადასვლა ცალკე შეზღუდვაა. პროცესმა, რომელმაც root-ს თავი დაანება, შეიძლება ვერ შეძლოს მარშრუტების შეცვლა ან ინტერფეისის აწევა მაშინაც კი, როცა ბინარული ფაილი სწორედ იქ არის, ამიტომ ორი ხარვეზი ცალკე უნდა დიაგნოსტირდეს.

რომელი შესწორება გჭირდებათ, ამას სამი პირობა წყვეტს

პირველი პირობაა, როგორ აყენებს თქვენი აწყობა მარშრუტებს. ახალი OpenVPN გამოშვებები ინტერფეისსა და მარშრუტიზაციის ცხრილს პროცესის შიგნით აწყობს, ხოლო ძველი პაკეტები და საკუთარი კონფიგურაციები გარე ხელსაწყოებს ან up და down სკრიპტებს ეყრდნობიან. თუ ჟურნალი ბრძანებას ასახელებს, გარე ხელსაწყოა ჩართული და ციხე მალავს მას. თუ ჟურნალი სამაგიეროდ უფლების შეცდომას აჩვენებს, პრობლემა ანგარიშშია.

მეორე არის მოვლა. კოპირებული ბინარული ფაილებით ციხე უნდა განახლდეს ყოველ ჯერზე, როცა მათ მიმწოდებელი პაკეტი განახლდება, თორემ პირველი განახლება უკან გატეხილ გვირაბს დატოვებს. მესამე არის, ნამდვილად სჭირდება თუ არა კონკრეტულ კონტროლს chroot; თუ მოთხოვნა სინამდვილეში პრივილეგიების გამოყოფას ეხება, ანგარიშის შეცვლა მარტო შეიძლება საკმარისი იყოს.

Signal in the logOther side of the boundaryRepair direction
Command not found after startupBinary and its libraries absent inside the new rootPopulate the jail, or drop the chroot line
Operation not permittedAccount lost the privilege to edit routesKeep the account privileged, or pre-create routes elsewhere
No such deviceJail lacks the tun device nodeCreate the node inside, or open it before the root change

რა უნდა შეიცავდეს მომუშავე ციხე

ბრძანებების გამშვებ ციხეს სჭირდება ბინარული ფაილი, ყოველი ბიბლიოთეკა, რომელზეც ლინკდება და ყოველი მოწყობილობის კვანძი, რომელსაც დემონი გვიან ხსნის. დააკოპირეთ ნაწილები და გამოსცადეთ ისინი VPN-ის გარეშე სურათში:

ldd /usr/sbin/ip
chroot /etc/openvpn/jail /sbin/ip route show
chroot /etc/openvpn/jail /sbin/ip link set tun0 up

პირველი ბრძანება ჩამოთვლის დამოკიდებულებებს და სწორედ მას გამოტოვებენ ხალხი. კოპირებული ბინარული ფაილი, რომელიც ბიბლიოთეკას ვერ პოულობს, სხვა შეტყობინებით იტეხება, ვიდრე დაკარგული ბინარული ფაილი, და ორივე OpenVPN-ის ხარვეზად გამოიყურება კლიენტის მხრიდან წაკითხვისას. ბრძანების ხელით გაშვება ციხის შიგნით ამრავლებს ხარვეზს სერვისის გადატვირთვის გარეშე.

ასევე დააკოპირეთ ციხეში კონფიგურაცია, სერტიფიკატები და ნებისმიერი CRL, რადგან ფაილი, რომლის ხელახლა წაკითხვასაც დემონი გაშვების შემდეგ ელის, ვერ მოიძებნება ფესვის შეცვლის შემდეგ. ჩაწერეთ, რა დააკოპირეთ, ვინაიდან ქსელური პაკეტის შემდეგი განახლება ორიგინალებს ჩაანაცვლებს და ციხეს ძველ ასლზე დატოვებს.

სამაგიეროდ შეამცირეთ გამაგრება

თუ ციხე მხოლოდ იმიტომ არსებობს, რომ სახელმძღვანელომ ასე თქვა, ამ ერთი ხაზის მოცილება ანგარიშის შეზღუდვების შენარჩუნებით დასაცავი შედეგია. დემონი ინარჩუნებს თავის ხედვას ფაილურ სისტემაზე და კარგავს პრობლემას, ხოლო პრივილეგიების დაწევა კვლავ ართმევს root-ს ხანგრძლივ პროცესს.

ჩაწერეთ, რა რჩება და რატომ. კონფიგურაცია, რომელმაც ჩუმად დაკარგა კონტროლი შენიშვნის გარეშე, არის გზა, რომლითაც გამაგრება იხრება და შემდეგი აუდიტი იკითხავს, რატომ გაქრა ხაზი.

არჩევამდე გაყავით სამი ხაზი

დააკოპირეთ კონფიგურაცია, გამორთეთ სამივე დირექტივა და დაადასტურეთ, რომ კლიენტი უერთდება და მოსალოდნელი მარშრუტები ჩნდება. შემდეგ კვლავ ჩართეთ მხოლოდ ანგარიშის ხაზები, შემდეგ კი მხოლოდ chroot. საფეხური, სადაც გვირაბი ტყდება, საზღვარს მიუთითებს, და თავს ირიდებთ იმ ციხის ხელახლა აშენებას, რომელიც არასდროს ყოფილა მიზეზი.

როცა ისევ მარშრუტიზაციას აკეთებს, გაუშვით ერთი კლიენტის სესია უფრო მაღალი დეტალურობით და წაიკითხეთ ხაზი, რომელიც ასახელებს ბრძანებას ან წარუმატებელ უფლებას. ის ხაზი უფრო ღირებულია, ვიდრე ვადა, რომელსაც კლიენტი საბოლოოდ აცნობებს.

დაკავშირებული სტატიები