एकल DNS नाम के पीछे कई होस्ट के लिए SSH कुंजी सत्यापन


4

(ध्यान दें: यह एक मौजूदा प्रश्न के समान लगता है , लेकिन मेरा मानना ​​है कि कार्यान्वयन विवरण में कुछ अंतर हैं)

समस्या

मुझे एकल DNS पते के पीछे कुछ सौ होस्ट मिले हैं। प्रत्येक होस्ट की अपनी अलग होस्ट कुंजी होती है (और मैं इसे बदल नहीं सकता - यह विक्रेता द्वारा निर्धारित किया गया है और इसे संशोधित नहीं किया जाना चाहिए)।

जब मैं दूसरी बार एकल नाम के माध्यम से किसी भी मेजबान से जुड़ने की कोशिश करता हूं, तो यह sshबहुत परेशान करता है:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The DSA host key for (hostname) has changed,
and the key for the corresponding IP address 192.168.0.100
is unknown. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the DSA key sent by the remote host is
SHA256:+38sJSsANknk6vVIHJ/l/xnPCl+ALCNrbi80vrr24cM.
Please contact your system administrator.
Add correct host key in /Users/me/.ssh/known_hosts to get rid of this message.
Offending DSA key in /Users/me/.ssh/known_hosts:291
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
X11 forwarding is disabled to avoid man-in-the-middle attacks.
Permission denied (publickey,password,keyboard-interactive).

कठिनाई

  • मैं सभी होस्ट कुंजियों को एक ही चीज़ पर सेट नहीं कर सकता।
  • एक एकल आईपी पते से कनेक्ट करना एक अच्छा समाधान नहीं है, क्योंकि यह वास्तविक "राउंड रॉबिन" नहीं है, बल्कि हार्डवेयर द्वारा प्रदान की गई एक DNS सेवा है जो कम से कम व्यस्त सर्वर से कनेक्शन को रूट करती है।
  • मेरे उपयोगकर्ता, साथ ही कुछ स्वचालित प्रक्रियाएँ, एकल DNS नाम को हिट करने में सक्षम होनी चाहिए।

प्रश्न

इस वातावरण के लिए SSH को सुरक्षित रूप से उपयोग करने के लिए सबसे अच्छा अभ्यास क्या होगा (अर्थात, जितना संभव हो उतना सत्यापन बरकरार है)?

मैं सुरक्षा कारणों से कुंजी सत्यापन को अक्षम नहीं करना चाहता, और एकल IP पते से कनेक्ट करने का स्पष्ट तरीका विक्रेता के DNS कार्यान्वयन द्वारा प्रदान किए गए लोड संतुलन को दरकिनार कर देता है।


क्या आपने इस होस्टनाम से कनेक्शन के GlobalKnownHostsFileलिए उपयोग करने ssh-keyscanऔर अक्षम करने के UserKnownHostsFileलिए केवल आईपी पते के साथ बनाने पर विचार किया था ? मैंने इसे आज़माया नहीं, लेकिन इसे IP से संतुष्ट होना चाहिए और अगर यह hostname के साथ ज्ञात_होस्ट रिकॉर्ड नहीं लिख पाएगा, तो आप अच्छे हैं, है ना?
जकूजी

ए-हा! मुझे यह भी नहीं पता था कि ssh-keyscanअस्तित्व में है। मैनपेज पर एक त्वरित नज़र आता है जैसे कि यह वही है जिसकी मुझे ज़रूरत है - मैं चाबियों को इकट्ठा कर सकता हूं और परिणामस्वरूप होस्ट किए गए फ़ाइल को उन उपयोगकर्ताओं और सर्वरों को वितरित कर सकता हूं जिन्हें इसकी आवश्यकता है। यदि आप इसका उत्तर देंगे, तो मैं इसे स्वीकार करूँगा।
मिकी टीके

जवाबों:


3

आप known_hostsअपने सभी आईपी के उपयोग के लिए प्री-जेनरेट कर सकते हैं ssh-keyscan। फिर इसे यूजर्स सिस्टम पर GlobalKnownHostsFile(आसानी से) और उस विशिष्ट hostnameडिसेबल UserKnownHostsFile(सेट टू /dev/null) के रूप में सेट करें ।

मैंने इसकी कोशिश नहीं की, लेकिन इसे आईपी से संतुष्ट होना चाहिए और अगर यह known_hostsरिकॉर्ड नहीं बना पाएगा hostname

उदाहरण ग्राहक /etc/ssh/ssh_config(वितरित करने के लिए भी अच्छा):

[...] # other stuff
Host dns_hostname
  GlobalKnownHostsFile /etc/ssh/known_hosts
  UserKnownHostsFile /dev/null
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.