วิธีใช้ Google Authenticator กับเซิร์ฟเวอร์ OpenVPN บน Ubuntu 12.04


9

ฉันมีระบบ OpenVPN ที่ทำงานบน Ubuntu 12.04 และฉันต้องการเพิ่ม Google Authenticator เพื่อความปลอดภัยเป็นพิเศษ

นี่คือการกำหนดค่า openvpn ปัจจุบันของฉัน:

dev tun
proto udp
พอร์ต 1096
ca ubuserv04-ca.crt
ใบรับรอง ubuserv04.crt
คีย์ ubuserv04.key
dh dh1024.pem
เซิร์ฟเวอร์ 10.10.0.0 255.255.255.0
กด "redirect-gateway def1"
ผลักดัน "เส้นทาง 192.168.0.0 255.255.255.0"
ดัน "dhcp-option DNS 8.8.8.8"
ดัน "dhcp-option DNS 8.8.4.4"
ลอย
log-append /var/log/openvpn-otp-1096-status.log

(นี่เป็นเพียงการตั้งค่าการทดสอบฉันรู้ว่าฉันควรเปลี่ยนบางแง่มุมของมัน แต่ตอนนี้ใช้งานได้ตอนนี้)

เมื่อลูกค้ามี:

dev tun
ลูกค้า
proto udp
remote my.server.fqdn 1096
resolv-retry อนันต์
ca ubuserv04-ca.crt
ใบรับรอง user1.crt
กุญแจ user1.key
กริยา 3

การตั้งค่าด้านบนใช้งานได้ดี: ไม่มีข้อผิดพลาดรวดเร็วเสถียร

ฉันได้ลองใช้วิธีการหลายวิธีเพื่อให้ Google Authenticator ทำงานได้ แต่ฉันสิ้นสุดปัญหาด้านการแก้ไขปัญหาในบทความเหล่านั้นทุกครั้ง ฉันไม่ต้องการพิสูจน์ตัวตนกับฐานข้อมูลผู้ใช้ / รหัสผ่านของเซิร์ฟเวอร์เฉพาะระบบที่ฉันมีอยู่แล้วพร้อมกับ Google Authenticator

ฉันใช้ Google Authenticator ฉันติดตั้งโดยใช้ apt-get install libpam-google-authenticator และใช้ก่อนหน้านี้เพื่อตรวจสอบสิทธิ์เซสชัน ssh ใช้งานได้ดี แต่ตอนนี้ฉันปิดใช้งานเนื่องจากเป็นเพียงเซิร์ฟเวอร์ทดสอบและการทดสอบนั้นเสร็จสิ้นแล้ว

กรุณาระบุ ฉันรู้ว่าฉันควรเพิ่มปลั๊กอินลงใน ovpn ของเซิร์ฟเวอร์ของฉันและฉันควรเพิ่มบางอย่างใน/etc/pam.d/openvpn แต่นั่นคืออะไร

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!

/ ข้อมูลเพิ่มเติม

ฉันได้ติดตามบทความนี้: http://www.howtoforge.com/securing-openvpn-with-a-one-time-password-otp-on-ubuntu แทนที่จะรวบรวมจากแหล่งที่ฉันติดตั้ง Google Authenticator ด้วยฉลาด - รับติดตั้ง libpam-google-authenticator ฉันยังอ่าน แต่ไม่ได้ใช้ในกรณีนี้บทความเหล่านี้: http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/และhttp : และฉันได้อ่าน PAM ตามที่แนะนำแล้ว)

ตอนนี้ที่นี่มีการพัฒนาที่น่าสนใจ

/etc/pam.d/openvpn มีสิ่งนี้:

บัญชี [สำเร็จ = 2 new_authtok_reqd = ทำเริ่มต้น = ละเว้น] pam_unix.so 
บัญชี [สำเร็จ = 1 new_authtok_reqd = ทำเริ่มต้น = ละเว้น] pam_winbind.so 
บัญชีจำเป็นต้องมี pam_deny.so
ต้องมีบัญชี pam_permit.so
รับรองความถูกต้องต้องใช้ pam_google_authenticator.so

ตามวิธีที่ฉันคัดลอกต้นฉบับจาก /etc/pam.d/common-account และเพิ่มบรรทัดสุดท้าย ตอนนี้ถ้าฉันคอมเม้นท์บรรทัดสุดท้ายการเชื่อมต่อ OpenVPN สำเร็จ หากบรรทัดสุดท้ายยังไม่ได้ใส่ความคิดเห็นออกไป /var/log/auth.log จะบันทึกสิ่งนี้:

PAM ไม่สามารถ dlopen (pam_google_authenticator.so): /lib/security/pam_google_authenticator.so: สัญลักษณ์ที่ไม่ได้กำหนด: pam_get_item
PAM เพิ่มโมดูลที่ผิดพลาด: pam_google_authenticator.so

และ /var/log/openvpn-otp-1096.log บันทึกสิ่งนี้:

PLUGIN_CALL: ฟังก์ชันปลั๊กอิน PLUGIN_AUTH_USER_PASS_VERIFY ล้มเหลวด้วยสถานะ 1: /usr/lib/openvpn/openvpn-auth-pam.so
ข้อผิดพลาด TLS Auth: การตรวจสอบชื่อผู้ใช้ / รหัสผ่านรับรองความถูกต้องล้มเหลวสำหรับเพียร์
บริบท e-using SSL / TLS
AUTH-PAM: พื้นหลัง: ผู้ใช้ 'มาร์ติน' ล้มเหลวในการตรวจสอบ: โมดูลไม่เป็นที่รู้จัก

ดูเหมือนว่าปัญหาระหว่าง PAM กับ Google Authenticator

Google แสดงปัญหาเกี่ยวกับปลั๊กอินอื่น ๆ แต่ฉันไม่พบข้อมูลเกี่ยวกับ Google Authenticator โดยเฉพาะ


"ฉันลองใช้ howtos หลายวิธีเพื่อให้ Google Authenticator ทำงาน"คุณสามารถลิงก์ไปยังบางส่วนได้หรือไม่? มันค่อนข้างคลุมเครือในสิ่งที่คุณได้ลองมาแล้วและมันจะน่าเศร้าถ้าผู้ใช้รายอื่นมาหาวิธีที่คุณได้ลองไปแล้ว ยังlibpam-google-authenticatorไงก็ตามสำหรับการตรวจสอบโดยใช้ Google Authenticator ใน PAM สิ่งนี้ไม่มีประโยชน์ใน OpenVPN เนื่องจากคุณใช้ใบรับรองอยู่ที่นั่น ฉันแนะนำให้คุณอ่านว่า PAM คืออะไร - คุณจะเข้าใจว่ามันไม่มีส่วนเกี่ยวข้องกับ OpenVPN ในกรณีของคุณ
gertvdijk

@ "นี่ไม่มีประโยชน์ใน OpenVPN เนื่องจากคุณใช้ใบรับรองอยู่ที่นั่น" ไม่เป็นไร. คุณสามารถใช้ใบรับรองและรหัสผ่านครั้งเดียวจาก Google Authenticator ผ่าน PAM เป็นปัจจัยที่สองสำหรับการรับรองความถูกต้องใน OpenVPN
เทอร์มินัล Damn

การเพิ่มข้อมูลพิเศษให้กับคำถามเดิม ไม่แน่ใจว่าฉันทำสิ่งนี้ถูกต้องหรือไม่ ...
Forkbeard

@ gertvdijk: ฉันเข้าใจว่ามันซ้ำซ้อน แต่ฉันต้องการใช้ทั้งใบรับรองและรหัสผ่านครั้งเดียว ดูเหมือนว่าปลอดภัยกว่าสำหรับฉันแล้วใช้วิธีใดวิธีหนึ่งเป็นรายบุคคล
Forkbeard

หืมดูเหมือนว่าจะเป็นข้อบกพร่องใน Google Authenticator การสร้างด้วย LDFLAGS = "- lpam" น่าจะช่วยได้ แต่ฉันไม่แน่ใจว่าจะทำอย่างไรตัวอย่างบน Howtoforge (ลิงก์ในคำถามเดิม) ไม่ทำงาน url ส่งคืน 404
Forkbeard

คำตอบ:


2

ตกลง Google เป็นเพื่อนของฉัน

ฉันทำอย่างนี้:

# apt-get purge libpam-google-authenticator
# download https://code.google.com/p/google-authenticator/downloads/list
# apt-get install libpam-dev

เพิ่มไปยัง Makefile หลังจากสิทธิ์ใช้งาน:

เหมาะสม ldflags = "- LpAm"

แล้วก็

# ทำ
# ทำให้การติดตั้ง
# บริการ openvpn รีสตาร์ท

นอกจากนี้ตรวจสอบให้แน่ใจว่า /home/username/.google_authenticator ไม่มีสิทธิ์ยกเว้นการอ่านสิทธิ์สำหรับผู้ใช้ที่จะใช้

ตอนนี้ฉันต้องป้อนชื่อผู้ใช้ของฉันนั่นคือชื่อผู้ใช้ท้องถิ่นของฉันบนเซิร์ฟเวอร์ (บัญชีเชลล์ของฉัน) เป็นชื่อผู้ใช้ OpenVPN ของฉันและรหัส 6 หลักของ Google Authenticator เป็นรหัสผ่าน

ตอนนี้มันใช้งานได้

ขอบคุณสำหรับเวลาของคุณ :)

(ฉันจะทำเครื่องหมายโพสต์นี้ว่าแก้ไขได้อย่างไรฉันเพิ่งแก้ไขชื่อหัวข้อ)


2

หากคุณต้องการให้ OTP รับรองความถูกต้องสำหรับ OpenVPN จะมีปลั๊กอิน OTP OpenVPN ดั้งเดิม มันเข้ากันได้กับคีย์ลับของ Google Authenticator ความลับทั้งหมดจะถูกเก็บไว้ในไฟล์ข้อความเดียวและไม่จำเป็นต้องกำหนดค่า PAM หรือสร้างไดเรกทอรีผู้ใช้

ลองดู: https://github.com/evgeny-gridasov/openvpn-otp


ขอบคุณสำหรับการตอบกลับของคุณ egridasov เนื่องจากฉันมีการตั้งค่าที่ใช้งานได้ในตอนนี้ฉันจะไม่ลอง แต่ฉันอาจจะลองใช้กับระบบอื่น Reneg-sec 0 บิตฉันพบว่ามีประโยชน์อย่างยิ่งฉันทำผิดต่อหัวเกี่ยวกับวิธีการเชื่อมต่อเพื่อไม่ให้ตกหลังจาก 3600 วินาที
Forkbeard
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.