ทดสอบการเปลี่ยนแปลงไฟร์วอลล์โดยไม่ล็อกตัวเองออกไป
จัดลำดับเส้นทางกู้คืนของคุณก่อนที่กฎจะถูกนำเข้า แล้วตรวจสอบด้วยโฟลว์ที่นโยบายใหม่ต้องประเมิน ไม่ใช่ด้วยเซสชันที่รอดชีวิต
กฎถูกนำเข้า เทอร์มินัลที่คุณมีอยู่แล้วยังตอบสนองอยู่ และการล็อกอินครั้งถัดไปถูกปฏิเสธ ช่องว่างนั้นคือความยากทั้งหมดของการทดสอบการเปลี่ยนแปลงไฟร์วอลล์ผ่านการเชื่อมต่อที่คุณกำลังเปลี่ยน การติดตามการเชื่อมต่อตัดสินใจครั้งเดียวแล้วเลิกมอง ดังนั้นโฟลว์ที่สถาปนาแล้วจึงเป็นการตรวจสอบเดียวที่มองไม่เห็นนโยบายใหม่ ต่อไปนี้เปรียบเทียบเส้นทางกลับสามทาง แล้วกำหนดลำดับที่ต้องเปลี่ยนและตรวจสอบกฎ
ทำไมเซสชันที่รอดชีวิตจึงเป็นหลักฐานที่อ่อนแอที่สุด
ไฟร์วอลล์แบบมีสถานะประเมินแพ็กเก็ตแรกของโฟลว์และเก็บคำตัดสินนั้นไว้ตราบที่รายการยังมีชีวิต กฎที่เพิ่มเข้ามาทีหลังมีผลกับโฟลว์ที่เริ่มทีหลัง ด้วยเหตุนี้หน้าต่างที่คุณกำลังพิมพ์จึงยังใช้งานได้ขณะที่คนอื่นทั้งหมดถูกปฏิเสธ สิ่งที่คุณเรียนรู้จากมันอธิบายนโยบายที่บังคับใช้เมื่อไม่กี่นาทีก่อน แม้แต่การดักจับที่ทำบนโฟลว์นั้นก็แสดงการตัดสินใจที่เครื่องได้ทำไปแล้ว
มองเซสชันที่ทำงานอยู่เป็นทางออกฉุกเฉิน ไม่ใช่การวัด ทุกการตรวจสอบที่คุ้มค่าต้อง เปิดโฟลว์ใหม่จากแหล่งที่กฎใหม่จะประเมิน และการตรวจสอบแรกควรเป็นการตรวจสอบที่ล้มเหลวแล้วเจ็บที่สุด เมื่อเซสชันนั้นเป็นทางเข้าเดียวของคุณ การเปลี่ยนแปลงยังไม่พร้อมที่จะทำ
เส้นทางกลับสามทาง เรียงตามสิ่งที่แต่ละทางพึ่งพา
จัดลำดับตัวเลือกตามการพึ่งพาอุปกรณ์ที่กำลังทดสอบ เพราะลำดับนั้นคือสิ่งที่คุณหยิบมาใช้เมื่อกฎกลายเป็นผิด คอนโซลที่ไม่เคยผ่านไฟร์วอลล์เป็นอิสระ การย้อนกลับที่ซ้อมมาแล้วเกือบเป็นเช่นนั้น และเซสชันที่เปิดอยู่แล้วไม่ใช่
| 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
กู้คืนจากชุดกฎที่บันทึกไว้ แล้วทำให้ไฟล์สอดคล้องกัน
เมื่อการเปลี่ยนแปลงล้มเหลว ให้โหลดชุดกฎที่บันทึกไว้แทนที่จะเพิ่มกฎที่อนุญาตไปเรื่อยๆ จนกว่าการล็อกอินจะทำงานอีกครั้ง การอนุญาตเพิ่มขึ้นทุกครั้งช่วยระงับอาการและทิ้งรูที่อายุยืนกว่าอุบัติการณ์และความทรงจำเกี่ยวกับมัน กู้คืน เชื่อมต่อใหม่ แล้วเก็บการเปรียบเทียบที่ล้มเหลวไว้ข้างบันทึกสิ่งที่คุณลอง
หลังการเปลี่ยนแปลงที่สำเร็จ ทำให้ไฟล์บนดิสก์อธิบายชุดกฎที่กำลังทำงาน และยืนยันว่าการโหลดใหม่สร้างมันขึ้นมาใหม่ ชุดกฎที่ทำงานอยู่ซึ่งเบี่ยงเบนไปจากไฟล์คอนฟิกของตัวเองคือกับดักที่วางไว้สำหรับการรีบูตครั้งถัดไป