ESP บรรทุกทราฟฟิกใน VPN แบบ IPsec และ runbook ของมันเริ่มต้นด้วยกฎข้อเดียว: อ่านความสัมพันธ์ด้านความปลอดภัยก่อนเปลี่ยนนโยบาย พฤติกรรมของ ESP ที่อธิบายไม่ได้ส่วนใหญ่มักย้อนกลับไปที่ตัวเลือกที่ไม่ตรงกัน โหมดที่ถูกสันนิษฐานแทนที่จะอ่าน หรือตัวนับที่ไม่มีใครตรวจสอบขณะส่งฟลูว์เดียว สามขั้นตอนด้านล่างกำหนดว่าอะไรบรรทุกอะไร พิสูจน์ว่าฟลูว์เดียวใช้มัน และทิ้งการย้อนกลับที่ไม่ขึ้นกับความทรงจำ แต่ละขั้นตอนให้ข้อสังเกตหนึ่งข้อที่ควรค่าแก่การจด

รู้จักฟิลด์ก่อนอ่านมัน

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

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

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

ขั้นตอนแรก: อ่านสถานะ แล้วจึงอ่านนโยบาย

รายการสถานะเก็บกุญแจและตัวนับ รายการนโยบายเก็บตัวเลือกที่กำหนดว่าใครได้รับอนุญาตให้ใช้ บน Linux ทั้งสองมองเห็นได้โดยไม่ต้องดักจับแพ็กเก็ต และการอ่านตามลำดับนั้นทำให้คำถามสองข้อแยกจากกัน

ip xfrm state
ip xfrm policy

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

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

FieldWhere it appearsWhat it decides
Security parameter indexESP header, and the receiving state entryWhich association and keys the receiver applies
Sequence numberESP headerReplay detection for that association
Next headerESP trailerWhat the decapsulated payload contains
Inner IP headerInside tunnel-mode payload onlyThe original source and destination the endpoints act on
Traffic selectorsPolicy, not the packetWhich local traffic is allowed to use the association

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

ขั้นตอนที่สอง: พิสูจน์ว่าฟลูว์เดียวทำให้ตัวนับขยับ

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

ip -s xfrm state
tcpdump -ni any esp

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

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

ขั้นตอนที่สาม: เปลี่ยนสิ่งเดียวและเก็บการย้อนกลับไว้

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

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

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

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

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