জাম্প হোস্টে এসএসএইচ ফোর্সকমন্ড কতটা নিরাপদ?


8

আমার নেটওয়ার্কে আমার নিম্নলিখিত সেটআপ রয়েছে:

Internet <--> Bastion <--> Local Network

আমার বেশ কয়েকটি ব্যবহারকারী রয়েছে এবং প্রতিটি ব্যবহারকারীকে একটি নির্দিষ্ট মেশিনে নিয়োগ দেওয়া হয়। বা অন্য কথায়: প্রতিটি ব্যবহারকারীর অবশ্যই সেই সার্ভারগুলির মধ্যে একটিতে অ্যাক্সেস থাকতে হবে। যেমন: ইউজার 1 -> মেশিন 1, ইউজার 2 -> মেশিন 2 এবং আরও অনেক কিছু।

এই ব্যবহারকারীরা আমার নেটওয়ার্কের বাইরের অংশ থেকে সংযুক্ত হবেন এবং আমি আমার বাশান হোস্টের মাধ্যমে কীভাবে তাদের সংযোগগুলি আমার নেটওয়ার্কে ফরোয়ার্ড করব তার অনেক বিকল্প বিবেচনা করেছি।

অবশেষে আমি ম্যাচ ব্লক এবং ফোর্সকমন্ডের পক্ষে বেছে নিয়েছি।

সুতরাং, বাশনে আমার / ইত্যাদি / এসএসএস / এসএসডি_কনফিগটি দেখতে দেখতে এটির মতো দেখাচ্ছে:

Match User User1
        ForceCommand ssh User1@Machine1 $SSH_ORIGINAL_COMMAND

ইউজার 1 বাশান হোস্টের সাথে সংযোগ স্থাপন করে যা স্বয়ংক্রিয়ভাবে মেশিন 1 এর সাথে সংযোগ স্থাপন করে।

যতদূর আমি ফোর্সকমন্ড বুঝতে পেরেছি, ব্যবহারকারীর 1 এর ঘাঁটি হোস্টে কোনও সত্যিকারের অ্যাক্সেস থাকবে না, কারণ তার সমস্ত কার্যক্রম প্রথমে ম্যাচ ব্লক দ্বারা পরিচালিত হবে, সুতরাং মেশিন 1 এ পুনরায় সাজানো হবে। তবে এটা কি সত্যি? এটি কি নিরাপদ সেটআপ হওয়ার জন্য ইতিমধ্যে যথেষ্ট? ব্যবহারকারীর যাহাই হউক না কেন মেশিন 1 এ জেল হয়, সুতরাং সেখানে তার অনেক সম্ভাবনা থাকবে না।


2
আইপিভি 6 পেতে মনে রাখবেন, যাতে আপনার আর জাম্প বাক্সের দরকার পড়বে না।
মাইকেল হ্যাম্পটন

উত্তর:


6

আমি একটি ঘাঁটি হোস্টটি যেভাবে ব্যবহার করছি তা ব্যবহার করছে ProxyCommandএবং -Wপতাকাটি এই উদাহরণ হিসাবে রয়েছে:

ssh -o ProxyCommand='ssh -W %h:%p user@bastion' user@machine

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

এটি কোনও এজেন্ট ফরওয়ার্ডিং ব্যবহারের প্রয়োজনীয়তাও দূর করে। ক্লায়েন্টটি বেসটি অ্যাক্সেস করতে প্রথমে কী ভিত্তিক প্রমাণীকরণ ব্যবহার করতে পারে এবং তারপরে আবার কোনও এজেন্ট সংযোগ প্রদান করা হয় না যা ক্লায়েন্টের সাথে থাকা ব্যক্তিগত কী ব্যবহার করার জন্য ব্যবহার করা যেতে পারে without

এটি আমি ঘাঁটি হোস্টের উপর নির্ভরশীল কোডটিও সীমাবদ্ধ করে। ঘাঁটিতে আমার কোনও কমান্ড চালানোর দরকার নেই। -Wকোনও কমান্ড ফ্ল্যাগের পাশাপাশি একটি একক পোর্ট ফরওয়ার্ডিং বোঝায়, এই পোর্ট ফরোয়ার্ডিং সমস্ত ঘাঁটি হোস্টকে অনুমতি দেওয়া দরকার।

এই পদ্ধতির কথা মাথায় রেখে আমার সুপারিশটি হবে উপরোক্ত কাঠামোর কেবলমাত্র কমান্ড ব্যবহার করার সুযোগ দেওয়ার সাথে ঘাঁটিঘাঁটি হোস্টকে যথাসম্ভব লক করে দেওয়া।

~/.ssh/authorized_keysবেসমেন্টে থাকা ফাইলটি মূল দ্বারা মালিকানাধীন হতে পারে (যেমন ফাইল সিস্টেমের মূল থেকে শুরু করে সমস্ত ডিরেক্টরি এটিতে পরিণত হতে পারে), এটি ঝুঁকি হ্রাস করে এমনকি যদি কেউ অনিয়ন্ত্রিত ব্যবহারকারীর হিসাবে বিভাজন করতে সক্ষম হয় তবে দুর্গ হোস্ট

ইন authorized_keysক্লায়েন্টের বিশেষাধিকার বিকল্পগুলি ব্যবহার দ্বারা সীমাবদ্ধ করা যায় command, no-agent-forwarding, no-pty, no-user-rc, no-X11-forwarding, পাশাপাশি ব্যবহার permitopenসীমা বন্দর forwardings একমাত্র হোস্ট এই ব্যবহারকারীর অ্যাক্সেস করা মঞ্জুরিপ্রাপ্ত যে পোর্ট 22 অ্যাক্সেসের অনুমতি দেয়।

নীতিগতভাবে এই পদ্ধতির সুরক্ষিত হবে এমনকি যদি একাধিক ব্যবহারকারী বেসনে একক ব্যবহারকারীর নাম ভাগ করে নেন। তবে আপনি বেসনে পৃথক ব্যবহারকারীর নাম ব্যবহার করে কিছুটা পৃথকীকরণ পান।


দেখা যাচ্ছে যে আপনি বেসিংটিতেই ssh বাইনারি চাচ্ছেন। এই ক্ষেত্রে, যদি বেসটি আপোস করা হয়, তবে আক্রমণকারী এই এসএস বাইনারিটিকে এমন একটিতে প্রতিস্থাপন করতে পারে যা আপনার যোগাযোগগুলি ফেলে দেবে। যেহেতু আপনি আপনার কমান্ড-লাইনে পথ ব্যবহার করছেন না (যেমন / usr / bin / ssh), আক্রমণকারী আপনার ঘরের দিকে প্রবেশ করে এবং PATH পরিবর্তন করে (বা উপনাম ব্যবহার করে) বেসমেন্টে মূল প্রবেশাধিকার না করেও তা করতে পারে SSH)। শুধু আমার 2 সেন্ট।
জর্জ ওয়াই।

1
@GeorgeY। আপনি ভুল. উভয় sshকমান্ড ক্লায়েন্টের উপর চলছে। এবং এটি হ'ল এটি করার বিষয়টি ঠিক আমার পরামর্শ অনুসারে। প্রশ্নে উল্লিখিত পদ্ধতির sshঘাঁটিটি চলবে , যা সম্ভাব্য আক্রমণকারী ভেক্টরগুলির বিস্তৃত সারণি খুলবে।
ক্যাস্পার্ড

2

আপনি শেল শুরু হওয়ার সাথে সাথে এটি লাথি মারার পরে আপনি সহজেই ফোর্সকমন্ডকে অবরুদ্ধ করতে পারেন। এর মূল অর্থ হ'ল আপনার শেল আরসি ফাইলটি প্রথমে প্রক্রিয়া করা হয় এবং তারপরে ফোর্সকম্যান্ড আপনি যদি সেখানে যাওয়ার অনুমতি দেন। সরল exec shআপনার শেল RC ফাইলে অন্য শেল আপ ডিম এবং যতক্ষণ না আপনি এই শেল থেকে প্রস্থান অপেক্ষা ForceCommand রাখা হবে।

সুতরাং নীচের লাইন; যদি ব্যবহারকারী কোনওরকমভাবে তার শেল আরসি সম্পাদনা করতে পারেন (বলুন।


ঠিক আছে আমি চেষ্টা করব। এই ব্যবহারকারীদের মধ্যে কোনওরই কোনও ফাইল পরিবর্তন করতে বাশান হোস্টে অ্যাক্সেস নেই। তাদের কেবল গন্তব্য হোস্টে অ্যাক্সেস রয়েছে যেখানে তারা .bashrc পরিবর্তন করতে পারে। তবে আমি আশা করি যে আমি আপনাকে সঠিকভাবে বুঝতে পেরেছি, আপনি কি বেস্ট হোস্টের সাথে সম্পর্কিত?
ডাঃএলচ

1
বাশার্ক ফাইল পরিবর্তন করতে যদি ব্যবহারকারী সিস্টেমে লগইন করতে সক্ষম হয় তবে এটি কেবলমাত্র একটি সমস্যা। যদি এই অ্যাকাউন্টগুলি সাধারণভাবে ব্যবহারের উদ্দেশ্যে না হয়, তবে সেগুলি ডিরেক্টরি এবং প্রায় সমস্ত ফাইল রুটের মালিকানাধীন রুটের মালিকানাধীন হতে পারে। .Ssh ফাইলগুলির মালিকানার আশেপাশের নিয়মগুলি পরীক্ষা করে দেখুন তবে অবশ্যই .bashrc এর মতো জিনিসগুলি লেখার দরকার নেই।
এমসি 0 ই

হ্যাঁ @ ডাঃএলচ আসলে, আমি ঘাঁটি হোস্টের সুরক্ষার কথা উল্লেখ করছিলাম। আপনিও বিবেচনা করতে পারেন; chattr + i অপরিবর্তনীয় হিসাবে শেল আরসি সেট করতে এবং বিকল্প হিসাবে তাদের নিজের জন্য শেল পরিবর্তন করা থেকে ব্যবহারকারীদের অক্ষম করে।
হ্রভোয়েপ্পলজার

1

আমি ধারণা করি যে বেশিরভাগ সময় এটি ঠিক আছে, তবে সুরক্ষার সমস্যাটি হ'ল এখনও চিন্তা করার মতো বিষয়গুলি কীভাবে বেড়েছে। কোন গ্যারান্টি আছে।

উদাহরণস্বরূপ যেমন বাশের পরিবেশের ভেরিয়েবলগুলি থেকে ফাংশনগুলি কীভাবে তৈরি করা যায় সে সম্পর্কে কেউ খুব কঠোর চিন্তাও করেনি, তবে সম্প্রতি লোকেরা বুঝতে পেরেছিল যে এটি বিপর্যস্ত করা যেতে পারে, এবং এর একটি প্রভাব ফোর্সকমন্ডের কাছাকাছি অর্জন করা যেতে পারে (এ অন্তত অনুমোদিত_কাইজ ফাইলটিতে প্রয়োগ করা থাকলে) যদি ব্যবহারকারীর শেল বাশ হয়। বাশ স্থির হয়ে গেল এবং আশা করা যায় যে আপনার সংস্করণটি আপ টু ডেট।

আমি দৃ sure়রূপে নিশ্চিত নই যে ফোর্সকম্যান্ডের সংজ্ঞা কার্যকরভাবে কার্যকর_কিগুলি ফাইলগুলিতে সেই আদেশগুলি সংজ্ঞায়িত করার মতো একই is আমি এটি খুব কাছ থেকে দেখিনি।


0

করুন .bashrcমালিকানাধীন root:usergrpকিন্তু এখনও ব্যবহারকারী লগিং যেমন চলমান sshd কমান্ড দ্বারা পাঠযোগ্য $ হোম ব্যবহারকারী দ্বারা নতুন ফাইল তৈরি নামঞ্জুর করার সেট perms / মালিক বানিয়েছেন।। এইভাবে রুট এর সামগ্রীগুলি নিয়ন্ত্রণ করে .bashrc, এটি যা প্রয়োজন তা করতে দেয় তবে ব্যবহারকারী নিজেই সেগুলি সেটিংস বা ফাইল / ডায়ারের অনুমতিগুলিকে পরিবর্তন করতে পারে না যা পরোক্ষভাবে তাদের সামগ্রীগুলি পরিবর্তন করতে দেয় .bashrc


বেসেশন সার্ভারে সেই ব্যবহারকারীর জন্য কোনও বাড়ির দির বরাদ্দ না করা সম্পর্কে কীভাবে?
ডাঃ এলচ

.bashrcআপনি যে কমান্ডগুলি চালিয়ে যেতে চান সেগুলি আপনি কোথায় সংরক্ষণ করতে যাচ্ছেন ?
মার্সিন

বেসেশন সার্ভারে ফোর্সকোন্ড যা আসল হোস্টের সাথে সংযোগ ফরোয়ার্ড করে তা sshd_config এ সংজ্ঞায়িত করা হয়। অতএব, এই ঘাঁটি হোস্টে আমাকে আর কোনও কমান্ড নির্দিষ্ট করার দরকার নেই, তাই না?
ডাঃ এলচ

0

আমার আর একটা ধারণা আছে বেসমেন্ট সার্ভারের প্রতিটি ব্যবহারকারীর জন্য আপনি তাদের শেলটি / etc / passwd এ ব্যাশ স্ক্রিপ্ট হিসাবে সংজ্ঞায়িত করতে পারেন যা কেবল ssh ইউজার 1 @ মেশিন 1, ইউজার 2 @ মেশিন 2 ইত্যাদি চালায় এইভাবে আপনি নিশ্চিত করতে পারেন যে তাদের কোনও বৈধতা নেই সার্ভার নিজেই শেল এবং তারা যে মেশিনে সংযুক্ত হতে হবে তা কেবল তাদের সাথে সংযোগ স্থাপন করে।


আপনি কি এই চেষ্টা করেছেন? এই ধারণাটি আমার কাছে ঘটেছিল এবং আমি ভাবছি যে এটি কতটা ভাল কাজ করে।
উইলিয়াম পিট্রি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.