নিরাপদে একটি হোস্ট (উদাহরণস্বরূপ গিটহাব) যুক্ত করুন এসএসএইচ পরিচিত_হেষ্ট ফাইলটিতে


20

আমি কীভাবে known_hostsনিরাপদে এসএসএইচ ফাইলটিতে একটি হোস্ট কী যুক্ত করতে পারি ?

আমি একটি ডেভলপমেন্ট মেশিন স্থাপন করছি, এবং আমি (উদাহরণস্বরূপ) এসএসএইচ ব্যবহার gitথেকে কোনও সংগ্রহস্থল ক্লোন করার সময় অনুরোধ করা থেকে বিরত রাখতে চাই github.com

আমি জানি যে আমি ব্যবহার করতে পারি StrictHostKeyChecking=no(উদাঃ এই উত্তর ), তবে এটি নিরাপদ নয়।

এখন পর্যন্ত, আমি খুঁজে পেয়েছি ...

  1. গিটহাব তাদের এসএসএইচ কী আঙ্গুলের ছাপগুলি https://help.github.com/articles/github-s-ssh-key-fingerprints/ এ প্রকাশ করে

  2. আমি ssh-keyscanহোস্ট কী পেতে ব্যবহার করতে পারি github.com

আমি কীভাবে এই সত্যগুলিকে একত্রিত করব? ফিঙ্গারপ্রিন্টগুলির একটি প্রাক-প্রস্তাবিত তালিকা দেওয়া, আমি কীভাবে যাচাই করব যে ফাইলটিতে আউটপুট ssh-keyscanযুক্ত করা যায় known_hosts?


আমার ধারণা আমি নিম্নলিখিতগুলি জিজ্ঞাসা করছি:

কীভাবে ফিরে আসা কীটির জন্য আমি ফিঙ্গারপ্রিন্ট পেতে পারি ssh-keyscan?

আসুন ধরে নেওয়া যাক আমি এসএসএইচের জন্য এমআইটিএম-এড হয়ে গিয়েছি , তবে আমি গিটহাব এইচটিটিপিএস পৃষ্ঠায় বিশ্বাস করতে পারি (কারণ এটির একটি বৈধ শংসাপত্র শৃঙ্খলা রয়েছে)।

তার মানে আমি কিছু (সন্দেহভাজন) এসএসএইচ হোস্ট কী (থেকে ssh-keyscan) এবং কিছু (বিশ্বস্ত) কী ফিঙ্গারপ্রিন্ট পেয়েছি । আমি কীভাবে অন্যটির বিপরীতে একটি যাচাই করব?


সম্পর্কিত: আমি কীভাবে আউটপুটটির হোস্ট অংশটি হ্যাশ করব ssh-keyscan? অথবা আমি হ্যাশ / অপরিশোধিত হোস্টগুলিকে মিশ্রিত করতে পারি known_hosts?


কেন এটি আপনার ব্যবহারের ক্ষেত্রে সুরক্ষিত হবে না?
চতুর্দিকে

StrictHostKeyChecking=noএমআইটিএমের পক্ষে ঝুঁকিপূর্ণ। কি ssh-keyscanনিরাপদ বিরুদ্ধে MITM?
রজার লিপসক্বে

আমি কেন বুঝতে পারি না যে আমি কেন একজন অপরিচিত ব্যক্তির নকল করছি সম্পর্কে আমি অতিরিক্ত চিন্তিত ছিলাম যার সাথে আমি কখনও সাক্ষাত করতে পারি না আমি কোড লিখতে যথেষ্ট বিশ্বাস করছি যে আমি ডাউনলোড এবং চালাচ্ছি ...
চতুর্মুখী

1
কারণ এটি গিথুবের একটি প্রাইভেট রেপোতে আমার উত্স কোড এবং আমি কোনও এমআইটিএম (উদাহরণস্বরূপ) চাই না যখন আমি প্রতিশ্রুতি দেয় তখন দূষিত পরিবর্তনগুলি প্রবর্তন করি। এটি কেবল একটি উদাহরণ।
রজার লিপসক্বে

আমি (আরও ভাল বা খারাপের জন্য) গিথুবকে আস্থা রাখতে বেছে নিই। আমি আমার এবং তাদের মধ্যে প্রতিটি এলোমেলো নেটওয়ার্ক লিঙ্ককে বিশ্বাস করতে পছন্দ করি না।
রজার লিপসক্বে

উত্তর:


12

"নিরাপদে" known_hostsফাইলটিতে একটি কী যুক্ত করার সবচেয়ে গুরুত্বপূর্ণ অংশটি হ'ল সার্ভার প্রশাসকের কাছ থেকে কী ফিঙ্গারপ্রিন্ট পাওয়া। মূল ফিঙ্গারপ্রিন্টটি দেখতে এমন কিছু দেখতে হবে:

2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA)

গিটহাবের ক্ষেত্রে, সাধারণত আমরা সরাসরি প্রশাসকের সাথে কথা বলতে পারি না। তবে, তারা তাদের ওয়েব পৃষ্ঠাগুলিতে কীটি রেখেছিল যাতে আমরা সেখান থেকে তথ্য পুনরুদ্ধার করতে পারি।

ম্যানুয়াল কী ইনস্টলেশন

1) সার্ভার থেকে কীটির একটি অনুলিপি নিন এবং এর ফিঙ্গারপ্রিন্ট পান। নোট: ফিঙ্গারপ্রিন্ট যাচাই করার আগে এটি করুন।

$ ssh-keyscan -t rsa github.com | tee github-key-temp | ssh-keygen -lf -
# github.com:22 SSH-2.0-babeld-f3847d63
2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA)

2) সার্ভার প্রশাসকের কাছ থেকে কী ফিঙ্গারপ্রিন্টের একটি অনুলিপি পান - এই ক্ষেত্রে github.com- এ তথ্য সহ পৃষ্ঠাটিতে নেভিগেট করুন

  1. Github.com এ যান
  2. সহায়তা পৃষ্ঠাতে যান (লগ ইন থাকলে ডানদিকে মেনুতে; অন্যথায় হোমপেজের নীচে)
  3. ইন শুরু করা বিভাগে যান SSH সহযোগে GitHub এর সাথে সংযুক্ত হচ্ছে
  4. আপনার এসএসএইচ সংযোগ পরীক্ষা করতে যান
  5. পরে ব্যবহারের জন্য আপনার পাঠ্য সম্পাদকটিতে সেই পৃষ্ঠা থেকে SHA256 আঙুলের ছাপটি অনুলিপি করুন।

3) দুটি উত্স থেকে চাবি তুলনা করুন

এগুলি সরাসরি একটি টেক্সট সম্পাদকে একে অপরের উপরে রেখে, সহজেই কিছু পরিবর্তন হয়েছে কিনা তা সহজেই দেখা যায়

2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA) #key recovered from github website
2048 SHA256:nThbg6kXUpJ3Gl7E1InsaspRomtxdcArLviKaEsTGY8 github.com (RSA) #key recovered with keyscan

(নোট করুন যে দ্বিতীয় কীটি ম্যানিপুলেটেড করা হয়েছে তবে এটি মূলটির সাথে অনেকটা সাদৃশ্য দেখাচ্ছে - যদি এরকম কিছু ঘটে তবে আপনি গুরুতর আক্রমণে আক্রান্ত হয়েছেন এবং কোনও বিশ্বস্ত সুরক্ষা বিশেষজ্ঞের সাথে যোগাযোগ করা উচিত))

কীগুলি পৃথক হলে পদ্ধতিটি বাতিল করে দেওয়া এবং কোনও সুরক্ষা বিশেষজ্ঞের সাথে যোগাযোগ করা

৪) কীগুলি যদি সঠিকভাবে তুলনা করে তবে আপনার ইতিমধ্যে ডাউনলোড করা কীটি ইনস্টল করা উচিত

cat github-key-temp >> ~/.ssh/known_hosts

অথবা সিস্টেমে সমস্ত ব্যবহারকারীর জন্য ইনস্টল করতে (রুট হিসাবে):

cat github-key-temp >> /etc/ssh/ssh_known_hosts

স্বয়ংক্রিয় কী ইনস্টলেশন

যদি আপনাকে কোনও বিল্ড প্রক্রিয়া চলাকালীন কোনও কী যুক্ত করতে হয় তবে উপরের ম্যানুয়াল প্রক্রিয়ার 1-3 পদক্ষেপগুলি অনুসরণ করা উচিত।

এটি সম্পন্ন করার পরে, আপনার github-key-tempফাইলের সামগ্রীগুলি পরীক্ষা করুন এবং আপনার পরিচিত হোস্ট ফাইলগুলিতে সেই সামগ্রীগুলি যুক্ত করতে একটি স্ক্রিপ্ট তৈরি করুন।

if ! grep github.com ~/.ssh/known_hosts > /dev/null
then
     echo "github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" >> ~/.ssh/known_hosts
fi

অক্ষম করা কোনও আদেশ থেকে আপনার এখন মুক্তি পাওয়া উচিত ।sshStrictHostKeyChecking


17

আপনি আপনার পরিচিত_হোস্ট ফাইলগুলিতে হ্যাশ / অপরিশোধিত এন্ট্রিগুলিকে মিশ্রিত করতে পারেন।

সুতরাং আপনি যদি গিথব কী যুক্ত করতে চান তবে আপনি কেবল এটি করতে পারেন:

ssh-keyscan github.com >> ~/.ssh/known_hosts

আপনি যদি এটি হ্যাশ করতে চান তবে এইচ যোগ করুন

ssh-keyscan -H github.com >> ~/.ssh/known_hosts


1
হ্যাশ / ওয়াশ করা ছাড়া পার্থক্য কী? আমি জানি হ্যাশিং কী, কেবলমাত্র এই প্রসঙ্গে এটি প্রয়োগ করা হয় না।
গ্লেন থমাস

3
আপনার এন্ট্রিগুলি হ্যাশ করা আপনাকে যে সংযোগে ব্যবহার করতে ব্যবহৃত হোস্টগুলি সম্পর্কিত তথ্য গোপন করতে দেয়। এ গৃহীত উত্তর চেক security.stackexchange.com/questions/56268/...
উই

4
এটি প্রশ্নের উত্তর দেয় না। মিড-অ্যাটাকের মধ্যে ssh-keycan ব্যবহার করা কোনও ব্যক্তির সাপেক্ষে যার অর্থ আপনার দ্বারা সংরক্ষণ করা কীটি আপনার সিস্টেমে প্রবেশের চেষ্টা করা আক্রমণকারীর কোনও কী হতে পারে। জিনিসগুলি যাচাই করার জন্য দয়া করে আমার উত্তরটি দেখুন।
মাইকেল


6

সবচেয়ে সহজ উপায় হ'ল কীগুলি ব্যবহার ssh-keyscanকরে ম্যানুয়ালি ব্যবহার করা , সেগুলি ম্যানুয়ালি যাচাই করা:

$ ssh-keyscan -t rsa github.com | ssh-keygen -lf -
# github.com:22 SSH-2.0-libssh-0.7.0
2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA)

এবং এগুলিকে আপনার স্ক্রিপ্টে যুক্ত করুন, যা পরে "অনুমোদনযোগ্য" সার্বজনীন কী বহন করবে।


আপনারা যেমন বলেছিলেন তেমন চাবি পেয়েছি, কীভাবে আমি তাদের 'আমার স্ক্রিপ্টে যুক্ত করব'?
গ্লেন টমাস

হয় আলাদা ফাইল হিসাবে বা আপনার স্ক্রিপ্টের স্ট্রিং হিসাবে।
জাকুজে

এই উত্তরটি বিপজ্জনক কারণ "ম্যানুয়ালি সেগুলি যাচাই করুন" এর মধ্যে লুকানো সম্পূর্ণ জটিল প্রক্রিয়া। আমি নীচে একটি উত্তর যুক্ত করেছি যার নীচে এটি কীভাবে করা যায় এবং ফলাফলগুলি নিরাপদে ব্যবহার করা যায় তা ব্যাখ্যা করার চেষ্টা করে।
মাইকেল


1
@ রোজারলিপস কম্বে আমি সম্মত হয়েছি যে উত্তরটি সুরক্ষিতভাবে ব্যাখ্যা করা যেতে পারে - "এগুলি ম্যানুয়ালি যাচাই করুন" ব্যাখ্যা করা হয়নি, তবে যদি আপনি এটি "ssh ম্যানুয়াল পৃষ্ঠাতে থাকা নির্দেশাবলী অনুসরণ করে" বোঝাতে চান তবে সম্ভবত এটি ঠিক আছে। এখানে ঝুঁকিটি হ'ল যে কেউ এটি বুঝতে পারে না এবং উদাহরণস্বরূপ, সার্ভারে লগ ইন করার পরে কীটি পরীক্ষা করার মতো সুরক্ষিত জিনিসগুলি চেষ্টা করতে পারে। সে কারণেই আমি এই উত্তরটিকে "বিপজ্জনক" এবং অন্য একটিটিকে "নিরাপত্তাহীন" বলেছি - আপনি কীভাবে ম্যানুয়ালি পরীক্ষা করে দেখুন তার বিশদটি গুরুত্বপূর্ণ বিষয়। গ্রহন করার জন্যে ধন্যবাদ.
মাইকেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.