এসএফটিপি দিয়ে পাসওয়ার্ড-কম ব্যাকআপ সীমাবদ্ধ করুন


11

সদৃশ ব্যবহার করে আমার কম্পিউটারে একটি সার্ভারের ব্যাকআপ নেওয়া দরকার:

duplicity /etc sftp://backup@my.dynamic.ip.address//home/backup

এটি করার আগে, আমাকে নিম্নলিখিতগুলি করে পাসওয়ার্ড-অল্প অ্যাক্সেসের অনুমতি দেওয়া দরকার:

$ ssh-keygen
$ ssh-copy-id backup@my.dynamic.ip.address
$ ssh backup@my.dynamic.ip.address

আমার প্রশ্ন হ'ল আমি কীভাবে উত্সাহিত পাবলিক কীতে কেবল এই এসএফটিপি স্থানান্তরের কমান্ডকে সীমাবদ্ধ করব?

command="restrict to sftp",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA…

এবং যেহেতু আমি একটি গতিশীল আইপি ঠিকানায় আছি, প্রতিবার আমার আইপি পরিবর্তন হওয়ার সাথে সাথে আমি কীভাবে "অনুপস্থিত পরিচিত হোস্ট" সমস্যাটি কাটিয়ে উঠব?



1
"অনুপস্থিত হোস্ট সমস্যা": স্ট্রাইকটহস্টকিচেকিং ব্যবহার করুন = এসএসএস করার কোনও বিকল্প নেই
মার্কি

@ মারকি, ধন্যবাদ, সেট করে যে এটি ssh_config কাজ করে।
প্রশ্ন ওভারফ্লো

উত্তর:


15

প্রশ্ন 1

আমার প্রশ্ন হ'ল আমি কীভাবে উত্সাহিত পাবলিক কীতে কেবল এই এসএফটিপি স্থানান্তরের কমান্ডকে সীমাবদ্ধ করব?

এটি করার জন্য 2 টি পদ্ধতি রয়েছে।

1. - sshd- এর মাধ্যমে সীমাবদ্ধ

এই পদ্ধতিতে আপনার এসএসএইচ ডেমন এর মধ্যে এসএফটিপি বৈশিষ্ট্য সেট আপ করা জড়িত sshd। এটি /etc/ssh/sshd_configকনফিগারেশন ফাইলের মাধ্যমে নিয়ন্ত্রণ করা হয় । দ্রষ্টব্য: এটি backupকেবলমাত্র সার্ভারে এসএফটিপি-র অনুমতি দেওয়ার জন্য ব্যবহারকারীকে সীমাবদ্ধ করবে ।

# /etc/ssh/sshd_config

Subsystem       sftp    internal-sftp

## You want to put only certain users (i.e users who belongs to sftpusers 
## group) in the chroot jail environment. Add the following lines at the end 
## of /etc/ssh/sshd_config

Match User backup
  ForceCommand internal-sftp

২ - অনুমোদিত_কিজের মাধ্যমে সীমাবদ্ধ

এই পদ্ধতিতে sshd_configফাইলটিতে কোনও পরিবর্তন জড়িত না । আপনি command=ইতিমধ্যে আপনার প্রশ্নে উল্লেখ করেছেন এমন বৈশিষ্ট্যটির মাধ্যমে আপনি একটি ব্যবহারকারী + একটি এসএসএইচ কী একক কমান্ডের মধ্যে সীমাবদ্ধ করতে পারেন । কৌতুকটি আপনাকে কোন আদেশে অন্তর্ভুক্ত করবে। আপনি এই command=লাইনে এসএফটিপি সার্ভারটি রাখতে পারেন , এটি আপনার sshd_configফাইলে এসএফটিপি সার্ভার সেটআপ করার মতোই প্রভাব ফেলবে ।

# User backup's $HOME/.ssh/authorized_keys file
command="/usr/libexec/openssh/sftp-server" ssh-dss AAAAC8ghi9ldw== backup@host

দ্রষ্টব্য: যদি ব্যবহারকারীর লেখার অ্যাক্সেস থাকে তবে ~/.ssh/authorized_keysতারা এটি পড়তে এবং / বা সংশোধন করতে পারে। উদাহরণস্বরূপ, তারা এটি ডাউনলোড করতে, এডিট করতে এবং commmand=...শেল সহ তাকে নিরপেক্ষ কমান্ড অ্যাক্সেসের অনুমতি দিয়ে পুনরায় আপলোড করতে পারে । যদি ব্যবহারকারীর লেখার অ্যাক্সেস থাকে তবে ~/.sshতারা কেবল ফাইলটিকে লিঙ্কমুক্ত এবং পুনরায় তৈরি করতে পারে, বা chmodএটি অ্যাক্সেস লেখার জন্য। অনেকগুলি সম্ভাব্য সমাধান রয়েছে যেমন ~/.ssh/authorized_keysফাইলগুলি অ-ব্যবহারকারী-লেখার যোগ্য জায়গায় রেখে দেওয়া যেমন:

Match Group sftponly
    AuthorizedKeysFile      /etc/ssh/authorized_keys/%u

প্রশ্ন # 2

এবং যেহেতু আমি একটি গতিশীল আইপি ঠিকানায় আছি, প্রতিবার আমার আইপি পরিবর্তন হওয়ার সাথে সাথে আমি কীভাবে "অনুপস্থিত পরিচিত হোস্ট" সমস্যাটি কাটিয়ে উঠব?

এটি কৌশলযুক্ত তবে ফাইলের from=মধ্যেও বৈশিষ্ট্যটি ব্যবহার করে ডাবল authorized_keys। এখানে আমরা কেবল হোস্ট থেকে অ্যাক্সেস সীমাবদ্ধ করছি somehost.dyndns.org,।

from = "somehost.dyndns.org", কমান্ড = "/ usr / Libxec / openssh / sftp-server", নো-পোর্ট-ফরওয়ার্ডিং, নন-এক্স 11-ফরওয়ার্ডিং, কোনও এজেন্ট-ফরোয়ার্ডিং, নো-পিটিএসআইএসএস-ডিএসএস এএএএসি 8 জিআইডাব্লুডাব্লু == ব্যাকআপ @ হোস্ট

এর পরে অতিরিক্ত সেটিংস command=সমান গুরুত্বপূর্ণ, যেহেতু তারা এসএসএইচ কী ব্যবহার আরও সীমাবদ্ধ রাখবে।

বৈশিষ্ট্যগুলির ভাঙ্গন

  • from='hostname1,hostname2,'' - নির্দিষ্ট আইপি বা হোস্টনেম নিদর্শনগুলি থেকে অ্যাক্সেসকে সীমাবদ্ধ করে
  • command='command' - প্রমাণীকরণের পরে নির্দিষ্ট কমান্ড চালায়
  • no-pty - একটি পিটিআই বরাদ্দ দেয় না (ইন্টারেক্টিভ লগইন অনুমতি দেয় না)
  • no-port-forwarding - পোর্ট ফরওয়ার্ডিং অনুমতি দেয় না
  • no-X11-forwarding - ব্যবহারকারী এক্স 11 জিইউআই ডিসপ্লেটি সরাতে পারবেন না
  • no-agent-forwarding - ব্যবহারকারী এই হোস্টের মাধ্যমে অন্য অভ্যন্তরীণ হোস্টগুলিতে ফরোয়ার্ড করতে পারবেন না

"অনুপস্থিত পরিচিত হোস্টগুলি" সম্পর্কে বার্তাটি পরিত্রাণ পেতে আপনি ক্লায়েন্টের সাথে এটির সংযোগ স্থাপনের সময় এই এসএসএইচ বিকল্পটি যুক্ত করতে পারেন:

$ ssh -o StrictHostKeyChecking=no ....

ssh_configএই স্যুইচ সম্পর্কে পুরো বিশদ জানতে ম্যান পৃষ্ঠাটি দেখুন ।

ব্যবহারকারীর শেল সীমাবদ্ধ

উপরের উভয় সমাধানের জন্য আপনি সম্ভবত ফাইলটিতে backupএই ব্যবহারকারীর শেলও সীমাবদ্ধ রেখে ব্যবহারকারীকে লক করতে চান /etc/passwd। সাধারণত আপনি এটি সেট করতে চাইবেন scponlyতবে এর জন্য অন্যান্য পছন্দও রয়েছে। এটি করার উপায়গুলির জন্য এই U&L প্রশ্নোত্তর শিরোনামটি দেখুন: " এসসিপির জন্য আপনার কি শেল দরকার? "

ব্যবহারের /sbin/nologinযদি আপনার কাছ থেকে chroot বৈশিষ্ট্যটি ব্যবহার করতে নির্বাচন করতে পারেন ব্যবহার করা sshd_configযেমন রূপরেখা # 1 উপরে। তবে আপনি যদি # 2 তে বর্ণিত পদ্ধতিটি ব্যবহার করতে চান, তবে আপনাকে সম্ভবত scponlyব্যবহারকারীর শেলের জন্য বা অন্য কিছু ব্যবহার করতে হবে /etc/passwd


বোনাস - উপরে # 2 বাড়ানো হচ্ছে

আপনার যদি এই ব্যবহারকারীর জন্য কোনও কমান্ডের সেট প্রকাশ করতে হয় তবে আপনি এটিও করতে পারেন। এর মতো স্ক্রিপ্ট তৈরি করুন /home/backup/commands.sh:

#!/bin/sh

case $SSH_ORIGINAL_COMMAND in
  "diskspace")
    df -h
    ;;
  "dirlist")
    ls -1
    ;;
  "apache_restart")
    /etc/init.d/apache restart
    ;;
  *)
    echo "Unknown command"
esac

তারপরে আপনি authorized_keysফাইলটি সেটআপ করুন :

command="/bin/sh /home/user/commands.sh" ssh-dss AAAAC8ghi9ldw== user@host

backupব্যবহারকারী তারপর তাই মত এই কমান্ড চালাতে পারেন:

# diskspace
$ ssh -q user@remote_host diskspace
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/dev-root   39G  2.2G   35G   6% /

# dirlist
$ ssh -q remote_host dirlist
commands.sh
dump.sql

তথ্যসূত্র


আপনি কোন আদেশগুলি ব্যবহারকারীকে অ্যাক্সেস করার অনুমতি দিচ্ছেন সে সম্পর্কে সাবধান হন বা ব্যবহারকারীর একটি পূর্ণ শেল অর্জনের ক্ষমতা থাকতে পারে। উদাহরণস্বরূপ, আপনি কাউকে ভিমে অ্যাক্সেস দিলে তারা সহজেই পারত:! / বিন / বাশ বা:! / বিন / অন্য কোনও প্রোগ্রাম।
2'6 এ 14

@ রকিং - হ্যাঁ তা না বলেই চলে যায় ...
slm

আমাকে এত বিশদ উত্তর দেওয়ার জন্য ধন্যবাদ। কমান্ড সীমাবদ্ধতা নিখুঁতভাবে কাজ করে। তবে দুটি সমস্যা আছে। 1) গতিশীল আইপি সার্ভারকে নয়, আমার কম্পিউটারকে বোঝায়। অনুমোদিত_কিজ ফাইলের "থেকে" ক্ষেত্রে থাকা হোস্টনামগুলি কেবলমাত্র সেই ঠিকানাটিকে সীমাবদ্ধ করে যেখানে থেকে সার্ভারটি আমার কম্পিউটারে অ্যাক্সেস করতে পারে এবং আমার কম্পিউটারে "অনুপস্থিত পরিচিত হোস্ট" সমস্যা সমাধানের জন্য কিছুই করে না। 2) আমার কম্পিউটারে ব্যাকআপ ব্যবহারকারীর জন্য শেল লগইন অক্ষম করা /sbin/nologinসার্ভারকে এসএফটিপি দিয়ে আমার কম্পিউটার অ্যাক্সেস করা থেকে বিরত করবে। এই আমি চেষ্টা করেছিলাম।
প্রশ্ন ওভারফ্লো

1
বিভ্রান্তির জন্য দুঃখিত. সার্ভার এস ক্লায়েন্ট হয়ে যায় যখন এটি আমার কম্পিউটারে ব্যাকএন্ড এসএফটিপি সংযোগ করে সি। যখনই সার্ভার এস ব্যাকআপ করছে এমন কোনও স্থান তার এসএস known_hostsফাইলে তালিকাভুক্ত নয় এমন জায়গায় সংযোগ করে যখন "অনুপস্থিত হোস্ট" সমস্যা দেখা দেয় । মার্কি তার মন্তব্যে সঠিক সমাধান দিয়েছেন। fromমাপদণ্ড authorized_keysআমার কম্পিউটারে সি ফাইল একমাত্র স্থান যেখান থেকে এস সি সংযোগ করতে পারেন সীমিত
প্রশ্ন ওভারফ্লো

হ্যাঁ, সম্পাদনা করতে দয়া করে এগিয়ে যান। উপায় দ্বারা আমি বুঝতে পারি যে /sbin/nologinযদি আমি সার্টটিতে সুনির্দিষ্ট করে রেখেছি তার internal-sftpপরিবর্তে আমি ফোর্স কমান্ড ব্যবহার করি তবে তা কাজ /usr/libexec/openssh/sftp-serverকরে। আমার ধারণা এই দুটি পৃথক সাবসিস্টেম। এবং প্রাক্তনের জন্য একটি ক্রুট ডিরেক্টরি তৈরি করা অনেক বেশি সোজা এগিয়ে।
প্রশ্ন ওভারফ্লো

0

সীমাবদ্ধ শেল

আপনাকে একটি সীমাবদ্ধ শেল যেমন scponly বা RSSsh বরাদ্দ করতে হবে।

আপনি যখন scp বা sftp ব্যবহার করেন আপনি ssh- র মাধ্যমে রিমোট সাইটের সাথে সংযোগ স্থাপন করছেন এবং তারপরে রিমোট শেল একটি scp প্রসেস বা sftp প্রক্রিয়া চালায়। আপনার যা দরকার তা হ'ল একটি সীমাবদ্ধ শেল যা কেবলমাত্র স্কিপ বা এসফ্টপকে লগইন লক করতে দেয়।

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