firewall-ის ცვლილებების ტესტირება საკუთარი თავის გარეთ ჩაკეტვის გარეშე
დაალაგეთ აღდგენის გზები წესის შეტანამდე, შემდეგ კი გადაამოწმეთ ნაკადით, რომელიც ახალ პოლიტიკას უნდა შეაფასოს და არა იმ სესიით, რომელმაც გადარჩა.
წესი შედის, უკვე გახსნილი ტერმინალი პასუხს აგრძელებს, ხოლო შემდეგი შესვლა უარყოფილია. სწორედ ეს უფსკრულია მთელი სირთულე იმ კავშირზე firewall-ის ცვლილების ტესტირებისას, რომელსაც თქვენ ცვლით. კავშირის თვალთვალი ერთხელ წყვეტს და შემდეგ წყვეტს ყურებას, ამიტომ დამკვიდრებული ნაკადი ერთადერთი შემოწმებაა, რომელსაც ახალი პოლიტიკა ვერ დაინახავს. შემდგომში შედარებულია დაბრუნების სამი გზა, შემდეგ კი დგინდება თანმიმდევრობა, რომლითაც წესები უნდა შეიცვალოს და შემოწმდეს.
რატომ არის გადარჩენილი სესია ყველაზე სუსტი მტკიცებულება
მდგომარეობის მქონე firewall აფასებს ნაკადის პირველ პაკეტს და ინახავს ამ განაჩენს მანამ, სანამ ჩანაწერი ცოცხალია. მოგვიანებით დამატებული წესები ვრცელდება ნაკადებზე, რომლებიც უფრო გვიან იწყება, ამიტომ ფანჯარა, რომელშიც აკრიფებთ, გამოსადეგი რჩება, სანამ ყველა დანარჩენი უარყოფილია. რასაც მისგან ისწავლით, აღწერს პოლიტიკას, რომელიც რამდენიმე წუთის წინ მოქმედებდა. თვით ამ ნაკადზე გადაღებული ჩანაწერიც კი აჩვენებს გადაწყვეტილებას, რომელიც მანქანამ უკვე მიიღო.
მუშა სესიას მოეკიდეთ როგორც სამართავი გასასვლელს და არა როგორც გაზომვას. ყოველი შემოწმება, რომელიც ღირს, უნდა გახსნას ახალი ნაკადი იმ წყაროდან, რომელსაც ახალი წესი შეაფასებს, და პირველი შემოწმება ის უნდა იყოს, რომლის წარუმატებლობაც ყველაზე მეტად გატკენს. როცა ეს სესია თქვენი ერთადერთი გზაა შიგნით, ცვლილება ჯერ არ არის მზად შესრულებისთვის.
დაბრუნების სამი გზა, დალაგებული იმის მიხედვით, რაზეა დამოკიდებული თითოეული
დაალაგეთ ვარიანტები იმის მიხედვით, თუ რამდენად არის დამოკიდებული საცდელ მოწყობილობაზე, რადგან სწორედ ამ რიგს მიმართავთ, როცა წესი მცდარი აღმოჩნდება. კონსოლი, რომელიც არასდროს გადის firewall-ზე, დამოუკიდებელია, გავარჯიშებული უკუქცევა თითქმის ასეთია, ხოლო უკვე ღია სესია არა.
| Way back in | What it survives | Where it fails |
|---|---|---|
| out-of-band or hypervisor console | a policy that blocks new logins | needs separate access you have already tried |
| rollback rehearsed on that platform | a rule that breaks remote access | fails when nobody ever ran it |
| the session that is already open | the change itself | cannot show whether new flows work |
ცვლილებამდე შედით კონსოლით და დაამტკიცეთ, რომ მუშაობს, რადგან ზოლის გარეთ ის გზა, რომელიც არასდროს გამოგიყენებიათ, სქემაა და არა სარეზერვო გეგმა. უკუქცევა თავის ადგილს იმსახურებს მხოლოდ იმ პლატფორმაზე, იმ წესების ნაკრებით, დამტკიცებული პროცედურის დაცვით ჩატარებული წვრთნის შემდეგ, ცოცხალ მანქანაზე იმპროვიზაციის ნაცვლად. ჩამოწერეთ ნაბიჯები და სთხოვეთ სხვას წაგიკითხოთ. თუ თანმიმდევრობას დასასრულებლად თქვენი მეხსიერება სჭირდება, ეს გეგმა არ არის.
ერთი ცვლილება, შემდეგ კავშირი, რომელიც უნდა შეფასდეს
შეინახეთ მოქმედი წესების ნაკრები და ფაილი, რომელიც მას ფლობს, შემდეგ კი გააკეთეთ ერთი ვიწრო შესწორება. ერთი ცვლილება თითო ტესტზე შედეგს მიკუთვნებადს ტოვებს; ორი ერთდროულად გტოვებთ მუშა მანქანას და წარმოდგენას იმის შესახებ, თუ რომელმა შესწორებამ იმუშავა. სადაც პლატფორმას შეუძლია კონფიგურაციის გარჩევა ჩატვირთვის გარეშე, ჯერ ეს გააკეთეთ, რათა ბეჭდვითი შეცდომა მაშინ ჩავარდეს, როცა არაფერია რისკის ქვეშ.
nft list ruleset > /root/ruleset.before
nft -c -f /etc/nftables.conf
შემდეგ დაიწყეთ ახალი სესია იმ წყაროდან, რომელსაც შეცვლილი წესი დაემთხვევა, სანამ კონსოლი ჯერ კიდევ დაკავშირებულია. გაიმეორეთ ერთხელ, თუ წარმატებით დასრულდა, რადგან პირველი ცდა შეიძლება ცხრილში უკვე არსებულ ჩანაწერზე მოხვდეს. თუ ვერ მოხერხდა, ჯერ კიდევ გაქვთ გზა შიგნით და გადაწყვეტილება, რომელიც უნდა გაუქმდეს, და ეს არის ყველაზე იაფი ცუდი შედეგი, რაც ხელმისაწვდომია.
მრიცხველები, მდგომარეობა და ფაილი სხვადასხვა კითხვას პასუხობენ
სამი დაკვირვებიდან თითოეული ცალკე დამაჯერებლად შეიძლება გამოიყურებოდეს და დანარჩენ ორზე შეგიშალოს ხელი. მრიცხველები აჩვენებენ, მიაღწია თუ არა ახლახან შექმნილმა ნაკადმა თქვენ მიერ შესწორებულ წესს. მდგომარეობის ცხრილი აჩვენებს, რომელი ნაკადები მიაჩნია მანქანას უკვე დამკვიდრებულად, და ასე შეიძლება გატეხილი წესიც ჯანმრთელად გამოიყურებოდეს. შენახული ფაილი აჩვენებს, რას გააკეთებს მოწყობილობა შემდეგი გადატვირთვის შემდეგ, და ეს შეიძლება არ იყოს ის, რასაც ახლა აკეთებს მოქმედი წესების ნაკრები.
ss -tn state established
წაიკითხეთ მრიცხველები დელტად და არა ჯამად, რადგან ერთადერთი რიცხვი, რომელსაც მნიშვნელობა აქვს, არის ის, რაც თქვენმა სატესტო ნაკადმა გადაადგილა. წესი, რომლის მრიცხველიც არასდროს იზრდება, არ ემთხვევა, რაც არ უნდა სწორად გამოიყურებოდეს ქაღალდზე. დაადასტურეთ უარყოფის შემთხვევაც: პოლიტიკას, რომელსაც არასდროს არაფერი უუარყვია, არასდროს დაუმტკიცებია, რომ უარყოფს იმას, რისი დაბლოკვაც გსურდათ. გაიარეთ ერთი ინტერფეისი თითოეულ ოჯახში, რომელსაც განლაგება რეალურად ატარებს, რადგან v4 წესი არაფერს ამბობს v6 ნაკადზე.
აღადგინეთ შენახული წესების ნაკრებიდან, შემდეგ კი ფაილი შეათანხმეთ
როცა ცვლილება ვერ მოხერხდა, ჩატვირთეთ შენახული წესების ნაკრები იმის ნაცვლად, რომ დასაშვები წესები დაამატოთ მანამ, სანამ შესვლები ისევ იმუშავებს. ყოველი დამატებითი ნებართვა ამშვიდებს სიმპტომს და ტოვებს ხვრელს, რომელიც ინციდენტზე და მის ხსოვნაზე დიდხანს ცოცხლობს. აღადგინეთ, ხელახლა დაუკავშირდით, შემდეგ კი წარუმატებელი შედარება შეინახეთ იმის ჩანაწერის გვერდით, რაც სცადეთ.
წარმატებული ცვლილების შემდეგ, დისკზე არსებულმა ფაილმა უნდა აღწეროს მოქმედი წესების ნაკრები, და დაადასტურეთ, რომ გადატვირთვა მას ამრავლებს. ცოცხალი წესების ნაკრები, რომელიც საკუთარ კონფიგურაციის ფაილს გადაუხვია, ხაფანგია შემდეგი გადატვირთვისთვის.