ต่อเนื่องชุดบทความในหัวข้อองค์กร VPN การเข้าถึงระยะไกล การเข้าถึง ฉันอดไม่ได้ที่จะแบ่งปันประสบการณ์การใช้งานที่น่าสนใจของฉัน การกำหนดค่า VPN ที่มีความปลอดภัยสูง. ลูกค้ารายหนึ่งนำเสนองานที่ไม่สำคัญ (มีนักประดิษฐ์ในหมู่บ้านรัสเซีย) แต่ความท้าทายได้รับการยอมรับและนำไปปฏิบัติอย่างสร้างสรรค์ ผลลัพธ์ที่ได้คือแนวคิดที่น่าสนใจโดยมีลักษณะดังนี้
- ปัจจัยหลายประการในการป้องกันการเปลี่ยนอุปกรณ์ปลายทาง (โดยมีผลผูกพันกับผู้ใช้อย่างเข้มงวด)
- ประเมินความสอดคล้องของพีซีของผู้ใช้ด้วย UDID ที่กำหนดของพีซีที่ได้รับอนุญาตในฐานข้อมูลการรับรองความถูกต้อง
- ด้วย MFA โดยใช้ PC UDID จากใบรับรองสำหรับการตรวจสอบสิทธิ์รองผ่าน Cisco DUO (คุณสามารถแนบ SAML/Radius ที่รองรับได้);
- การรับรองความถูกต้องแบบหลายปัจจัย:
- ใบรับรองผู้ใช้พร้อมการตรวจสอบภาคสนามและการรับรองความถูกต้องรองกับหนึ่งในนั้น
- เข้าสู่ระบบ (ไม่สามารถเปลี่ยนแปลงได้นำมาจากใบรับรอง) และรหัสผ่าน
- การประมาณสถานะของโฮสต์ที่เชื่อมต่อ (Posture)
ส่วนประกอบโซลูชันที่ใช้:
- Cisco ASA (เกตเวย์ VPN);
- Cisco ISE (การรับรองความถูกต้อง / การอนุญาต / การบัญชี, การประเมินสถานะ, CA);
- Cisco DUO (การรับรองความถูกต้องแบบหลายปัจจัย) (คุณสามารถแนบ SAML/Radius ที่รองรับได้);
- Cisco AnyConnect (เอเจนต์อเนกประสงค์สำหรับเวิร์กสเตชันและระบบปฏิบัติการมือถือ);
เริ่มจากความต้องการของลูกค้า:
- ผู้ใช้จะต้องสามารถดาวน์โหลดไคลเอ็นต์ AnyConnect จากเกตเวย์ VPN ผ่านการตรวจสอบสิทธิ์การเข้าสู่ระบบ/รหัสผ่านได้ โมดูล AnyConnect ที่จำเป็นทั้งหมดจะต้องได้รับการติดตั้งโดยอัตโนมัติตามนโยบายของผู้ใช้
- ผู้ใช้ควรจะสามารถออกใบรับรองได้โดยอัตโนมัติ (สำหรับสถานการณ์หนึ่ง สถานการณ์หลักคือการออกใบรับรองด้วยตนเองและการอัปโหลดบนพีซี) แต่ฉันได้นำปัญหาอัตโนมัติไปใช้เพื่อการสาธิต (ไม่เคยสายเกินไปที่จะลบออก)
- การตรวจสอบสิทธิ์ขั้นพื้นฐานจะต้องเกิดขึ้นในหลายขั้นตอน ขั้นแรกคือการตรวจสอบสิทธิ์ใบรับรองพร้อมการวิเคราะห์ฟิลด์ที่จำเป็นและค่า จากนั้นเข้าสู่ระบบ/รหัสผ่าน เฉพาะครั้งนี้เท่านั้นที่ชื่อผู้ใช้ที่ระบุในช่องใบรับรองจะต้องถูกแทรกลงในหน้าต่างเข้าสู่ระบบ ชื่อเรื่อง (CN) โดยไม่มีความสามารถในการแก้ไข
- คุณต้องตรวจสอบให้แน่ใจว่าอุปกรณ์ที่คุณใช้เข้าสู่ระบบเป็นแล็ปท็อปขององค์กรที่ออกให้กับผู้ใช้สำหรับการเข้าถึงระยะไกล ไม่ใช่อย่างอื่น (มีหลายทางเลือกเพื่อให้เป็นไปตามข้อกำหนดนี้)
- สถานะของอุปกรณ์เชื่อมต่อ (ในขั้นตอนนี้ของพีซี) ควรได้รับการประเมินด้วยการตรวจสอบตารางความต้องการของลูกค้าจำนวนมาก (โดยสรุป):
- ไฟล์และคุณสมบัติ
- รายการรีจิสทรี;
- แพทช์ระบบปฏิบัติการจากรายการที่ให้ไว้ (การรวม SCCM ในภายหลัง);
- ความพร้อมใช้งานของ Anti-Virus จากผู้ผลิตเฉพาะและความเกี่ยวข้องของลายเซ็น
- กิจกรรมของบริการบางอย่าง
- ความพร้อมใช้งานของโปรแกรมที่ติดตั้งบางโปรแกรม
ขั้นแรก ฉันขอแนะนำให้คุณดูวิดีโอสาธิตการใช้งานที่เกิดขึ้นอย่างแน่นอน ยูทูป (5 นาที).
ตอนนี้ผมเสนอให้พิจารณารายละเอียดการใช้งานที่ไม่ครอบคลุมในคลิปวิดีโอ
มาเตรียมโปรไฟล์ AnyConnect กัน:
ก่อนหน้านี้ฉันได้ยกตัวอย่างการสร้างโปรไฟล์ (ในแง่ของรายการเมนูใน ASDM) ในบทความเกี่ยวกับการตั้งค่า
ในโปรไฟล์ เราจะระบุเกตเวย์ VPN และชื่อโปรไฟล์สำหรับเชื่อมต่อกับไคลเอนต์:
มากำหนดค่าการออกใบรับรองอัตโนมัติจากด้านโปรไฟล์โดยระบุพารามิเตอร์ใบรับรองโดยเฉพาะและให้ความสนใจกับฟิลด์โดยเฉพาะ ชื่อย่อ (I)โดยที่ค่าเฉพาะถูกป้อนด้วยตนเอง คุณทำ เครื่องทดสอบ (ตัวระบุอุปกรณ์เฉพาะที่สร้างโดยไคลเอนต์ Cisco AnyConnect)
ที่นี่ฉันต้องการพูดนอกเรื่องโคลงสั้น ๆ เนื่องจากบทความนี้อธิบายแนวคิด เพื่อวัตถุประสงค์ในการสาธิต UDID สำหรับการออกใบรับรองจะถูกป้อนลงในฟิลด์ชื่อย่อของโปรไฟล์ AnyConnect แน่นอนว่าในชีวิตจริง หากคุณทำเช่นนี้ ไคลเอนต์ทั้งหมดจะได้รับใบรับรองที่มี UDID เดียวกันในฟิลด์นี้ และจะไม่มีอะไรทำงานให้พวกเขาได้ เนื่องจากพวกเขาต้องการ UDID ของพีซีเฉพาะของตน น่าเสียดายที่ AnyConnect ยังไม่ได้ใช้การทดแทนฟิลด์ UDID ในโปรไฟล์คำขอใบรับรองผ่านตัวแปรสภาพแวดล้อม เช่นเดียวกับที่ใช้กับตัวแปร %ผู้ใช้%.
เป็นที่น่าสังเกตว่าในตอนแรกลูกค้า (ของสถานการณ์นี้) วางแผนที่จะออกใบรับรองอย่างอิสระด้วย UDID ที่กำหนดในโหมดแมนนวลไปยังพีซีที่ได้รับการป้องกันดังกล่าวซึ่งไม่เป็นปัญหาสำหรับเขา อย่างไรก็ตาม สำหรับพวกเราส่วนใหญ่ เราต้องการระบบอัตโนมัติ (สำหรับฉัน มันเป็นเรื่องจริง =))
และนี่คือสิ่งที่ฉันสามารถนำเสนอได้ในแง่ของระบบอัตโนมัติ หาก AnyConnect ยังไม่สามารถออกใบรับรองโดยอัตโนมัติโดยการแทนที่ UDID แบบไดนามิก แสดงว่ามีอีกวิธีหนึ่งที่ต้องใช้ความคิดสร้างสรรค์เล็กน้อยและมือที่มีทักษะ - ฉันจะบอกแนวคิดนี้ให้คุณทราบ อันดับแรก มาดูกันว่าเอเจนต์ AnyConnect สร้าง UDID บนระบบปฏิบัติการที่แตกต่างกันได้อย่างไร:
- Windows — แฮช SHA-256 ของการรวมกันของคีย์รีจิสทรี DigitalProductID และ Machine SID
- OSX — แพลตฟอร์มแฮช SHA-256UUID
- ลินุกซ์ — แฮช SHA-256 ของ UUID ของพาร์ติชันรูท
- iOS ของแอปเปิ้ล — แพลตฟอร์มแฮช SHA-256UUID
- Android – ดูเอกสารได้ที่
ลิงค์
ดังนั้นเราจึงสร้างสคริปต์สำหรับระบบปฏิบัติการ Windows ขององค์กรของเราโดยใช้สคริปต์นี้เราจะคำนวณ UDID ในเครื่องโดยใช้อินพุตที่รู้จักและสร้างคำขอสำหรับการออกใบรับรองโดยป้อน UDID นี้ในช่องที่จำเป็น อย่างไรก็ตามคุณสามารถใช้เครื่องได้ ใบรับรองที่ออกโดย AD (โดยเพิ่มการรับรองความถูกต้องสองครั้งโดยใช้ใบรับรองให้กับโครงร่าง ใบรับรองหลายฉบับ).
มาเตรียมการตั้งค่าฝั่ง Cisco ASA กัน:
มาสร้าง TrustPoint สำหรับเซิร์ฟเวอร์ ISE CA กันดีกว่า โดยจะเป็นเซิร์ฟเวอร์ที่จะออกใบรับรองให้กับลูกค้า ฉันจะไม่พิจารณาขั้นตอนการนำเข้า Key-Chain ตัวอย่างได้อธิบายไว้ในบทความของฉันเกี่ยวกับการตั้งค่า
crypto ca trustpoint ISE-CA
enrollment terminal
crl configure
เรากำหนดค่าการจัดจำหน่ายโดย Tunnel-Group ตามกฎเกณฑ์ตามฟิลด์ในใบรับรองที่ใช้สำหรับการตรวจสอบสิทธิ์ โปรไฟล์ AnyConnect ที่เราทำในขั้นตอนก่อนหน้าได้รับการกำหนดค่าที่นี่เช่นกัน โปรดทราบว่าฉันกำลังใช้ค่า SECUREBANK-RAเพื่อโอนผู้ใช้ที่มีใบรับรองที่ออกไปยังกลุ่มทันเนล ปลอดภัยธนาคาร-VPNโปรดทราบว่าฉันมีฟิลด์นี้ในคอลัมน์คำขอใบรับรองโปรไฟล์ AnyConnect
tunnel-group-map enable rules
!
crypto ca certificate map OU-Map 6
subject-name attr ou eq securebank-ra
!
webvpn
anyconnect profiles SECUREBANK disk0:/securebank.xml
certificate-group-map OU-Map 6 SECURE-BANK-VPN
!
การตั้งค่าเซิร์ฟเวอร์การตรวจสอบความถูกต้อง ในกรณีของฉัน นี่คือ ISE สำหรับขั้นตอนแรกของการตรวจสอบสิทธิ์และ DUO (Radius Proxy) เป็น MFA
! CISCO ISE
aaa-server ISE protocol radius
authorize-only
interim-accounting-update periodic 24
dynamic-authorization
aaa-server ISE (inside) host 192.168.99.134
key *****
!
! DUO RADIUS PROXY
aaa-server DUO protocol radius
aaa-server DUO (inside) host 192.168.99.136
timeout 60
key *****
authentication-port 1812
accounting-port 1813
no mschapv2-capable
!
เราสร้างนโยบายกลุ่มและกลุ่มช่องสัญญาณและส่วนประกอบเสริม:
กลุ่มอุโมงค์ ค่าเริ่มต้นWEBVPNGroup จะใช้เป็นหลักในการดาวน์โหลดไคลเอนต์ AnyConnect VPN และออกใบรับรองผู้ใช้โดยใช้ฟังก์ชัน SCEP-Proxy ของ ASA ด้วยเหตุนี้เรามีตัวเลือกที่เกี่ยวข้องที่เปิดใช้งานทั้งในกลุ่มช่องสัญญาณเองและในนโยบายกลุ่มที่เกี่ยวข้อง ดาวน์โหลด ACและในโปรไฟล์ AnyConnect ที่โหลดไว้ (ช่องสำหรับการออกใบรับรอง ฯลฯ ) นอกจากนี้ในนโยบายกลุ่มนี้ เรายังระบุถึงความจำเป็นในการดาวน์โหลดอีกด้วย โมดูลท่าทาง ISE.
กลุ่มอุโมงค์ ปลอดภัยธนาคาร-VPN ไคลเอนต์จะถูกใช้โดยอัตโนมัติเมื่อตรวจสอบสิทธิ์กับใบรับรองที่ออกในขั้นตอนก่อนหน้า เนื่องจากตามแผนที่ใบรับรอง การเชื่อมต่อจะตกอยู่บนกลุ่มอุโมงค์นี้โดยเฉพาะ ฉันจะบอกคุณเกี่ยวกับตัวเลือกที่น่าสนใจที่นี่:
- รองการรับรองความถูกต้องเซิร์ฟเวอร์กลุ่ม DUO # ตั้งค่าการรับรองความถูกต้องรองบนเซิร์ฟเวอร์ DUO (Radius Proxy)
- ชื่อผู้ใช้จากใบรับรองCN # สำหรับการรับรองความถูกต้องหลัก เราใช้ฟิลด์ CN ของใบรับรองเพื่อสืบทอดการเข้าสู่ระบบของผู้ใช้
- ชื่อผู้ใช้รองจากใบรับรอง I # สำหรับการตรวจสอบสิทธิ์รองบนเซิร์ฟเวอร์ DUO เราจะใช้ชื่อผู้ใช้ที่แยกออกมาและฟิลด์ชื่อย่อ (I) ของใบรับรอง
- ลูกค้ากรอกชื่อผู้ใช้ล่วงหน้า # กรอกชื่อผู้ใช้ไว้ล่วงหน้าในหน้าต่างการตรวจสอบสิทธิ์โดยไม่มีความสามารถในการเปลี่ยนแปลง
- ไคลเอนต์รองกรอกชื่อผู้ใช้ซ่อนการกดใช้รหัสผ่านทั่วไป # เราซ่อนหน้าต่างการเข้าสู่ระบบ/รหัสผ่านสำหรับการตรวจสอบสิทธิ์รอง DUO และใช้วิธีการแจ้งเตือน (sms/push/โทรศัพท์) - เชื่อมต่อเพื่อขอการตรวจสอบสิทธิ์แทนช่องรหัสผ่าน
ที่นี่
!
access-list posture-redirect extended permit tcp any host 72.163.1.80
access-list posture-redirect extended deny ip any any
!
access-list VPN-Filter extended permit ip any any
!
ip local pool vpn-pool 192.168.100.33-192.168.100.63 mask 255.255.255.224
!
group-policy SECURE-BANK-VPN internal
group-policy SECURE-BANK-VPN attributes
dns-server value 192.168.99.155 192.168.99.130
vpn-filter value VPN-Filter
vpn-tunnel-protocol ssl-client
split-tunnel-policy tunnelall
default-domain value ashes.cc
address-pools value vpn-pool
webvpn
anyconnect ssl dtls enable
anyconnect mtu 1300
anyconnect keep-installer installed
anyconnect ssl keepalive 20
anyconnect ssl rekey time none
anyconnect ssl rekey method ssl
anyconnect dpd-interval client 30
anyconnect dpd-interval gateway 30
anyconnect ssl compression lzs
anyconnect dtls compression lzs
anyconnect modules value iseposture
anyconnect profiles value SECUREBANK type user
!
group-policy AC-DOWNLOAD internal
group-policy AC-DOWNLOAD attributes
dns-server value 192.168.99.155 192.168.99.130
vpn-filter value VPN-Filter
vpn-tunnel-protocol ssl-client
split-tunnel-policy tunnelall
default-domain value ashes.cc
address-pools value vpn-pool
scep-forwarding-url value http://ise.ashes.cc:9090/auth/caservice/pkiclient.exe
webvpn
anyconnect ssl dtls enable
anyconnect mtu 1300
anyconnect keep-installer installed
anyconnect ssl keepalive 20
anyconnect ssl rekey time none
anyconnect ssl rekey method ssl
anyconnect dpd-interval client 30
anyconnect dpd-interval gateway 30
anyconnect ssl compression lzs
anyconnect dtls compression lzs
anyconnect modules value iseposture
anyconnect profiles value SECUREBANK type user
!
tunnel-group DefaultWEBVPNGroup general-attributes
address-pool vpn-pool
authentication-server-group ISE
accounting-server-group ISE
default-group-policy AC-DOWNLOAD
scep-enrollment enable
tunnel-group DefaultWEBVPNGroup webvpn-attributes
authentication aaa certificate
!
tunnel-group SECURE-BANK-VPN type remote-access
tunnel-group SECURE-BANK-VPN general-attributes
address-pool vpn-pool
authentication-server-group ISE
secondary-authentication-server-group DUO
accounting-server-group ISE
default-group-policy SECURE-BANK-VPN
username-from-certificate CN
secondary-username-from-certificate I
tunnel-group SECURE-BANK-VPN webvpn-attributes
authentication aaa certificate
pre-fill-username client
secondary-pre-fill-username client hide use-common-password push
group-alias SECURE-BANK-VPN enable
dns-group ASHES-DNS
!
ต่อไปเราจะไปที่ ISE:
เรากำหนดค่าผู้ใช้ภายในเครื่อง (คุณสามารถใช้ AD/LDAP/ODBC เป็นต้น) เพื่อความง่าย ฉันจึงสร้างผู้ใช้ภายในเครื่องใน ISE เองและมอบหมายให้ในภาคสนาม ลักษณะ UDID พีซี ซึ่งเขาได้รับอนุญาตให้เข้าสู่ระบบผ่าน VPN หากฉันใช้การรับรองความถูกต้องภายในเครื่องบน ISE ฉันจะถูกจำกัดให้ใช้เพียงอุปกรณ์เดียวเท่านั้น เนื่องจากมีฟิลด์ไม่มาก แต่ในฐานข้อมูลการรับรองความถูกต้องของบุคคลที่สาม ฉันจะไม่มีข้อ จำกัด ดังกล่าว
ลองดูที่นโยบายการอนุญาต ซึ่งจะแบ่งออกเป็นสี่ขั้นตอนการเชื่อมต่อ:
- ขั้นตอนที่ 1 — นโยบายสำหรับการดาวน์โหลดตัวแทน AnyConnect และการออกใบรับรอง
- ขั้นตอนที่ 2 — นโยบายการตรวจสอบสิทธิ์หลัก เข้าสู่ระบบ (จากใบรับรอง)/รหัสผ่าน + ใบรับรองพร้อมการตรวจสอบ UDID
- ขั้นตอนที่ 3 — การรับรองความถูกต้องรองผ่าน Cisco DUO (MFA) โดยใช้ UDID เป็นชื่อผู้ใช้ + การประเมินสถานะ
- ขั้นตอนที่ 4 — การอนุญาตขั้นสุดท้ายอยู่ในสถานะ:
- สอดคล้อง;
- การตรวจสอบ UDID (จากใบรับรอง + การผูกเข้าสู่ระบบ)
- ซิสโก้ DUO MFA;
- การรับรองความถูกต้องโดยการเข้าสู่ระบบ
- การรับรองความถูกต้องของใบรับรอง;
มาดูสภาพที่น่าสนใจกัน UUID_VALIDATEDดูเหมือนว่าผู้ใช้ที่ตรวจสอบสิทธิ์นั้นมาจากพีซีที่มี UDID ที่อนุญาตเชื่อมโยงอยู่ในฟิลด์ รายละเอียด บัญชี โดยมีเงื่อนไขดังนี้:
โปรไฟล์การอนุญาตที่ใช้ในขั้นตอนที่ 1,2,3 เป็นดังนี้:
คุณสามารถตรวจสอบได้อย่างแน่ชัดว่า UDID จากไคลเอนต์ AnyConnect มาถึงเราอย่างไร โดยดูรายละเอียดเซสชั่นไคลเอนต์ใน ISE ในรายละเอียดเราจะเห็นว่า AnyConnect ผ่านกลไก กรด ส่งไม่เพียงแต่ข้อมูลเกี่ยวกับแพลตฟอร์ม แต่ยังส่ง UDID ของอุปกรณ์ด้วย Cisco-AV-PAIR:
มาดูใบรับรองที่ออกให้กับผู้ใช้และฟิลด์กัน ชื่อย่อ (I)ซึ่งใช้เพื่อเข้าสู่ระบบสำหรับการตรวจสอบสิทธิ์ MFA รองบน Cisco DUO:
ในด้าน DUO Radius Proxy ในบันทึก เราจะเห็นได้ชัดเจนว่าคำขอการตรวจสอบสิทธิ์เกิดขึ้นได้อย่างไร โดยใช้ UDID เป็นชื่อผู้ใช้:
จากพอร์ทัล DUO เราเห็นเหตุการณ์การตรวจสอบสิทธิ์ที่ประสบความสำเร็จ:
และในคุณสมบัติผู้ใช้ฉันได้ตั้งค่าไว้ ALIASซึ่งฉันใช้สำหรับการเข้าสู่ระบบ ในทางกลับกัน นี่คือ UDID ของพีซีที่อนุญาตให้เข้าสู่ระบบ:
เป็นผลให้เราได้รับ:
- การรับรองความถูกต้องของผู้ใช้และอุปกรณ์แบบหลายปัจจัย
- การป้องกันการปลอมแปลงอุปกรณ์ของผู้ใช้
- การประเมินสภาพของอุปกรณ์
- ศักยภาพในการควบคุมที่เพิ่มขึ้นด้วยใบรับรองเครื่องโดเมน ฯลฯ
- การปกป้องสถานที่ทำงานระยะไกลที่ครอบคลุมด้วยโมดูลความปลอดภัยที่ติดตั้งโดยอัตโนมัติ
ลิงก์ไปยังบทความชุด Cisco VPN:
การปรับใช้คลัสเตอร์ ASA VPN Load-Balancing การเพิ่มประสิทธิภาพบริการคลาวด์ในอุโมงค์ AnyConnect VPN บน Cisco ASA
ที่มา: will.com