strongSwan EAP: ตัวตน IKE กับชื่อ AAA ที่คาดหวัง
ไคลเอนต์ strongSwan EAP ตรวจสอบชื่อเซิร์ฟเวอร์ได้สองชื่อ remote.id ครอบคลุมเกตเวย์ IKE และ local.aaa_id ครอบคลุมเซิร์ฟเวอร์ EAP ทั้งสองไม่ใช่ฟิลด์เดียวกัน
การตรวจสอบสิทธิ์ EAP บน IKEv2 อาจกำหนดให้ไคลเอนต์ตรวจสอบชื่อเซิร์ฟเวอร์ที่แตกต่างกันสองชื่อในการเชื่อมต่อเดียว เกตเวย์ที่สิ้นสุด IKE แสดงตัวตนหนึ่ง และส่วนหลัง EAP ที่สิ้นสุดการแลกเปลี่ยน TLS ภายในอาจแสดงอีกตัวตนหนึ่ง ใน strongSwan ทั้งสองอยู่ในบล็อกการกำหนดค่าที่แตกต่างกัน และการใส่ชื่อในบล็อกที่ผิดจะทำให้เกิดความล้มเหลวที่ดูเหมือนปัญหาใบรับรอง การอ่านว่าการตรวจสอบใดล้มเหลวคือสิ่งที่บอกคุณว่าต้องแก้บล็อกไหน
หนึ่งการเชื่อมต่อ สองตัวตนเซิร์ฟเวอร์
ตัวตนแรกเป็นของการแลกเปลี่ยน IKE ไคลเอนต์เรียกที่อยู่และคาดว่าอีกฝ่ายจะพิสูจน์ตัวตนที่เฉพาะเจาะจง ซึ่งปกติคือชื่อในใบรับรองของเกตเวย์
ตัวตนที่สองเป็นของ EAP ด้วย PEAP หรือ TTLS ไคลเอนต์สร้างอุโมงค์ TLS ไปยังเซิร์ฟเวอร์ตรวจสอบสิทธิ์ภายใน IKE SA และเซิร์ฟเวอร์ภายในนั้นแสดงใบรับรองของตนเอง เมื่อส่วนหลังเป็นโฮสต์แยก ชื่อของมันจะต่างจากชื่อเกตเวย์ ไคลเอนต์ที่ตรวจเฉพาะชื่อแรกยอมรับสิ่งที่ชื่อที่สองอ้าง และไคลเอนต์ที่กำหนดค่าด้วยชื่อเดียวในทั้งสองที่จะล้มเหลวทันทีที่ทั้งสองต่างกันจริง
ชื่อทั้งสองมาจากการกำหนดค่าของผู้ดูแลระบบ ไม่ใช่จากใบรับรองที่ทำให้ข้อผิดพลาดหายไป การถามผู้ดูแลระบบเกี่ยวกับรายละเอียดการติดตั้งเร็วกว่าการเดาชื่อโฮสต์สองชื่อ
ฟิลด์ใดเป็นของชั้นใด
ใน swanctl ที่อยู่และตัวตน IKE เป็นการตั้งค่าแยกกัน และตัวตน EAP เป็นตัวที่สาม
ที่อยู่ระยะไกลเลือกว่าแพ็กเก็ตจะไปที่ใด และตัวตนระยะไกลระบุว่าอีกฝ่ายต้องพิสูจน์อะไร ความคาดหวัง EAP เขียนไว้ใต้บล็อก local เพราะอธิบายการแลกเปลี่ยน EAP ของไคลเอนต์นี้ ไม่ใช่พฤติกรรม IKE ของอีกฝ่าย ตำแหน่งนี้นี่เองที่คนอ่านผิด ชื่ออยู่ในไฟล์กำหนดค่าของไคลเอนต์ในขณะที่อธิบายเซิร์ฟเวอร์ และนั่นคือเหตุผลที่มันดูเหมือนอยู่ผิดที่
connections {
office {
remote_addrs = vpn.example.com
local {
auth = eap-peap
aaa_id = auth.example.com
}
remote {
auth = pubkey
id = vpn.example.com
}
}
}
ตัวอย่างนั้นไม่ใช่การเชื่อมต่อที่สมบูรณ์ วัสดุความเชื่อถือ ข้อมูลรับรอง และนโยบายของการเชื่อมต่อลูกยังต้องมีอยู่ การคัดลอกทั้งหมดลงในไฟล์ที่ใช้งานจริงจะแทนที่การตั้งค่าที่คุณยังต้องการ
ทำไม aaa_id อยู่ใต้ local
บล็อก local อธิบายว่าปลายนี้ทำอะไรระหว่างการตรวจสอบสิทธิ์ รวมถึงวิธีการที่จะใช้และตัวตนที่คาดหวังจากปลายอีกด้านสำหรับวิธีนั้น ไม่มีสิ่งใดในบล็อกนี้ยืนยันว่าเซิร์ฟเวอร์ AAA ทำงานบนเครื่องเดียวกัน
ค่าเริ่มต้นทำให้กับดักคมขึ้น เมื่อไม่ได้ตั้งค่าอย่างชัดเจน ตัวตน AAA ที่คาดหวังจะตามตัวตนระยะไกล การติดตั้งด้วยชื่อเดียวจึงทำงานและซ่อนความแตกต่างไว้ ค่าที่ชัดเจนมีความหมายเฉพาะเมื่อการติดตั้ง EAP สิ้นสุดที่อื่นจริง ๆ การตั้งเป็นชื่ออื่นโดยไม่มีเหตุผลนั้นจะสร้างความล้มเหลวที่ผู้ดูแลระบบไม่สามารถทำซ้ำได้ อ่านการติดตั้งก่อนที่จะสร้างชื่อที่สองขึ้นมา
เก็บค่าให้เหมือนกับสิ่งที่ใบรับรองของส่วนหลังอ้างจริง รวมถึงรูปแบบของชื่อ จุดท้ายหรือไวลด์การ์ดที่ไม่ครอบคลุมโฮสต์ก็เพียงพอให้การตรวจสอบล้มเหลว
ส่วนหน้าที่ยังแสดงการแยกไม่ออก
โปรไฟล์ NetworkManager ไม่ใช่ส่วนติดต่อกำหนดค่าเดียวกับ swanctl ปลั๊กอินที่อยู่เบื้องหลังเปิดเผยชุดควบคุมตัวตนที่แคบกว่า และชุดใดมีอยู่ขึ้นอยู่กับเวอร์ชันที่ติดตั้ง
เรื่องนี้สำคัญเมื่อการติดตั้งต้องการสองชื่อจริง ๆ ฟิลด์ที่ระบุว่าเป็นตัวตนเซิร์ฟเวอร์อาจกำหนดค่าได้ชั้นเดียวและไม่ได้อีกชั้น โปรไฟล์จึงอาจดูถูกต้องแต่ยังล้มเหลวในการตรวจสอบภายใน ตรวจสอบว่าปลั๊กอินที่ติดตั้งรองรับอะไรก่อนสรุปว่าโปรไฟล์แสดงการจัดวางนี้ได้ หากทำไม่ได้ ทางเลือกเป็นของผู้ดูแลระบบ คือเส้นทางการจัดเตรียมที่ต่างออกไป หรือการออกแบบตัวตนเซิร์ฟเวอร์ที่แก้ไขแล้ว การทำให้ PEAP อ่อนลงหรือยอมรับชื่อใดก็ได้เป็นการเปลี่ยนนโยบายการตรวจสอบสิทธิ์แทนที่จะแก้ไข
ทางเลือกอื่นไม่ใช่สิ่งที่ควรคิดขึ้นเองบนไคลเอนต์ ขอการจัดวางที่รองรับเป็นลายลักษณ์อักษร แล้วเก็บคำตอบนั้นไว้กับโปรไฟล์
แยกแยะตัวตนไม่ตรงจากใบรับรองที่หมดอายุ
ชื่อไม่ตรงและใบรับรองที่หมดอายุเป็นความล้มเหลวที่ต่างกัน และบันทึกแยกแยะทั้งสอง อ่านข้อความก่อนตัดสินใจว่าจะเปลี่ยนฟิลด์ใด
swanctl --list-conns
swanctl --list-sas
journalctl -u strongswan -n 50 --no-pager
การตั้งตัวตน AAA ที่ต้องการไม่ได้ต่ออายุใบรับรองหรือสร้างความเชื่อถือต่อผู้ออกใบรับรอง และการต่ออายุใบรับรองไม่ได้แก้ไขชื่อที่คาดหวังผิด อ่านว่าการตรวจสอบใดล้มเหลวก่อนแก้ไขฟิลด์ตัวตนอื่น จากนั้นโหลดการกำหนดค่าใหม่และยืนยันว่าการเชื่อมต่อที่โหลดแสดงค่าที่คุณตั้งไว้ เพราะไฟล์ที่แก้ไขแต่ไม่เคยโหลดไม่เปลี่ยนสิ่งใดเลย เขียนชื่อทั้งสองและชั้นของมันลงในบันทึกการติดตั้ง