การใช้ Yubikey Neo สำหรับการเข้าสู่ระบบ 2FA และล็อคหน้าจอ


13

ฉันต้องการใช้ Yubikey Neo เพื่อเข้าสู่ระบบ Ubuntu 14.04 นอกจากนี้มันจะเป็นเรื่องง่ายหากหน้าจอถูกล็อคโดยอัตโนมัติทุกครั้งที่ฉันถอดปลั๊ก Yubikey

คำตอบ:


11

อันดับแรกเราต้องกำหนดค่า Yubikey สำหรับการตอบสนองต่อความท้าทาย Yubico ให้คู่มือที่ดีสำหรับ Linux ภายใต้ https://developers.yubico.com/yubico-pam/Authentication_Using_Challenge-Response.html

ตอนนี้คุณควรจะสามารถใช้ yubikey ของคุณสำหรับการรับรองความถูกต้องที่ล็อกอิน ชิ้นหนึ่งที่สะดวกหายไป: การล็อกหน้าจออัตโนมัติเมื่อถอด Yubikey ออก

ฉันปรับ HowTo จากฟอรัม Yubico เล็กน้อย ( http://forum.yubico.com/viewtopic.php?f=23&t=1143 ) เพื่อให้ตรงกับ LightDM ใน 14.04 และ Yubikey Neo

ก่อนอื่นให้สร้างไฟล์ใหม่ด้วยคำสั่งเพื่อล็อคหน้าจอเมื่อไม่มี Yubikey:

sudo nano /usr/local/bin/yubikey

เขียนสิ่งต่อไปนี้ลงในไฟล์:

#!/bin/bash 
# Double checking if the Yubikey is actually removed, Challenge-Response won't trigger the screensaver this way.

if [ -z "$(lsusb | grep Yubico)" ]; then
        logger "YubiKey Removed or Changed"
        # Running the LightDM lock command
        export XDG_SEAT_PATH="/org/freedesktop/DisplayManager/Seat0" 
        /usr/bin/dm-tool lock
fi

ความแตกต่างที่ใหญ่ที่สุดของไฟล์ต้นฉบับคือการใช้ dm-tool (สำหรับล็อคหน้าจอด้วย lightdm) และคำค้นหา Yubico เนื่องจาก Yubikey Neo ลงทะเบียนกับ„ Yubico.com“ ใน lsusb

ปิดและบันทึกไฟล์ นอกจากนี้เราต้องทำให้ไฟล์ที่ปฏิบัติการได้:

sudo chmod +x /usr/local/bin/yubikey

ต่อไปเราจะต้องค้นหาคุณสมบัติของ Yubikey สำหรับการมอบหมายที่เหมาะสม

สำหรับสิ่งนี้ตัวแสดงรายละเอียด USB จะต้องเปิดใช้งาน รายละเอียดสามารถพบได้ในฟอรั่ม Yubico

ในประเภทอาคารผู้โดยสารใหม่ในคำสั่ง

udevadm monitor --environment --udev

ตอนนี้คุณ (un-) เสียบ yubikey ของคุณและรับรายการรหัส กำลังมองหา

ID_VENDOR_ID
ID_MODEL_ID
ID_SERIAL_SHORT

พวกเขาจะถูกใช้ในไฟล์ udev สำหรับการรับรู้ของ Yubikey

คำแนะนำ:รหัสผู้ขายจะเปลี่ยนแปลงหากคุณกำหนดค่า Stick ใหม่ (เช่นใช้ CCID)

นอกจากนี้ให้สร้างไฟล์ด้วย

sudo nano /etc/udev/rules.d/85-yubikey.rules

และพิมพ์ดังต่อไปนี้

# Yubikey Udev Rule: running a bash script in case your Yubikey is removed 
ACTION=="remove", ENV{ID_VENDOR_ID}=="1050", ENV{ID_MODEL_ID}=="0010", ENV{ID_SERIAL_SHORT}=="0001711399", RUN+="/usr/local/bin/yubikey"

เปลี่ยน ID ตามคีย์ของคุณ หมายเหตุ: คุณสามารถเพิ่ม yubikey ได้มากขึ้นโดยการคัดลอกอย่างง่าย ๆ วางบรรทัดด้วยรหัสอื่น ๆ !

ปิดและบันทึกไฟล์ ในที่สุดบริการ udev จะต้องโหลดกฎ:

sudo udevadm control --reload-rules
sudo service udev reload

ฉันได้ลองสิ่งนี้เมื่อวันที่ 14.04 และไม่มีID_SERIAL_SHORTเลยฉันเลยข้ามไป
PawełPrażak

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

0

คุณสามารถเพิ่มการฆ่า TTY ทั้งหมดโดยใช้pkill -KILL -t:

if [ -z "$(lsusb | grep Yubico)" ]; then
    logger "YubiKey Removed or Changed"
    # Running the LightDM lock command
    export XDG_SEAT_PATH="/org/freedesktop/DisplayManager/Seat0" 
    /usr/bin/dm-tool lock

    ACTIVE_TTY=$(who | awk '{ print $2 }' | grep tty | uniq)
    echo $ACTIVE_TTY | xargs -I {} pkill -KILL -t {}
fi

นอกจากนี้ดูเหมือนว่าจะมีปัญหากับการอนุญาตจากไฟล์lightdmเพื่อแก้ไข:

sudo chown lightdm:root /etc/yubico/[user]-[number]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.