Score:1

Strongswan / Ipsec เชื่อมต่อ Roadwarrior หลายเครือข่ายย่อยที่แตกต่างกัน

ธง ph
Flo

ฉันกำลังพยายามตั้งค่าเซิร์ฟเวอร์ StrongSwan VPN ซึ่งควรโฮสต์การเชื่อมต่อ Roadwarrior หลายเครื่อง (Windows 10 - ไคลเอนต์ VPN ภายใน) แต่มีซับเน็ตต่างกัน ขึ้นอยู่กับใบรับรองไคลเอ็นต์

root@VPN:/# รุ่น ipsec

Linux strongSwan U5.8.2/K5.4.0-26-ทั่วไป

การตั้งค่าของฉันมีคีย์สาธารณะและส่วนตัว 2 คู่โดยใช้ CN ที่แตกต่างกัน vpn-dev.mycom.com และ vpn-liv.mycom.com. ที่ใช้ ipsec.conf มีลักษณะดังนี้:

conn vpn-dev
    อัตโนมัติ = เพิ่ม
    บีบอัด=ไม่
    พิมพ์=อุโมงค์
    การแลกเปลี่ยนคีย์=ikev2
    การกระจายตัว = ใช่
    ฟอร์ซเอนแคป=ใช่
    dpdaction=ชัดเจน
    dpddelay=300 วินาที
    คีย์ใหม่ = ไม่
    ikelifetime=25200s
    leftid=vpn-dev.mycom.com
    leftcert=เซิร์ฟเวอร์-cert.pem
    leftsendcert=เสมอ
    leftsubnet=0.0.0.0/0
    ขวา=%ใดๆ
    rightid=%ใดๆ
    rightauth=eap-mschapv2
    rightsourceip=10.100.0.0/16-10.100.254.254/16
    rightdns=8.8.8.8,8.8.4.4
    rightendcert=ไม่เคย
    rightcert=ca-cert.pem
    eap_identity=%เอกลักษณ์
    ike=aes128-sha1-modp1024


เชื่อมต่อ vpn-liv
    ยัง = vpn-dev
    leftid=vpn-liv.mycom.com
    leftcert=liv-server-cert.pem
    rightsourceip=10.200.0.0/16-10.200.254.254/16
    rightcert=liv-ca-cert.pem

คีย์ใบรับรองทั้งสองจะถูกเก็บไว้ในไฟล์ ipsec.secrets

vpn-dev.mycom.com : RSA "เซิร์ฟเวอร์-key.pem"
vpn-liv.mycom.com : RSA "liv-server-key.pem"

ผู้ใช้บางคน: EAP "somepassword"

อย่างไรก็ตาม ทันทีที่ฉันพยายามเชื่อมต่อกับอินสแตนซ์strongswan vpn-dev ใช้การเชื่อมต่อและ strongswan ไม่เปลี่ยนเป็น conn vpn-liv

นี่คือบันทึกระหว่างการลอง:

30 มี.ค. 08:47:48 VPN charon: 16[NET] ได้รับแพ็กเก็ต: จาก X.X.X.X[64558] ถึง X.X.X.X[500] (1084 ไบต์)
30 มีนาคม 08:47:48 VPN charon: 16 [IKE] ได้รับ MS NT5 ISAKMPOAKLEY v9 vendor ID
30 มีนาคม 08:47:48 VPN charon: 16 [IKE] ได้รับ MS-Negotiation Discovery Discovery Capable vendor ID
30 มีนาคม 08:47:48 VPN charon: 16[IKE] X.X.X.X กำลังเริ่มต้น IKE_SA
30 มี.ค. 08:47:48 VPN charon: 16[CFG] ข้อเสนอที่เลือก: IKE:AES_CBC_128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
30 มี.ค. 08:47:48 VPN charon: โฮสต์ท้องถิ่น 16 [IKE] อยู่เบื้องหลัง NAT ส่ง Keep Lives
30 มีนาคม 08:47:48 VPN charon: โฮสต์ระยะไกล 16 [IKE] อยู่หลัง NAT
30 มี.ค. 08:47:48 VPN charon: 16[NET] ส่งแพ็กเก็ต: จาก X.X.X.X[500] ถึง X.X.X.X[64558] (328 ไบต์)
30 มี.ค. 08:47:48 VPN charon: 06[NET] ได้รับแพ็กเก็ต: จาก X.X.X.X[64596] ถึง X.X.X.X[4500] (576 ไบต์)
30 มี.ค. 08:47:48 VPN charon: 10 [NET] ได้รับแพ็กเก็ต: จาก X.X.X.X[64596] ถึง X.X.X.X[4500] (576 ไบต์)
30 มี.ค. 08:47:48 VPN charon: 05[NET] ได้รับแพ็กเก็ต: จาก X.X.X.X[64596] ถึง X.X.X.X[4500] (576 ไบต์)
30 มี.ค. 08:47:48 VPN charon: 14 [NET] ได้รับแพ็กเก็ต: จาก X.X.X.X[64596] ถึง X.X.X.X[4500] (368 ไบต์)
30 มีนาคม 08:47:48 VPN charon: 14 [IKE] ได้รับคำขอใบรับรองสำหรับ "CN=PRIV VPN LIV CA"
30 มีนาคม 08:47:48 VPN charon: 14 [IKE] ได้รับคำขอใบรับรอง 69 รายการสำหรับ ca ที่ไม่รู้จัก
30 มี.ค. 08:47:48 VPN charon: 14[CFG] กำลังมองหาการกำหนดค่าเพียร์ที่ตรงกับ X.X.X.X[%any]...X.X.X.X[192.168.0.117]

30 มี.ค. 08:47:48 VPN charon: 14 [CFG] peer config 'vpn-dev' ที่เลือกไว้ # << ที่นี่ไม่ได้เลือก vpn-live แม้ว่าคีย์ส่วนตัวที่ให้ไว้ก่อนหน้านี้จะตรงกับ vpn-live เท่านั้น

30 มีนาคม 08:47:48 VPN charon: 14[IKE] เริ่มต้นวิธี EAP_IDENTITY (id 0x00)
30 มีนาคม 08:47:48 VPN charon: 14 [IKE] เพียร์รองรับ MOBIKE
30 มีนาคม 08:47:48 VPN charon: 14 [IKE] การรับรองความถูกต้องของ 'vpn-dev.mycom.com' (ตัวเอง) ด้วยลายเซ็น RSA สำเร็จ
30 มีนาคม 08:47:48 VPN charon: 14 [IKE] กำลังส่งใบรับรองเอนทิตีปลายทาง "CN=vpn-dev.mycom.com"
30 มีนาคม 08:47:49 VPN charon: 14 [IKE] กำลังส่งคำขอใบรับรองสำหรับ "CN=PRIV VPN DEV CA"
30 มีนาคม 08:47:49 VPN charon: 14 [IKE] กำลังส่งคำขอใบรับรองสำหรับ "CN=PRIV VPN LIV CA"
30 มี.ค. 08:47:49 VPN charon: 14 [NET] กำลังส่งแพ็กเก็ต: จาก X.X.X.X[500] ถึง X.X.X.X[64548] (364 ไบต์)
30 มี.ค. 08:47:49 VPN charon: 06[NET] ได้รับแพ็กเก็ต: จาก X.X.X.X[64618] ถึง X.X.X.X[4500] (92 ไบต์)
30 มีนาคม 08:47:49 VPN charon: 06[IKE] ได้รับ (28) แจ้งข้อผิดพลาด

เป้าหมายโดยทั่วไปคือการโฮสต์ 2 vpn endpoints บนเครื่องเดียว แต่ให้ช่วง ip ที่แตกต่างกันขึ้นอยู่กับการเข้าสู่ระบบ / ใบรับรองที่ใช้

การกำหนดค่าในเครื่องเสร็จสิ้นด้วย (powershell)

นำเข้าใบรับรอง -FilePath liv-ca-cert.pem -CertStoreLocation 'Cert:\LocalMachine\Root'
Add-VpnConnection - ชื่อ 'LIV VPN' - ServerAddress 'vpn-live.mycom.com' -AuthenticationMethod Eap -IdleDisconnectSeconds 43200

ฉันพลาดอะไรไปรึเปล่า? การตั้งค่าของฉันกำหนดค่าผิดพลาดหรือไม่ หรือเป็นไปไม่ได้กับไคลเอนต์ VPN ภายในของ strongswan และ windows 10

Score:0
ธง ph
Flo

ปรากฎว่าไม่สามารถใช้ใบรับรองได้เนื่องจากไม่ได้ใช้เพื่อระบุผู้ใช้บนเซิร์ฟเวอร์

ดังนั้นฉันจึงลงเอยด้วยการใช้วิธีแก้ปัญหาซึ่งอธิบายไว้ใน คำตอบนี้ ซึ่งช่วยในการประเมินการ eap_identiy.

ตอนนี้ลูกค้าของฉันใช้ใบรับรองเดียวกัน แต่ขึ้นอยู่กับการเข้าสู่ระบบ ฉันสามารถตัดสินใจได้ว่าจะใช้ซับเน็ตใด

ipsec.conf ของฉันตอนนี้มีลักษณะดังนี้:

แบ่งปัน eap-conn
   พิมพ์=อุโมงค์
   ike=aes128-sha1-modp1024
   rightauth=eap-mschapv2
   leftcert=เซิร์ฟเวอร์-cert.pem

เชื่อมต่อ eap-init
   ยัง = eap-share
   # การกำหนดค่านี้ใช้เพื่อทำการแลกเปลี่ยน EAP-Identity และ
   # การรับรองความถูกต้องของไคลเอนต์และเซิร์ฟเวอร์
   eap_identity=%เอกลักษณ์
   # ต่อไปนี้ใช้เพื่อบังคับให้เปลี่ยนการเชื่อมต่อหลังจาก
   #การยืนยันสิทธิ์เสร็จสิ้น
   rightgroups=สิ่งนี้ดูเหมือนไม่เกี่ยวข้อง
   อัตโนมัติ = เพิ่ม

เชื่อมต่อ eap-liv
   ยัง = eap-share
   eap_identity=*@liv-some-domain.com
   rightsourceip=10.200.0.0/16-10.200.254.254/16
   อัตโนมัติ = เพิ่ม

เชื่อมต่อ eap-dev
   ยัง = eap-share
   eap_identity=*@dev-some-domain.com
   rightsourceip=10.100.0.0/16-10.100.254.254/16
   อัตโนมัติ = เพิ่ม

อาจไม่ใช่วิธีแก้ปัญหาที่หรูหราที่สุด แต่ใช้ได้ในกรณีของฉัน

Score:0
ธง es
Lin

สำหรับคอนฟิกคอนฟิกหลายคอนฟิกด้วยวิธีการตรวจสอบสิทธิ์แบบเดียวกัน Strongswan สามารถเลือกคอนฟิกที่เหมาะสมตามข้อมูลระบุตัวตนของลูกค้า

ใช้คอนฟิกสองคอนฟิก เช่น:

  1. ด้านขวาทั้ง 2 ข้างใช้ Pubkey ได้ ขวา เป็นข้อจำกัด:
    conn dev-network_ikev2-cert
        rightauth=pubkey
        rightca="C=CN, O=ตัวอย่าง, CN=พัฒนา CA"
        rightsourceip=10.100.0.0/16
        rightdns=8.8.8.8
    
    ทดสอบ conn-network_ikev2-cert
        rightauth=pubkey
        rightca="C=CN, O=ตัวอย่าง, CN=การทดสอบ CA"
        rightsourceip=10.200.0.0/16
        rightdns=8.8.8.8
  • ในการตั้งค่านี้ ลูกค้าที่มีใบรับรองที่ออกโดย พัฒนา CA จะเลือกคอนฟิก dev-network_ikev2-ใบรับรอง โดยตรง.

  • หากลูกค้าใช้ใบรับรองที่ออกโดย การทดสอบ CA, strongswan จะเลือก config ก่อน dev-network_ikev2-ใบรับรองจากนั้นเอาต์พุต การตรวจสอบข้อจำกัดล้มเหลว: เพียร์ไม่ได้รับการรับรองโดย CA 'C=CN, O=Sample, CN=Develop CA'แล้วเลือกรายการถัดไป ทดสอบเครือข่าย _ikev2-cert.

  1. ทั้งด้านขวาโดยใช้ eap-mschapv2 เราสามารถใช้ eap_identity เป็นข้อจำกัด:
    เชื่อมต่อ dev-network_ikev2-eap
        rightauth=eap-mschapv2
        eap_identity=*@dev.com
        rightsourceip=10.100.0.0/16
        rightdns=8.8.8.8
    
    ทดสอบ conn-network_ikev2-eap
        rightauth=eap-mschapv2
        eap_identity=*@test.com
        rightsourceip=10.200.0.0/16
        rightdns=8.8.8.8

นี่คือวิธีที่ Flo ใช้ Strongswan จะทำตรรกะการตรวจสอบคล้ายกับการใช้ pubkey

  • หากลูกค้าใช้ข้อมูลประจำตัวใน *@test.com, หงส์แดงจะเลือกก่อน dev-network_ikev2-eapแล้วพบว่า การตรวจสอบข้อจำกัดล้มเหลว: จำเป็นต้องมีข้อมูลประจำตัว EAP '*@dev.com'แล้วเลือกรายการถัดไป ทดสอบเครือข่าย_ikev2-eap.

หวังว่านี่จะช่วยได้

Score:0
ธง cn

เป็นไปได้ที่จะสลับการเชื่อมต่อตามข้อมูลประจำตัวของเซิร์ฟเวอร์/ใบรับรองเท่านั้น

  • ไคลเอ็นต์ส่งข้อมูลระบุตัวตนระยะไกล (IDr) ในคำขอ IKE_AUTH ซึ่งไคลเอ็นต์จำนวนมากไม่ส่ง (โดยเฉพาะ Windows) มิฉะนั้น จะไม่มีข้อมูลระบุตัวตนให้ตรงกัน ดังนั้นการเชื่อมต่อครั้งแรกจะถูกใช้

หรือ

  • หาก FQDN จับคู่กับที่อยู่ IP ที่แตกต่างกัน ซึ่งสามารถกำหนดค่าเป็นที่อยู่ในท้องถิ่นสำหรับการเชื่อมต่อ ดังนั้นการเชื่อมต่อที่ถูกต้องจึงถูกเลือกตั้งแต่เนิ่นๆ
Flo avatar
ph flag
Flo
ถูกต้องเพียงบางส่วนเท่านั้น [ตามที่ฉันได้เรียนรู้ที่นี่](https://serverfault.com/questions/908098/strongswan-clients-access-rights) การใช้วิธีแก้ปัญหา `rightgroups` คุณสามารถใช้พร็อพเพอร์ตี้ `eap_identity` เพื่อระบุผู้ใช้ได้
cn flag
คุณอาจต้องการอ่านคำถามของคุณอีกครั้ง ;) เป็นการระบุอย่างชัดเจนเกี่ยวกับการเลือกการกำหนดค่าตามข้อมูลประจำตัวของเซิร์ฟเวอร์/ใบรับรอง ไม่ใช่ข้อมูลประจำตัวของไคลเอ็นต์ (นอกจากนี้ หากคุณไม่ได้สังเกต ฉันเขียนคำตอบอื่นแล้ว :)
Flo avatar
ph flag
Flo
ขออภัยที่มีความเข้าใจผิด ฉันกำลังพูดถึงใบรับรองที่ใช้โดยไคลเอนต์ตามที่ฉันระบุไว้ด้วย "ขึ้นอยู่กับการเข้าสู่ระบบ / ใบรับรองที่ใช้" - การกำหนดค่าอาจบอกด้วย `rightcert`
cn flag
ไคลเอ็นต์ไม่ได้ใช้ใบรับรองใดๆ ในการรับรองความถูกต้อง ไม่ว่าจะด้วยการกำหนดค่าเก่าหรือใหม่ของคุณ การตั้งค่า `rightcert` นั้นจะทำให้การกำหนดค่าของคุณเสียหายอยู่ดี เนื่องจากไม่มีไคลเอนต์ใดเลยที่จะตรวจสอบความถูกต้องกับใบรับรอง CA จริง หากคุณต้องการให้ลูกค้าตรวจสอบความถูกต้องด้วยใบรับรองที่ออกโดย CA เฉพาะ (ระดับกลาง) การตั้งค่าที่ถูกต้องควรเป็น 'rightca' แต่จากนั้น 'rightauth' จะต้องตั้งค่าเป็น 'pubkey' หรือ 'eap-tls' และ ไม่ใช่ `eap-mschapv2` และเห็นได้ชัดว่าลูกค้าต้องการใบรับรอง/คีย์ส่วนบุคคลและการกำหนดค่าที่เหมาะสม
Flo avatar
ph flag
Flo
ตอนนี้ชัดเจนสำหรับฉันแล้ว แต่ไม่ใช่ประเด็นของฉัน ขอบคุณอย่างไรก็ตาม

โพสต์คำตอบ

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