ანგარიშის ჩაკეტვა და მისამართის აკრძალვა: სად ითვლის OpenVPN სინამდვილეში
წყაროს აკრძალვა და ანგარიშის ჩაკეტვა სხვადასხვა რამეს ითვლის. იპოვეთ საცავი, რომელიც ფლობს წარუმატებლობების მთვლელს, სანამ PAM-ზე დაფუძნებული VPN-ისთვის ზღვარს აირჩევთ.
მისამართის დაბლოკვა და ანგარიშის ჩაკეტვა ორი განსხვავებული მექანიზმია და ისინი საპირისპირო მიმართულებით ფარდება. მისამართის აკრძალვა აჩერებს ერთ წყაროს და სამიზნე ანგარიში სხვა ადგილიდან ხელმისაწვდომი რჩება; ანგარიშის ჩაკეტვა აჩერებს ამ იდენტობას ყველგან, თვით მომხმარებლის ლეპტოპზეც.
VPN-ისთვის, რომელიც ავთენტიფიკაციას PAM-ს ანდობს, მთვლელი არის ის, რასაც PAM-ის სტეკი აღწევს და არა ის, რაც მსმენელმა ჩაწერა.
ორი მთვლელი, ორი განსხვავებული მსხვერპლი
სიჩქარის შემზღუდველი უყურებს წყაროს და კითხულობს, რამდენი ცდა მოვიდა მისგან ცოტა ხნის წინ. ჩაკეტვა უყურებს იდენტობას და კითხულობს, რამდენი წარუმატებლობა დააგროვა ამ ანგარიშმა. პირველი იცავს ხელმისაწვდომობას, მეორე — მონაცემებს; არცერთი არ ანაცვლებს მეორეს.
ამიტომ ფრაზა ხუთი წარუმატებლობის შემდეგ IP-ს ვბლოკავთ არ არის პასუხი მონაცემების შევსების შესახებ ანგარიშზე. თავდამსხმელი ცვლის წყაროებს, თითოეული ცოტა ცდას იღებს და ანგარიში არასდროს ითვლება. პირიქით, ჩაკეტვა წყაროს კონტროლის გარეშე თავდამსხმელს განზრახ ჩავარდნით ანგარიშის უვადოდ ჩაკეტვის საშუალებას აძლევს.
ორ კონტროლს აღდგენის განსხვავებული ისტორია აქვს. მისამართის აკრძალვა იწურება ტაიმერით, რომელზეც არავინ უნდა იფიქროს; ანგარიშის ჩაკეტვას შეიძლება დასჭირდეს ადმინისტრატორი, დოკუმენტირებული ლოდინის პერიოდი ან თვითმომსახურე აღდგენა.
იპოვეთ საცავი, რომელსაც უკვე აქვს აღრიცხვა
სანამ რამეს დაამატებთ, გაარკვიეთ, არსებობს თუ არა წარუმატებლობების საცავი. ლოკალური Linux ანგარიში, დირექტორიის სერვისი და გარე იდენტობის მომწოდებელი თითოეული თავის აღრიცხვას ინახავს და მათ წინ დაყენებული PAM მოდული ქმნის მეორეს, ნაცვლად იმისა რომ პირველი გააფართოოს.
grep -rnE 'faillock|pam_tally|pam_unix' /etc/pam.d/
ls -l /etc/pam.d/ | head -20
წაიკითხეთ ის სერვისის ფაილი, რომელსაც VPN ნამდვილად ასახელებს და მიჰყევით მისი ჩართვის ხაზებს. ბევრ დისტრიბუციაში VPN სერვისი საერთო ფაილს ჩართავს, რაც ნიშნავს, რომ თქვენ მიერ მოწყობილი აღრიცხვა SSH-სა და ლოკალურ შესვლებზეც ვრცელდება.
თუ დირექტორია უკვე ახორციელებს ჩაკეტვას, სასარგებლო კითხვაა, როგორ აღწევს PAM საუბარი ამ გადაწყვეტილებას და როგორ იტყობინება VPN ამის შესახებ. ზემოდან დამატებული ლოკალური აღრიცხვა დირექტორიის მთვლელი არ ხდება და ორი პოლიტიკა შეიძლება არ დაეთანხმოს, როდის იხსნება ანგარიში.
pam_faillock-ს სამი გამოძახების ადგილი აქვს, არა ერთი
მოდული გამოყოფს სამ ოპერაციას, რომლებსაც ერთი კოპირებული ხაზი ჩვეულებრივ ბუნდოვანს ხდის: შემოწმება, ჩაკეტილია თუ არა ანგარიში, წარუმატებლობის ჩაწერა და წარმატების შემდეგ ისტორიის გასუფთავება.
სწორედ აქ ცდება ჩვეულებრივ ძველი მთვლელი მოდულიდან მიგრაცია. მომუშავე pam_tally2 მაგალითიდან ხაზის pam_faillock სტეკში კოპირება გადარქმევა არ არის; დოკუმენტირებული კონფიგურაცია განსხვავებულია და არასწორ ადგილას დაყენებულმა გამოძახებამ შეიძლება წარუმატებლობები ჩაწეროს მათი არასდროს შემოწმების გარეშე.
faillock --user alice
faillock --user alice --reset
შემოწმების იარაღი ყველაზე სწრაფი გზაა იმის სანახავად, რეალურია თუ არა მთვლელი: ის აჩვენებს ანგარიშის ჩაწერილ წარუმატებლობებს და შეუძლია მათი გასუფთავება. თუ კონტროლირებული წარუმატებლობა ამ გამოსავალს არ ცვლის, გამოძახების ადგილი არასწორია.
გამოყოფილი სერვისის სახელი იზოლაცია არ არის
VPN-ისთვის საკუთარი PAM სერვისის ფაილის მიცემა განზრახ პოლიტიკას თვალსაჩინოს ხდის, მაგრამ ეფექტს არ ზღუდავს. საერთო ფაილის ნებისმიერი ჩართვა მოაქვს იმას, რასაც ეს ფაილი აკეთებს, მათ შორის მთელი სისტემის აღრიცხვებს.
მკაფიოდ გადაწყვიტეთ, ფარავს ჩაკეტვა მხოლოდ VPN წვდომას თუ ყველა სერვისს, რომელიც იმავე ანგარიშს ავთენტიფიცირებს. ორივე პასუხი დასაცავია; შეცდომაა იფიქროთ, რომ ერთი აირჩიეთ, სანამ სტეკი მეორეს ახორციელებს.
შემდეგ გაითვალისწინეთ ღირებულება. ჩაკეტვა თავდამსხმელს შეუძლია გამოიწვიოს და ვინც იტანჯება, ანგარიშის მფლობელია. ზღვარი, ლოდინის პერიოდი და ადმინისტრაციული აღდგენის გზა პოლიტიკის ნაწილია და აღდგენა არ უნდა იყოს დამოკიდებული ინციდენტის დროს VPN-ის ხელახლა კონფიგურაციაზე.
მიიღეთ თანმიმდევრობა და არა ერთი უარი
გამოსცადეთ დანიშნული იდენტობებით დამტკიცებული გეგმის მიხედვით და გამოსცადეთ ჯაჭვი და არა ერთი მოვლენა: სწორი ანგარიში ავთენტიფიცირდება, განზრახ არასწორი პაროლი მთვლელს ამოძრავებს, დაყენებული ჩაკეტვა ძალაში შედის და დოკუმენტირებული აღდგენა წვდომას აბრუნებს.
faillock --user test-vpn-01
journalctl -u openvpn-server@lab -n 30 --no-pager | grep -i 'auth\|pam'
წარმატების ქცევას ისევე ყურადღებით დააკვირდით, როგორც წარუმატებლობისას. თუ წარმატებული შესვლა ისტორიას არ ასუფთავებს, ანგარიში ჩაიკეტება ჩვეულებრივი შეცდომების ნელი დაგროვების შემდეგ. თუ ის ყველაფერს ყველა სერვისიდან ასუფთავებს, მთვლელი უფრო სუსტია, ვიდრე პოლიტიკა ამტკიცებს.
და ბოლოს, სანამ გამარჯვებას გამოაცხადებთ, გააჩერეთ უმეთვალყურეო კლიენტები. შენახული მონაცემები, რომლებიც ფონზე ხელახლა ცდილობს, აღდგენიდან წუთებში კვლავ წარუმატებლობებს შექმნის და ანგარიშს ისევ ჩაკეტავს. წყაროზე დაფუძნებული სიჩქარის შეზღუდვა შეიძლება დარჩეს დამატებით კონტროლად, მაგრამ ეს ანგარიშის პოლიტიკა არ არის.