กฎถูกนำเข้า เทอร์มินัลที่คุณมีอยู่แล้วยังตอบสนองอยู่ และการล็อกอินครั้งถัดไปถูกปฏิเสธ ช่องว่างนั้นคือความยากทั้งหมดของการทดสอบการเปลี่ยนแปลงไฟร์วอลล์ผ่านการเชื่อมต่อที่คุณกำลังเปลี่ยน การติดตามการเชื่อมต่อตัดสินใจครั้งเดียวแล้วเลิกมอง ดังนั้นโฟลว์ที่สถาปนาแล้วจึงเป็นการตรวจสอบเดียวที่มองไม่เห็นนโยบายใหม่ ต่อไปนี้เปรียบเทียบเส้นทางกลับสามทาง แล้วกำหนดลำดับที่ต้องเปลี่ยนและตรวจสอบกฎ

ทำไมเซสชันที่รอดชีวิตจึงเป็นหลักฐานที่อ่อนแอที่สุด

ไฟร์วอลล์แบบมีสถานะประเมินแพ็กเก็ตแรกของโฟลว์และเก็บคำตัดสินนั้นไว้ตราบที่รายการยังมีชีวิต กฎที่เพิ่มเข้ามาทีหลังมีผลกับโฟลว์ที่เริ่มทีหลัง ด้วยเหตุนี้หน้าต่างที่คุณกำลังพิมพ์จึงยังใช้งานได้ขณะที่คนอื่นทั้งหมดถูกปฏิเสธ สิ่งที่คุณเรียนรู้จากมันอธิบายนโยบายที่บังคับใช้เมื่อไม่กี่นาทีก่อน แม้แต่การดักจับที่ทำบนโฟลว์นั้นก็แสดงการตัดสินใจที่เครื่องได้ทำไปแล้ว

มองเซสชันที่ทำงานอยู่เป็นทางออกฉุกเฉิน ไม่ใช่การวัด ทุกการตรวจสอบที่คุ้มค่าต้อง เปิดโฟลว์ใหม่จากแหล่งที่กฎใหม่จะประเมิน และการตรวจสอบแรกควรเป็นการตรวจสอบที่ล้มเหลวแล้วเจ็บที่สุด เมื่อเซสชันนั้นเป็นทางเข้าเดียวของคุณ การเปลี่ยนแปลงยังไม่พร้อมที่จะทำ

เส้นทางกลับสามทาง เรียงตามสิ่งที่แต่ละทางพึ่งพา

จัดลำดับตัวเลือกตามการพึ่งพาอุปกรณ์ที่กำลังทดสอบ เพราะลำดับนั้นคือสิ่งที่คุณหยิบมาใช้เมื่อกฎกลายเป็นผิด คอนโซลที่ไม่เคยผ่านไฟร์วอลล์เป็นอิสระ การย้อนกลับที่ซ้อมมาแล้วเกือบเป็นเช่นนั้น และเซสชันที่เปิดอยู่แล้วไม่ใช่

Way back inWhat it survivesWhere it fails
out-of-band or hypervisor consolea policy that blocks new loginsneeds separate access you have already tried
rollback rehearsed on that platforma rule that breaks remote accessfails when nobody ever ran it
the session that is already openthe change itselfcannot show whether new flows work

ก่อนการเปลี่ยนแปลง ให้ล็อกอินผ่านคอนโซลและพิสูจน์ว่ามันทำงาน เพราะเส้นทางนอกแบนด์ที่คุณไม่เคยใช้คือแผนภาพ ไม่ใช่ทางสำรอง การย้อนกลับได้ที่ของมันก็ต่อเมื่อซ้อมบนแพลตฟอร์มนั้น ด้วยชุดกฎนั้น ตามขั้นตอนที่อนุมัติแล้ว แทนที่จะคิดแก้เฉพาะหน้าบนเครื่องที่ใช้งานจริง เขียนขั้นตอนไว้และให้คนอื่นอ่านกลับมา ถ้าลำดับต้องอาศัยความจำของคุณจึงจะจบ มันไม่ใช่แผน

หนึ่งการเปลี่ยนแปลง แล้วจึงเป็นการเชื่อมต่อที่ต้องถูกประเมิน

บันทึกชุดกฎที่ใช้งานอยู่และไฟล์ที่เป็นเจ้าของ แล้วทำการแก้ไขเพียงจุดเดียว การเปลี่ยนแปลงหนึ่งครั้งต่อการทดสอบทำให้ผลลัพธ์โยงกลับได้ สองอย่างพร้อมกันจะเหลือเครื่องที่ทำงานอยู่และไม่รู้ว่าการแก้ไขใดทำงาน จุดที่แพลตฟอร์มสามารถวิเคราะห์คอนฟิกโดยไม่โหลดได้ ให้ทำก่อน เพื่อให้คำผิดพลาดในการพิมพ์ล้มเหลวขณะที่ไม่มีอะไรเสี่ยง

nft list ruleset > /root/ruleset.before
nft -c -f /etc/nftables.conf

จากนั้นเริ่มเซสชันใหม่จากแหล่งที่กฎที่เปลี่ยนจะจับคู่ได้ ขณะที่คอนโซลยังเชื่อมต่ออยู่ ทำซ้ำอีกครั้งถ้าสำเร็จ เพราะความพยายามครั้งแรกอาจตกไปที่รายการที่ตารางมีอยู่แล้ว ถ้าล้มเหลว คุณยังมีทางเข้าและมีการตัดสินใจให้ย้อนกลับ ซึ่งเป็นผลลัพธ์แย่ที่ถูกที่สุดเท่าที่มี

ตัวนับ สถานะ และไฟล์ตอบคำถามต่างกัน

การสังเกตทั้งสามอย่างอาจดูน่าเชื่อถือได้ด้วยตัวมันเองและทำให้คุณเข้าใจผิดเกี่ยวกับอีกสองอย่าง ตัวนับแสดงว่าโฟลว์ที่คุณเพิ่งสร้างไปถึงกฎที่คุณแก้ไขหรือไม่ ตารางสถานะแสดงว่าเครื่องคิดว่าโฟลว์ใดสถาปนาแล้ว จึงทำให้กฎที่พังยังดูแข็งแรงได้ ไฟล์ที่บันทึกไว้แสดงว่าเครื่องจะทำอะไรหลังการโหลดใหม่ครั้งถัดไป และนั่นอาจไม่ใช่สิ่งที่ชุดกฎที่กำลังทำงานอยู่ทำตอนนี้

ss -tn state established

อ่านตัวนับเป็นส่วนต่าง ไม่ใช่ผลรวม เพราะตัวเลขเดียวที่สำคัญคือตัวเลขที่โฟลว์ทดสอบของคุณขยับ กฎที่ตัวนับไม่เคยเพิ่มนั้นไม่ตรง แม้จะดูถูกต้องบนกระดาษมากเพียงใด ยืนยันกรณีการปฏิเสธด้วย นโยบายที่ไม่เคยปฏิเสธอะไรเลยไม่เคยพิสูจน์ว่าปฏิเสธสิ่งที่คุณตั้งใจจะบล็อก เดินผ่านอินเทอร์เฟซหนึ่งในแต่ละตระกูลที่การติดตั้งพาจริง เพราะกฎ v4 ไม่ได้พูดอะไรเกี่ยวกับโฟลว์ v6

กู้คืนจากชุดกฎที่บันทึกไว้ แล้วทำให้ไฟล์สอดคล้องกัน

เมื่อการเปลี่ยนแปลงล้มเหลว ให้โหลดชุดกฎที่บันทึกไว้แทนที่จะเพิ่มกฎที่อนุญาตไปเรื่อยๆ จนกว่าการล็อกอินจะทำงานอีกครั้ง การอนุญาตเพิ่มขึ้นทุกครั้งช่วยระงับอาการและทิ้งรูที่อายุยืนกว่าอุบัติการณ์และความทรงจำเกี่ยวกับมัน กู้คืน เชื่อมต่อใหม่ แล้วเก็บการเปรียบเทียบที่ล้มเหลวไว้ข้างบันทึกสิ่งที่คุณลอง

หลังการเปลี่ยนแปลงที่สำเร็จ ทำให้ไฟล์บนดิสก์อธิบายชุดกฎที่กำลังทำงาน และยืนยันว่าการโหลดใหม่สร้างมันขึ้นมาใหม่ ชุดกฎที่ทำงานอยู่ซึ่งเบี่ยงเบนไปจากไฟล์คอนฟิกของตัวเองคือกับดักที่วางไว้สำหรับการรีบูตครั้งถัดไป

บทความที่เกี่ยวข้อง