কিছু ব্যবহারকারীর জন্য কীভাবে এসএফটিপি অক্ষম করবেন, তবে এসএসএস সক্ষম রাখবেন?


12

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

আমি ফাইলটি পরিবর্তনের জন্য পরামর্শগুলি দেখেছি /etc/ssh/sshd_config, তবে কী পরিবর্তন করবেন তা আমি নিশ্চিত নই।


এটি করার একমাত্র উপায়টি হ'ল সেলইনাক্সে এমএলএস নীতি ব্যবহার করা এবং কোনও ব্যক্তি যে ফাইল, ডিরেক্টরি এবং সকেটগুলি অ্যাক্সেস করতে পারে, চালনা করতে পারে ইত্যাদি ঠিক সীমাবদ্ধ করে রাখে আমি এটি একটি অত্যন্ত সীমাবদ্ধ আইপট্যাবলস নীতিমালা ব্যবহার করে যা ব্যবহার করে ownerবহির্মুখী অ্যাক্সেসের জন্য মডিউল । এটি ধরে নিয়েছে যে আপনি একটি লাল দল দ্বারা কলমের পরীক্ষা করতে চলেছেন। আপনার সিস্টেমে অ্যাক্সেস করা প্রত্যেকে যদি নিয়ম মেনে চলেন এবং যদি কখনও খারাপ-অভিপ্রায় না করেন তবে আমার পদ্ধতিটি ভারী হাতে এবং অত্যধিক জটিল।
হারুন

উত্তর:


7

সাধারণভাবে এটি করা অন্যদের তালিকাভুক্ত করার কারণে খারাপ সুরক্ষা অনুশীলন। যাইহোক, আপনার কার্যভারের মূল বিষয়টি, আমি মনে করি যে আপনাকে বিভিন্ন মানদণ্ডের ভিত্তিতে শর্তযুক্ত কনফিগারেশন বিভাগ থাকতে পারে তা শেখানো।

এটি করার উপায় হ'ল Matchশর্তসাপূর্ণ ব্লক * ব্যবহার করা ।

Match User bob
Subsystem   sftp  /bin/false

দেখুন sshd_config(5)অধীনে Matchআরও তথ্যের জন্য অধ্যায়, এবং এর মিলে Group

* এটি করার একাধিক উপায় রয়েছে।


7
এটা আমার পক্ষে কাজ করছে না ত্রুটি:
দিকনির্দেশক

ভুল উত্তর কারণ
সাবস্কিস্টমটি

6

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

উদাহরণস্বরূপ, আপনি নিম্নলিখিত পদ্ধতি ব্যবহার করে এসএসএসের মাধ্যমে / ইত্যাদি / পাসডাব্লুড ডাউনলোড করতে পারেন (কোনও স্ক্রিপ / এসএফপি অধিবেশন প্রয়োজন নেই): ssh foo@bar.com "বিড়াল / ইত্যাদি / পাসডাব্লু"> পাসডব্লকপি

আপনি যদি এটি আপনার স্ক্রিনে এসএসএইচ এর মাধ্যমে দেখতে পান তবে আপনি সহজেই এটি ফাইল হিসাবে অনুলিপি করতে পারেন।

এটির অর্থ দেয়ার একমাত্র উপায় হ'ল যদি আপনার কাছে কোনও কাস্টম সীমাবদ্ধ শেল থাকে যা সুরক্ষা নীতি প্রয়োগ করে।

যাইহোক, এর বিপরীতটি বোঝায় না (ssh শেলটি অক্ষম করা তবে scp / sftp সক্ষম করা) কারণ আপনি sshp / scp এর মাধ্যমে স্বেচ্ছাসেবক কমান্ড কার্যকর করতে সক্ষম নন যে আপনি কোনও এসএস শেলের মাধ্যমে করতে পারবেন।

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


4
Match Group nosft
Subsystem   sftp  /bin/false

আমি এর জন্য একটি গ্রুপ ব্যবহার করতে পছন্দ করি।

এটি শেলগুলি সীমাবদ্ধ করে এমন ব্যবহারকারীদের সাথে একত্রে দরকারী। আমি মাঝে মাঝে কোনও ক্লায়েন্টকে এসএসএস অ্যাক্সেস দেয় যাতে তারা তাদের ডেটাবেসগুলির স্কেল-ডাম্প অ্যাক্সেস করতে পারে যাতে তাদের ডেটা ফেলে দেয় এমন স্ক্রিপ্টে তাদের শেলটি সেট করে। এগুলি scp থেকে কেটে ফেলা খুব স্মার্ট ধারণা বলে মনে হয়। catSsh- র মাধ্যমে কোনও ফাইল স্থানান্তর করতে তাদের দৌড়ের অ্যাক্সেস নেই ।


3
Directive 'Subsystem' is not allowed within a Match block
প্যাট্রিক

ভুল উত্তর কারণ
সাবস্কিস্টমটি

4

বিশ্বব্যাপী এসএফটিপি সক্ষম করা এবং কেবলমাত্র কিছু ব্যবহারকারীর জন্য এসএফটিপি অক্ষম করা সম্ভব।

আপনি যদি ব্যবহারকারীকে নিয়মিত শেল প্রম্পট পেতে চান তবে এটি কাজ করে না। আপনার শেল অ্যাক্সেস থাকলে আপনি বেশিরভাগ স্টাফটিকে বিঘ্নিত করতে পারেন বলেও তা বোঝায় না। আপনি কেবলমাত্র একটি নির্দিষ্ট প্রোগ্রামে অ্যাক্সেস দিতে চাইলেই এটি কাজ করবে।

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

মেলা

ব্যবহারকারীর একটি সেট মেলে, আপনি Matchকীওয়ার্ড দিয়ে এসএসএইচ কনফিগার করতে পারেন । sshd_config(5)ম্যানুয়াল থেকে :

Match
        ...

        The arguments to Match are one or more criteria-pattern pairs or the
        single token All which matches all criteria.  The available criteria
        are User, Group, Host, LocalAddress, LocalPort, and Address.  The
        match patterns may consist of single entries or comma-separated
        lists and may use the wildcard and negation operators described in
        the PATTERNS section of ssh_config(5).

        ...

উদাহরণ দুটি:

  • Match User eva "ইভা" ব্যবহারকারীর সাথে মেলে
  • Match User stephen,maria "স্টিফেন" এবং "মারিয়া" ব্যবহারকারীদের সাথে মেলে
  • Match Group wheel,adams,simpsons "চাকা", "অ্যাডামস", "সিম্পসনস" গোষ্ঠীর সাথে মেলে

আপনি যদি আরও তথ্য চান, sshd_config(5)ম্যানুয়ালটিতে লোড রয়েছে ।

জোর করে আদেশ

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

কমান্ড টু ফোর্স ForceCommandকীওয়ার্ড দিয়ে কনফিগার করা যায় । sshd_config(5)ম্যানুয়াল থেকে :

ForceCommand
        Forces the execution of the command specified by ForceCommand,
        ignoring any command supplied by the client and ~/.ssh/rc if
        present.  The command is invoked by using the user's login shell
        with the -c option.  This applies to shell, command, or subsystem
        execution.  It is most useful inside a Match block.  The command
        originally supplied by the client is available in the
        SSH_ORIGINAL_COMMAND environment variable.  Specifying a command of
        “internal-sftp” will force the use of an in-process sftp server that
        requires no support files when used with ChrootDirectory.  The
        default is “none”.

সুতরাং আপনি ব্যবহার করতে চান এমন সীমাবদ্ধ কমান্ড জোর করতে পারেন ForceCommand <your command>। উদাহরণ স্বরূপ:

Match User kim
        ForceCommand echo 'successful login man, congrats'

উদাহরণ

আমার ক্ষেত্রে যেখানে আমি গিট অ্যাক্সেস দিতে চাই, আমার কেবল ব্যবহারকারীর অ্যাক্সেস থাকা দরকার git-shell। এটি এমন একটি বিভাগ যা আমার গিট ব্যবহারকারীদের জন্য কিছু সুরক্ষা বিকল্পের সাথে এসএফটিপি অক্ষম করে:

Match Group git

        # have to do this instead of setting the login shell to `git-shell`,
        # to disable SFTP
        ForceCommand /usr/bin/git-shell -c "$SSH_ORIGINAL_COMMAND"

        # disable stuff we don't need
        AllowAgentForwarding no
        AllowTcpForwarding no
        AllowStreamLocalForwarding no
        PermitOpen none
        PermitTunnel no
        PermitTTY no
        X11Forwarding no

1
এটি ওপি-র প্রশ্নের উত্তর দেয় না, তবে নিজের ব্যবহারের ক্ষেত্রে আমি যা অর্জন করতে চাই তা অর্জনে আমার পক্ষে খুব সহায়ক হয়েছিল
কিডবার্লা

আমি রাজি নই। ওপির প্রশ্নটি হল "কিছু ব্যবহারকারীর জন্য এসএফটিপি কীভাবে অক্ষম করা যায় তবে এসএসএস সক্ষম রাখতে হয়?" এবং এই উত্তরটি এটি করার একটি উপায় ব্যাখ্যা করে। আপনি যেভাবেই এটি সহায়ক বলে খুশি হয়েছেন!
এডে

আপনার নিজের ভর্তি দ্বারা এটি "আপনি যদি ব্যবহারকারীকে নিয়মিত শেল প্রম্পট পেতে চান তবে এটি কাজ করে না"। সুতরাং এটি "চালিত এসএসএল সক্ষম করুন" এর
ওপির

এটা একটা ভাল দিক. আমি অনুমান করি যে "শেল অ্যাক্সেস থাকলে আপনি বেশিরভাগ স্টাফকে রোধ করতে পারেন না বলেই" আমি এই সমাধানটির সাথে সম্মতি পেয়েছি। তবে ওপি যা বলছে ঠিক তেমন কোনও উপায় আমি খুঁজে পাইনি, আমি এখনই সম্মত।
ওদে

এখানে এই উত্তর একটি পূর্ণাঙ্গ সংস্করণ serverfault.com/a/817482
Aude

1
Match User bob
MaxSessions 0

CentOS 6.6 এ পরীক্ষিত এবং কাজ করছে। নোট করুন যে কমপক্ষে নতুন সেন্টোস সংস্করণে ম্যাচ সহ সাবসিস্টেম অনুমোদিত নয়। Sshd_config- এর ম্যানপেজটি সীমাবদ্ধ কীওয়ার্ডগুলির তালিকা করে যা ম্যাচ শর্তের সাথে অনুমোদিত।


0

বিপরীতটি করতে আপনি scponly এ দেখতে পারেন , কেবলমাত্র scp / sftp অনুমতি দিন তবে কোনও শেল অ্যাক্সেস নেই।

আমি উপরের @ নাথনের সাথে একমত, এটি পুরোপুরি অর্থবোধ করে না। আপনি যদি ডেড সেট হয়ে থাকেন তবে আপনার / etc / ssh / sshd_config ফাইলটি সম্পাদনা করে নীচের লাইনটি সরিয়ে / মন্তব্য করার চেষ্টা করুন:

সাবসিস্টেম এসএফটিপি / ইউএসআর / লিবেক্সেক / ওপেনশ / এসফ্টপি-সার্ভার-


0

ব্যবহারকারীর জন্য কোনও হোম ডিরেক্টরি দেবেন না

usermod username -d /bin/false

/ Etc / ssh / sshd_config ফাইলের সাবসিস্টেম sftp / usr / libexec / openssh / sftp-server পরিবর্তন করুন সাবসিস্টেম sftp / dev / null / usr / libexec / openssh / sftp- সার্ভারে

তারপরে ssh পুনরায় চালু করুন

service ssh restart

এটি আমার পক্ষে কাজ করে, ডেবিয়ান।


-2

ইন ~/authorized_keyকনফিগার হিসাবে অনুসরণ ব্যবহারকারী কী:

command="/bin/bash" ssh-rsa AAAAB3Nz.........
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.