ssh টানেলিং শুধুমাত্র অ্যাক্সেস


31

কেবল টানেলিংয়ের অ্যাক্সেসের অনুমতি দেওয়ার জন্য কি এসএসএস (লিনাক্সে) কনফিগার করা সম্ভব? অর্থাৎ ব্যবহারকারী টানেলগুলি সেটআপ করতে পারে তবে শেল / অ্যাক্সেসের ফাইলগুলি পাবে না?

উত্তর:


42

হ্যাঁ, কেবল /bin/falseশেল হিসাবে ব্যবহার করুন এবং কোনও রিমোট কমান্ড (অর্থাত্ -Nওএসএসএইচের পতাকা) ব্যবহার না করেই সুড়ঙ্গ এসএসএইচ প্রক্রিয়া শুরু করার জন্য ব্যবহারকারীকে নির্দেশ দিন :

ssh -N -L 1234:target-host:5678 ssh-host

হুম, ব্যবহারকারী যদি ব্যবহার না করে -Nতবে তাদের শেল অ্যাক্সেস রয়েছে। এটি সত্যই সমস্যার সমাধান করে না এবং বিপজ্জনক।
mlissner

12
@ মিলসনার: না, যদি আপনার /bin/falseশেল হিসাবে থাকে তবে আপনার শেল অ্যাক্সেস পাবেন না, কারণ প্রতিটি লগইন সেশনটি তত্ক্ষণাত বন্ধ হয়ে যাবে।
সোভেন

10

ব্যবহারকারীর .ssh / अधिकृत_keys ফাইলে নীচের মতো কিছু রাখুন:

permitopen="192.168.1.10:3306",permitopen="10.0.0.16:80",no-pty ssh-rsa AAAAB3N...

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

অনুমোদিত_কাইজ ফাইলের আরও বিকল্পের জন্য sshd এর ম্যান পৃষ্ঠাটি দেখুন ।

মনে রাখবেন যে ব্যবহারকারীর অভিজ্ঞতাটি কিছুটা অদ্ভুত দেখাচ্ছে: তারা যখন প্রবেশ করবে তখন মনে হবে সেশনটি ঝুলছে (কারণ তারা কোনও অর্থ পাচ্ছে না)। ঠিক আছে. ব্যবহারকারী যদি উদাহরণস্বরূপ, "-L3306: 192.168.1.10: 3306" এর সাথে পোর্ট ফরওয়ার্ডিং নির্দিষ্ট করে থাকেন তবে পোর্ট ফরওয়ার্ডিং কার্যকর হবে।

যা-ই হোক না কেন, চেষ্টা করে দেখুন।


6
এটি বিপজ্জনক পরামর্শ ; no-ptyশেল অ্যাক্সেস প্রতিরোধ করে না, এটি শেলটিকে একটি pty দেয় না। এটি প্রম্পটটি প্রদর্শন করে না (অর্থাত্ "হ্যাং হয়ে দেখা দেয়"), তবে আপনি এখনও ঠিক কমান্ড দিতে পারেন। আপনি যদি সেখান থেকে শেল অ্যাক্সেস সীমাবদ্ধ করতে চান তবে আপনার command="..."বিকল্পটি দরকার .ssh/authorized_keys
আলেক্সি তোড়হামো

@ আলেক্সি তোরহামো সঠিক, তবে এটি একটি শুরু; শেলটি সম্পূর্ণরূপে সীমাবদ্ধ করতে আপনাকে শেলকে / usr / sbin / nologin বা / bin / false in / etc / passwd এ সেট করতে হবে। আমি উপরের এন্ট্রি সম্পাদনা করে তা প্রতিবিম্বিত করতে আলেকসির পরামর্শ সহ।
জ্যামিসন বেকার

4

ব্যবহারকারীর এমন একটি শেল দিন যা কেবল তাদের যেমন লগ আউট করার অনুমতি দেয় /bin/press_to_exit.sh

#! / বিন / ব্যাশ
পড়ুন -n 1 -p "প্রস্থান করতে কোনও কী টিপুন" কী

এইভাবে তিনি টানেলগুলি সক্রিয় রেখে, যতক্ষণ চাইছেন ততক্ষণ লগইন করতে পারবেন, তবে কোনও আদেশ না চালাবেন। Ctrl-cসংযোগ বন্ধ করে দেয়।


3
আমি মনে করি যে অন্তত তত্ত্বের ক্ষেত্রে, ব্যবহারকারী সঠিক মুহূর্তে (1 এবং 2 লাইনের মধ্যে) সিটিআরএল + সি হিট করতে সক্ষম হবে এবং একটি পূর্ণ ব্যাশ শেল দিয়ে শেষ করবে।
andreas-h

2

এমন একটি শেল বরাদ্দ করুন যা ব্যবহারকারীকে লগ ইন করতে না দেয়।

যেমন

#!/bin/sh
echo "No interactive login available."
sleep 60
exit 0

তাদের শেল প্রম্পট পেতে বাধা দেয় এবং তাদের 60 সেকেন্ডের সময়সীমা দেয় - যদি 60 সেকেন্ডের জন্য কোনও সংযোগ সক্রিয় না হয় তবে এটি প্রস্থান করবে এবং এর ফলে সেগুলি সম্পূর্ণরূপে সংযোগ বিচ্ছিন্ন হয়ে যাবে (প্রয়োজনীয়তা অনুসারে সংখ্যাটি বাড়িয়ে তুলুন)।

তারা কোনও রিমোট কমান্ড কার্যকর করতে পারে না, কারণ শেলটি তাদের অনুমতি দেয় না।


4
বেশিরভাগ লিনাক্স ইনস্টলগুলি এর জন্য ইতিমধ্যে কিছু নিয়ে আসে। / এসবিন / নোলজিন, বা / বিন / মিথ্যা বা অনুরূপ।
ররি

1
উপরের উদাহরণে Ctrl-C কী করবে?
আরজান

আরজান: যেহেতু স্ক্রিপ্টটি শেল হিসাবে ব্যবহৃত হয়, তাই Ctrl-C logoutএকটি সাধারণ ক্ষেত্রে " " এর মতোই প্রভাব ফেলবে ।
মাধ্যাকর্ষণ

2
আমি আসলে "-N" বিকল্পের সাহায্যে আর্লের প্রতিক্রিয়া পছন্দ করি তবে আপনি যদি আপনার ব্যবহারকারীকে একটি সহায়ক, বন্ধুত্বপূর্ণ, তথ্যমূলক বার্তা দিতে চান - এবং এসএসএইচ সংযোগগুলি সমস্ত জায়গায় ছেড়ে দিতে চান - তবে একটি কাস্টম স্ক্রিপ্ট সুন্দর এবং পরিষ্কার সম্পর্কে এটা কি করছে

2
@ জেআরজি এই আলোচনাটি পুরানো এবং আপনি নিজের মতামত বদলাতে পারেন :) তবে IMHO হস্তনির্মিত শেল স্ক্রিপ্টগুলি নিয়ে আসা বিপজ্জনক। ইতিমধ্যে রয়েছে /sbin/nologin, যা আপনি ব্যবহারকারী-বান্ধব বার্তার সাথে কাস্টমাইজ করতে পারেন /etc/nologin.txt
dr01

0

আমার সমাধান, ব্যবহারকারী যারা শুধুমাত্র টানেলিং হতে পারে প্রদান করা হয় একটি ইন্টারেক্টিভ শেল ছাড়া , যে শেল সেট করতে / etc / passwd করতে , / usr / বিন / tunnel_shell

কেবল অসীম লুপের সাথে এক্সিকিউটেবল ফাইল / usr / বিন / টানেল_শেল তৈরি করুন ।

অতিরিক্তভাবে AllowGroupsএবং Match Groupবিকল্পটি ব্যবহার করুন ।

সম্পূর্ণরূপে এখানে ব্যাখ্যা করা হয়েছে: http://blog.flowl.info/2011/ssh-tunnel-group-only-and-no- Shell-p कृपया/


2
ব্যবহারকারী কোনওরকম এক্সিকিউটেবল থেকে প্রস্থান করতে এবং শেল থেকে পালাতে সক্ষম হতে পারে। আপনি কি পুরোপুরি আত্মবিশ্বাসী যে আপনার এক্সিকিউটেবল এটিকে অনুমতি দেবে না?
dr01

2
@ dr01 সত্যি কথা বলতে, আমি নিশ্চিত না এটি 100% সুরক্ষিত কিনা। আমার ধারণা আপনি যখন এক্সিকিউটেবল থেকে প্রস্থান করবেন তখন এসএসএইচ সেশনটিও ছাড়বে। আমি এটি নিয়ে আরও গবেষণা করব এবং আবার এখানে মন্তব্য করব।
ড্যানিয়েল ডাব্লু।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.