Yubikey के साथ SSH टू-फैक्टर ऑर्ट (2FA)


12

इसलिए मुझे यह थोड़ा छोटा लगा है और मैं ssh सत्र को प्रमाणित करते समय सुरक्षा की एक अतिरिक्त परत जोड़ना चाहता हूं। सर्वर साइड पर मैंने पहले ही पासवर्ड ऑथेंटिकेशन को डिसेबल कर दिया है और लॉग इन करते समय केवल ssh कीज़ के इस्तेमाल की अनुमति देता है।

समस्या यह है कि yubikey ऑर्ट के लिए sshd और PAM को कॉन्फ़िगर करने के बाद, sshd को अभी भी केवल ssh कुंजी की आवश्यकता है, मुझे yubikey से प्रतिक्रिया देने के लिए कभी नहीं कहा जाता है।

मुझे किस प्रकार और दोनों ssh कुंजी और एक yubikey की आवश्यकता है?

(ubuntu 14.04 - trusty)

/etc/pam.d/common-auth:

auth    required    pam_yubico.so mode=client try_first_pass id=<id> key=<secret>
auth    [success=1 default=ignore]  pam_unix.so nullok_secure try_first_pass
# here's the fallback if no module succeeds
auth    requisite           pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required            pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth    optional            pam_cap.so
# end of pam-auth-update config

/etc/ssh/sshd_config:

...

PasswordAuthentication no
ChallengeResponseAuthentication yes
UsePAM yes

BTW, अगर आपको एक दो दिनों में संतोषजनक जवाब नहीं मिलता है, तो मुझे पिंग करें और मैं प्रश्न पर एक स्वस्थ इनाम डालूंगा। मुझे जलाने के लिए रेप है, और मुझे इस जवाब में भी दिलचस्पी है। :)
EEAA

जवाबों:


4

ठीक है, मैंने इसे रखा और मुझे लगता है कि मैं एक उचित समाधान के साथ आया हूं। प्राथमिक चीज जो मुझे पहले याद आ रही थी, वह sshd की थी AuthenticationMethods publickey,password। यह एक पबलीके और पासवर्ड दोनों के लिए आवश्यकता को लागू करता है - "पासवर्ड" अब संभाला जा रहा है PAM->auth-yubi। अतिरिक्त परिवर्तन भी आवश्यक थे, नीचे देखें:

(ubuntu 14.04 - भरोसेमंद):

/etc/pam.d/yubi-auth

auth    required pam_yubico.so mode=client try_first_pass id=<id> key=<key>

नोट: आप अपनी एक्सेस आईडी और गुप्त कुंजी यहां प्राप्त कर सकते हैं

/etc/pam.d/sshd

# Standard Un*x authentication.
#@include common-auth

# Yubikey auth
@include yubi-auth

/ Etc / ssh / sshd_config

UsePAM yes
ChallengeResponseAuthentication no
AuthenticationMethods publickey,password
PasswordAuthentication yes

service ssh restart

सत्यापन

सार्वजनिक कुंजी के बिना एक दूरस्थ होस्ट से SSH

root@0a6442bcb21c:/# ssh ben@192.168.1.20
The authenticity of host '192.168.1.20 (192.168.1.20)' can't be established.
ECDSA key fingerprint is ea:2a:e3:98:35:72:66:b1:e0:65:6b:3f:60:8a:af:ab.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.20' (ECDSA) to the list of known hosts.
Permission denied (publickey).

एक सार्वजनिक कुंजी के साथ एक दूरस्थ होस्ट से SSH

$ ssh ben@192.168.1.20
Authenticated with partial success.
ben@192.168.1.20's password:
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-33-generic x86_64)

सुधार की

प्रमाणीकरण करते समय दूरस्थ ssh सर्वर से "पासवर्ड:" के बजाय "Yubikey Auth:" देखना अच्छा होगा।

क्या होता है जब ssh सर्वर yubico के सत्यापन प्रणाली से संपर्क करने में असमर्थ होता है? एक आदर्श समाधान पूरी तरह से आत्म-निहित होगा।

टिप्पणियाँ और सुझाव की सराहना की।


2

Yubikey के साथ 2FA स्थापित करना मुश्किल हो सकता है (सोचा कि U2F के लिए ओपनशैच पैच है ), लेकिन सबसे आसान तरीका शायद Yubico आधिकारिक वेबसाइट पर वर्णित है ।

यह मूल रूप से Yubikey पर आपकी निजी कुंजी को संग्रहीत करने और पिन के साथ इसे संरक्षित करने का तरीका है। यह वास्तव में आपके द्वारा वर्णित 2FA नहीं है (लेकिन यह कुछ ऐसा है जो आपके पास है और आप क्या जानते हैं ), लेकिन यह सुरक्षा को और भी अधिक बढ़ा देता है (कुछ असफल प्रयासों के बाद Yubikey ताले)।

टी एल: डॉ;

OPENSC_LIBS=`locate opensc-pkcs11.so`
yubico-piv-tool -s 9a -a generate -o public.pem
yubico-piv-tool -a verify-pin -P 123456 -a selfsign-certificate -s 9a \
  -S "/CN=SSH key/" -i public.pem -o cert.pem
yubico-piv-tool -a import-certificate -s 9a -i cert.pem
ssh-keygen -D $OPENSC_LIBS/opensc-pkcs11.so -e
ssh -I $OPENSC_LIBS/opensc-pkcs11.so user@remote.example.com

" मेरा मानना ​​है कि pam मॉड्यूल केवल स्थानीय Yubikeys को प्रमाणित करने में सक्षम है, न कि ssh के ऊपर " - मुझे पूरी तरह से यकीन नहीं है कि आप इसका क्या मतलब है। क्या आपका मतलब है कि एक Yubikey PAM के माध्यम से दूरस्थ ssh सर्वर को प्रमाणित करने के लिए इस्तेमाल नहीं किया जा सकता है?
MadHatter

हाँ। क्योंकि इसे य्यूबिकी के साथ संवाद करने के तरीके की आवश्यकता है और यह संभवतः कुछ स्थानीय पुस्तकालय का उपयोग करके किया जाता है। Ssh में इसके लिए कोई कोड नहीं है।
जकूज़ी

यह निश्चित रूप से गलत है। मैंने अपने दूरस्थ सर्वरों को मूल yubikey मोड और OATH मोड में yubikey- आधारित प्रमाणीकरण स्वीकार करने के लिए कॉन्फ़िगर किया है । एक yubikey का पूरा बिंदु एक-समय पासवर्ड के रूप में कार्य करने के लिए, संभावित-असुरक्षित चैनल पर संचारित करने के लिए एक छोटा (ish) स्ट्रिंग प्रदान करने के लिए है। यदि यूबीकाइ को भौतिक रूप से उस प्रणाली से जोड़ा जाना था जिसे वह प्रमाणित कर रहा था, तो यह बहुत कम उपयोगी होगा। मुझे लगता है कि आप पीकेसीएस मोड में यौबी लॉकिंग के बारे में गलत हैं, साथ ही साथ।
मदहटर्ट

ठीक है, आप सही हैं। ओटीपी मोड के लिए यह संभव है। लेकिन लॉकिंग PKCS11 मानक का हिस्सा है।
जकूज़ी

1
इसके लिए धन्यवाद - मुझे लगता है कि सुधारों के लिए आपका जवाब बहुत बेहतर है, और मेरे पतन को दूर करेगा।
MadHatter
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.