ไปที่ 2FA (การตรวจสอบสิทธิ์แบบสองปัจจัยสำหรับ ASA SSL VPN)

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

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

บริษัทของฉันก็ไม่มีข้อยกเว้น และเราก็เหมือนกับคนอื่นๆ อีกหลายคนที่ใช้เทคโนโลยีนี้ และเช่นเดียวกับคนอื่นๆ เราใช้ Cisco ASA 55xx เป็นเกตเวย์การเข้าถึงระยะไกล

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

สำหรับตัวเราเอง เราพบวิธีแก้ปัญหาในการใช้การตรวจสอบสิทธิ์แบบสองปัจจัยสำหรับการเชื่อมต่อผ่าน Cisco SSL VPN โดยใช้รหัสผ่านแบบใช้ครั้งเดียว และเอกสารฉบับนี้จะบอกวิธีจัดระเบียบโซลูชันดังกล่าวโดยใช้เวลาน้อยที่สุดและไม่มีค่าใช้จ่ายสำหรับซอฟต์แวร์ที่จำเป็น (โดยที่คุณมี Cisco ASA ในโครงสร้างพื้นฐานของคุณอยู่แล้ว)

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

ดังนั้นเราต้องการ:

- อิมเมจ Linux พร้อมชุดเครื่องมือในตัว - multiOTP, FreeRADIUS และ nginx สำหรับการเข้าถึงเซิร์ฟเวอร์ผ่านทางเว็บ (http://download.multiotp.net/ - ฉันใช้อิมเมจสำเร็จรูปสำหรับ VMware)
— เซิร์ฟเวอร์ไดเรกทอรีที่ใช้งานอยู่
— Cisco ASA เอง (เพื่อความสะดวกฉันใช้ ASDM)
— โทเค็นซอฟต์แวร์ใด ๆ ที่รองรับกลไก TOTP (เช่นฉันใช้ Google Authenticator แต่ FreeOTP เดียวกันจะทำได้)

ฉันจะไม่ลงรายละเอียดว่าภาพจะเผยออกมาอย่างไร ด้วยเหตุนี้ คุณจะได้รับ Debian Linux ที่ติดตั้ง multiOTP และ FreeRADIUS ไว้แล้ว กำหนดค่าให้ทำงานร่วมกัน และเว็บอินเทอร์เฟซสำหรับการดูแลระบบ OTP

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

มาสร้างผู้ใช้ใน Active Directory กัน OTPด้วยรหัสผ่าน MySuperPassword.

ขั้นตอนที่ 2 ตั้งค่าการเชื่อมต่อและนำเข้าผู้ใช้ Active Directory
ในการดำเนินการนี้ เราจำเป็นต้องเข้าถึงคอนโซลและเข้าถึงไฟล์โดยตรง multiotp.phpซึ่งเราจะกำหนดการตั้งค่าการเชื่อมต่อกับ Active Directory

ไปที่ไดเรกทอรี /usr/local/bin/multiotp/ และดำเนินการคำสั่งต่อไปนี้ตามลำดับ:

./multiotp.php -config default-request-prefix-pin=0

กำหนดว่าจำเป็นต้องใช้พินเพิ่มเติม (ถาวร) เมื่อป้อนพินครั้งเดียว (0 หรือ 1)

./multiotp.php -config default-request-ldap-pwd=0

กำหนดว่าต้องใช้รหัสผ่านโดเมนเมื่อป้อน PIN แบบครั้งเดียว (0 หรือ 1)

./multiotp.php -config ldap-server-type=1

ระบุประเภทของเซิร์ฟเวอร์ LDAP (0 = เซิร์ฟเวอร์ LDAP ปกติ ในกรณีของเรา 1 = Active Directory)

./multiotp.php -config ldap-cn-identifier="sAMAccountName"

ระบุรูปแบบที่จะแสดงชื่อผู้ใช้ (ค่านี้จะแสดงเฉพาะชื่อ โดยไม่มีโดเมน)

./multiotp.php -config ldap-group-cn-identifier="sAMAccountName"

สิ่งเดียวกันสำหรับกลุ่มเท่านั้น

./multiotp.php -config ldap-group-attribute="memberOf"

ระบุวิธีการพิจารณาว่าผู้ใช้อยู่ในกลุ่มหรือไม่

./multiotp.php -config ldap-ssl=1

ฉันควรใช้การเชื่อมต่อที่ปลอดภัยกับเซิร์ฟเวอร์ LDAP หรือไม่ (แน่นอน - ใช่!)

./multiotp.php -config ldap-port=636

พอร์ตสำหรับเชื่อมต่อกับเซิร์ฟเวอร์ LDAP

./multiotp.php -config ldap-domain-controllers=adSRV.domain.local

ที่อยู่เซิร์ฟเวอร์ Active Directory ของคุณ

./multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"

เราระบุตำแหน่งที่จะเริ่มค้นหาผู้ใช้ในโดเมน

./multiotp.php -config ldap-bind-dn="[email protected]"

ระบุผู้ใช้ที่มีสิทธิ์ในการค้นหาใน Active Directory

./multiotp.php -config ldap-server-password="MySuperPassword"

ระบุรหัสผ่านผู้ใช้เพื่อเชื่อมต่อกับ Active Directory

./multiotp.php -config ldap-network-timeout=10

การตั้งค่าการหมดเวลาสำหรับการเชื่อมต่อกับ Active Directory

./multiotp.php -config ldap-time-limit=30

เรากำหนดเวลาสำหรับการดำเนินการนำเข้าผู้ใช้

./multiotp.php -config ldap-activated=1

การเปิดใช้งานการกำหนดค่าการเชื่อมต่อ Active Directory

./multiotp.php -debug -display-log -ldap-users-sync

เรานำเข้าผู้ใช้จาก Active Directory

ขั้นตอนที่ 3 สร้างรหัส QR สำหรับโทเค็น
ทุกสิ่งที่นี่เรียบง่ายมาก เปิดเว็บอินเตอร์เฟสของเซิร์ฟเวอร์ OTP ในเบราว์เซอร์ เข้าสู่ระบบ (อย่าลืมเปลี่ยนรหัสผ่านเริ่มต้นสำหรับผู้ดูแลระบบ!) และคลิกที่ปุ่ม "พิมพ์":

ไปที่ 2FA (การตรวจสอบสิทธิ์แบบสองปัจจัยสำหรับ ASA SSL VPN)
ผลลัพธ์ของการกระทำนี้จะเป็นหน้าเว็บที่มีรหัส QR สองรหัส เราเพิกเฉยต่ออันแรกอย่างกล้าหาญ (แม้จะมีคำจารึกที่น่าสนใจ Google Authenticator / Authenticator / 2 Steps Authenticator) และอีกครั้งที่เราสแกนโค้ดที่สองอย่างกล้าหาญลงในโทเค็นซอฟต์แวร์บนโทรศัพท์:

ไปที่ 2FA (การตรวจสอบสิทธิ์แบบสองปัจจัยสำหรับ ASA SSL VPN)
(ใช่ ฉันจงใจทำให้โค้ด QR เสียหายจนอ่านไม่ออก)

หลังจากเสร็จสิ้นการดำเนินการเหล่านี้ รหัสผ่านหกหลักจะถูกสร้างขึ้นในใบสมัครของคุณทุกๆ สามสิบวินาที

เพื่อให้แน่ใจ คุณสามารถตรวจสอบได้ในอินเทอร์เฟซเดียวกัน:

ไปที่ 2FA (การตรวจสอบสิทธิ์แบบสองปัจจัยสำหรับ ASA SSL VPN)
โดยป้อนชื่อผู้ใช้และรหัสผ่านแบบใช้ครั้งเดียวจากแอปพลิเคชันบนโทรศัพท์ของคุณ คุณได้รับการตอบรับเชิงบวกหรือไม่? ดังนั้นเราจึงเดินหน้าต่อไป

ขั้นตอนที่ 4 การกำหนดค่าเพิ่มเติมและการทดสอบการทำงานของ FreeRADIUS
ตามที่ฉันได้กล่าวไว้ข้างต้น multiOTP ได้รับการกำหนดค่าให้ทำงานกับ FreeRADIUS แล้ว สิ่งที่เหลืออยู่คือทำการทดสอบและเพิ่มข้อมูลเกี่ยวกับเกตเวย์ VPN ของเราไปยังไฟล์กำหนดค่า FreeRADIUS

เรากลับไปที่คอนโซลเซิร์ฟเวอร์ไปยังไดเร็กทอรี /usr/local/bin/multiotp/, เข้า:

./multiotp.php -config debug=1
./multiotp.php -config display-log=1

รวมถึงการบันทึกรายละเอียดเพิ่มเติม

ในไฟล์กำหนดค่าไคลเอนต์ FreeRADIUS (/etc/freeradius/clinets.conf) แสดงความคิดเห็นทุกบรรทัดที่เกี่ยวข้องกับ localhost และเพิ่มสองรายการ:

client localhost {
        ipaddr = 127.0.0.1
        secret          = testing321
        require_message_authenticator = no
}

- สำหรับการทดสอบ

client 192.168.1.254/32 {
        shortname =     CiscoASA
        secret =        ConnectToRADIUSSecret
}

— สำหรับเกตเวย์ VPN ของเรา

รีสตาร์ท FreeRADIUS และลองเข้าสู่ระบบ:

radtest username 100110 localhost 1812 testing321

ที่ไหน ชื่อผู้ใช้ = ชื่อผู้ใช้, 100110 = รหัสผ่านที่แอปพลิเคชันบนโทรศัพท์มอบให้เรา localhost = ที่อยู่เซิร์ฟเวอร์ RADIUS 1812 — พอร์ตเซิร์ฟเวอร์ RADIUS testing321 — รหัสผ่านไคลเอนต์เซิร์ฟเวอร์ RADIUS (ซึ่งเราระบุไว้ในการกำหนดค่า)

ผลลัพธ์ของคำสั่งนี้จะถูกส่งออกโดยประมาณดังนี้:

Sending Access-Request of id 44 to 127.0.0.1 port 1812
        User-Name = "username"
        User-Password = "100110"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=44, length=20

ตอนนี้เราต้องตรวจสอบให้แน่ใจว่าผู้ใช้ได้รับการรับรองความถูกต้องเรียบร้อยแล้ว ในการดำเนินการนี้ เราจะดูที่บันทึกของ multiotp เอง:

tail /var/log/multiotp/multiotp.log

และหากรายการสุดท้ายมี:

2016-09-01 08:58:17     notice  username  User    OK: User username successfully logged in from 127.0.0.1
2016-09-01 08:58:17     debug           Debug   Debug: 0 OK: Token accepted from 127.0.0.1

จากนั้นทุกอย่างก็เป็นไปด้วยดีและเราก็สามารถทำมันให้สำเร็จได้

ขั้นตอนที่ 5: กำหนดค่า Cisco ASA
ยอมรับว่าเรามีกลุ่มและนโยบายที่กำหนดค่าไว้สำหรับการเข้าถึงผ่าน SLL VPN ซึ่งกำหนดค่าร่วมกับ Active Directory และเราจำเป็นต้องเพิ่มการตรวจสอบสิทธิ์แบบสองปัจจัยสำหรับโปรไฟล์นี้

1. เพิ่มกลุ่มเซิร์ฟเวอร์ AAA ใหม่:

ไปที่ 2FA (การตรวจสอบสิทธิ์แบบสองปัจจัยสำหรับ ASA SSL VPN)
2. เพิ่มเซิร์ฟเวอร์ multiOTP ของเราในกลุ่ม:

ไปที่ 2FA (การตรวจสอบสิทธิ์แบบสองปัจจัยสำหรับ ASA SSL VPN)
3. เราแก้ไข โปรไฟล์การเชื่อมต่อโดยตั้งค่ากลุ่มเซิร์ฟเวอร์ Active Directory เป็นเซิร์ฟเวอร์การตรวจสอบความถูกต้องหลัก:

ไปที่ 2FA (การตรวจสอบสิทธิ์แบบสองปัจจัยสำหรับ ASA SSL VPN)
4. ในแท็บ ขั้นสูง -> การรับรองความถูกต้อง เรายังเลือกกลุ่มเซิร์ฟเวอร์ Active Directory:

ไปที่ 2FA (การตรวจสอบสิทธิ์แบบสองปัจจัยสำหรับ ASA SSL VPN)
5. ในแท็บ ขั้นสูง -> รอง การรับรองความถูกต้อง ให้เลือกกลุ่มเซิร์ฟเวอร์ที่สร้างขึ้นซึ่งมีการลงทะเบียนเซิร์ฟเวอร์ multiOTP โปรดทราบว่าชื่อผู้ใช้ของเซสชันนั้นสืบทอดมาจากกลุ่มเซิร์ฟเวอร์ AAA หลัก:

ไปที่ 2FA (การตรวจสอบสิทธิ์แบบสองปัจจัยสำหรับ ASA SSL VPN)
ใช้การตั้งค่าและ

ขั้นตอนที่ 6 หรือที่รู้จักในชื่อขั้นตอนสุดท้าย
ตรวจสอบว่าการตรวจสอบสิทธิ์แบบสองปัจจัยใช้ได้กับ SLL VPN หรือไม่:

ไปที่ 2FA (การตรวจสอบสิทธิ์แบบสองปัจจัยสำหรับ ASA SSL VPN)
เอาล่ะ! เมื่อเชื่อมต่อผ่าน Cisco AnyConnect VPN Client คุณจะถูกถามถึงรหัสผ่านที่สองแบบครั้งเดียวด้วย

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

ที่มา: will.com

เพิ่มความคิดเห็น