IPsec ESP: มันบรรทุกอะไรและจะพิสูจน์ได้อย่างไรว่ามันไหลอยู่
ESP ห่อหุ้มแพ็กเก็ต IP ภายในในโหมดอุโมงค์และระบุความสัมพันธ์ของมันผ่าน SPI อ่านสถานะแล้วสังเกตว่าฟลูว์เดียวทำให้ตัวนับขยับอย่างไร
ESP บรรทุกทราฟฟิกใน VPN แบบ IPsec และ runbook ของมันเริ่มต้นด้วยกฎข้อเดียว: อ่านความสัมพันธ์ด้านความปลอดภัยก่อนเปลี่ยนนโยบาย พฤติกรรมของ ESP ที่อธิบายไม่ได้ส่วนใหญ่มักย้อนกลับไปที่ตัวเลือกที่ไม่ตรงกัน โหมดที่ถูกสันนิษฐานแทนที่จะอ่าน หรือตัวนับที่ไม่มีใครตรวจสอบขณะส่งฟลูว์เดียว สามขั้นตอนด้านล่างกำหนดว่าอะไรบรรทุกอะไร พิสูจน์ว่าฟลูว์เดียวใช้มัน และทิ้งการย้อนกลับที่ไม่ขึ้นกับความทรงจำ แต่ละขั้นตอนให้ข้อสังเกตหนึ่งข้อที่ควรค่าแก่การจด
รู้จักฟิลด์ก่อนอ่านมัน
ESP วางส่วนหัวไว้ข้างหน้าข้อมูลที่ได้รับการป้องกันและส่วนท้ายไว้ข้างหลัง ส่วนหัวบรรทุกดัชนีพารามิเตอร์ความปลอดภัยที่ระบุว่าผู้รับควรใช้ความสัมพันธ์ใด หมายเลขลำดับสำหรับตรวจจับการเล่นซ้ำ และในส่วนท้ายมีการเติมเพื่อให้เพย์โหลดอยู่ในแนวเดียวสำหรับรหัสลับ ฟิลด์ส่วนหัวถัดไปในส่วนท้ายบอกว่าเนื้อหาที่ได้รับการป้องกันคืออะไร และนั่นคือวิธีที่ผู้รับรู้ว่าตนถอดเอนแคปซูลอะไรออก
โหมดเปลี่ยนว่าอะไรอยู่ภายในการป้องกันนั้น ในโหมดอุโมงค์ วัสดุที่ได้รับการป้องกันคือแพ็กเก็ต IP ภายในที่สมบูรณ์ และส่วนหัวภายนอกใหม่บรรทุกมันระหว่างปลายทั้งสอง ในโหมดขนส่ง การป้องกันห่อหุ้มเพย์โหลดของชั้นบนของแพ็กเก็ตที่มีอยู่ จึงไม่มีส่วนหัว IP ที่สองให้เปิด โหมดใดถูกใช้เป็นข้อเท็จจริงของการกำหนดค่า ไม่ใช่เรื่องของการตีความ อ่านจากรายการสถานะแทนการคาดเดาจากแผนภาพ
ไม่มีโหมดใดซ่อนการกำหนดแอดเดรสภายนอกที่ต้องส่งแพ็กเก็ต นั่นเป็นคุณสมบัติของการออกแบบไม่ใช่ข้อบกพร่อง และนั่นคือเหตุผลที่ผู้สังเกตตรงกลางยังเห็นได้ว่าสองแอดเดรสใดกำลังคุยกันแม้เพย์โหลดจะทึบ
ขั้นตอนแรก: อ่านสถานะ แล้วจึงอ่านนโยบาย
รายการสถานะเก็บกุญแจและตัวนับ รายการนโยบายเก็บตัวเลือกที่กำหนดว่าใครได้รับอนุญาตให้ใช้ บน Linux ทั้งสองมองเห็นได้โดยไม่ต้องดักจับแพ็กเก็ต และการอ่านตามลำดับนั้นทำให้คำถามสองข้อแยกจากกัน
ip xfrm state
ip xfrm policy
ในผลลัพธ์สถานะ ให้ตรวจสอบต้นทางและปลายทางของความสัมพันธ์ โหมด และว่าการห่อหุ้มแสดงพอร์ต UDP หรือไม่ พอร์ตเหล่านั้นหมายความว่ากำลังใช้การทะลุผ่าน NAT ซึ่งเปลี่ยนสิ่งที่ไฟร์วอลล์ตรงกลางต้องอนุญาต แต่ไม่ใช่ตัวเลือกหรือกุญแจใดที่ใช้ที่ปลายทั้งสอง
จากนั้นอ่านตัวเลือกในนโยบาย ตัวเลือกที่ระบุคำนำหน้าที่แคบกว่าทราฟฟิกที่คุณทดสอบคือสาเหตุทั่วไปที่สุดที่อุโมงค์ที่ทำงานอยู่ดูเหมือนเพิกเฉยต่อฟลูว์ และตัวเลือกสำหรับโปรโตคอลที่ผิดก็ให้ความเงียบเดียวกัน
| Field | Where it appears | What it decides |
|---|---|---|
| Security parameter index | ESP header, and the receiving state entry | Which association and keys the receiver applies |
| Sequence number | ESP header | Replay detection for that association |
| Next header | ESP trailer | What the decapsulated payload contains |
| Inner IP header | Inside tunnel-mode payload only | The original source and destination the endpoints act on |
| Traffic selectors | Policy, not the packet | Which 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 จะเสร็จสมบูรณ์เมื่อคนถัดไปสามารถทำซ้ำได้จากบันทึก