আইপি ঠিকানার মাধ্যমে নির্দিষ্ট ক্লায়েন্টদের এসএসএইচ অ্যাক্সেস সীমাবদ্ধ করুন


22

আমরা কীভাবে নির্দিষ্ট কিছু প্রাইভেট আইপিএসকে লিনাক্স সার্ভারে এসএসএইচ লগইন (আরএসএ কী জোড়) মাধ্যমে প্রবেশের অনুমতি দেব?


3
ফায়ারওয়াল বিধিগুলি গ্রহণের একটি সাধারণ পাঠ্যক্রম
রমন সাইলোপাল

2
ফায়ারওয়াল বা /etc/hosts.allow যদি ssh কম্পাইল করে ডাব্লু / টিসিপি মোড়ক বা / etc / ssh / sshd_config ফাইল বিধি।
রুই এফ রিবেইরো

একাধিক উপায় করার জন্য, linux.die.net/man/5/sshd_config দেখুন যা এতে সমস্ত কিছু ব্যাখ্যা করে/etc/ssh/sshd_config
রন

উত্তর:


42

আপনি সীমিত করতে পারেন হোস্ট কনফিগার করে সংযোগ করতে পারেন যা বিভিন্ন TCP চাদরে  বা নেটওয়ার্ক ট্রাফিক (ফায়ারওয়ালের) ব্যবহার ফিল্টারিং iptables- র । আপনি যদি ক্লায়েন্টের আইপি ঠিকানার উপর নির্ভর করে বিভিন্ন প্রমাণীকরণ পদ্ধতি ব্যবহার করতে চান তবে পরিবর্তে এসএসএইচ ডেমন কনফিগার করুন (বিকল্প 3)।

বিকল্প 1: আইপিটিবেলগুলি দিয়ে ফিল্টারিং

প্রথম ম্যাচ না হওয়া পর্যন্ত Iptables নিয়মগুলি ক্রমে মূল্যায়ন করা হয়।

উদাহরণস্বরূপ, 192.168.0.0/24 নেটওয়ার্ক থেকে ট্র্যাফিকের অনুমতি দেওয়া এবং অন্যথায় ট্র্যাফিকটি (22 পোর্টে) ফেলে দিন। DROPআপনার iptables- র ডিফল্ট নীতি কনফিগার করা হলে নিয়ম প্রয়োজন হয় না DROP

iptables -A INPUT -p tcp --dport 22 --source 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

আপনি আরও নেটওয়ার্ক / হোস্টের সাথে মেলে ড্রপ নিয়মের আগে আরও বিধি যুক্ত করতে পারেন। আপনার যদি অনেকগুলি নেটওয়ার্ক বা হোস্ট ঠিকানা থাকে তবে আপনার আইপসেট মডিউলটি ব্যবহার করা উচিত । এছাড়াও আইপ্রেঞ্জ মডিউল রয়েছে যা আইপি অ্যাড্রেসের কোনও স্বেচ্ছাসেবী ব্যাপ্তি ব্যবহার করে।

রিবুটগুলি জুড়ে Iptables স্থায়ী নয়। বুট-এ iptables পুনরুদ্ধার করতে আপনাকে কিছু ব্যবস্থা কনফিগার করতে হবে।

iptablesশুধুমাত্র আইপিভি 4 ট্র্যাফিকের জন্য প্রয়োগ করুন। যে সিস্টেমে আইপিভি 6 ঠিকানায় শ্রবণ রয়েছে সেগুলি প্রয়োজনীয় কনফিগারেশন সহ করা যেতে পারে ip6tables

বিকল্প 2: টিসিপি মোড়ক ব্যবহার করে

টিসিপি মোড়কে ব্যবহার করে কোন হোস্ট সংযোগ করতে পারে তা আপনি কনফিগারও করতে পারেন। টিসিপি মোড়কের সাহায্যে আইপি অ্যাড্রেস ছাড়াও আপনি নিয়মে হোস্ট-নেম ব্যবহার করতে পারেন।

ডিফল্টরূপে, সমস্ত হোস্টকে অস্বীকার করুন।

/etc/hosts.deny:

sshd : ALL

তারপরে হোস্টগুলিতে মঞ্জুরিপ্রাপ্তদের তালিকাবদ্ধ করুন allow উদাহরণস্বরূপ নেটওয়ার্ক 192.168.0.0/24 এবং লোকালহোস্টের অনুমতি দেওয়া ।

/etc/hosts.allow:

sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]

বিকল্প 3: এসএসএইচ ডেমন কনফিগারেশন

ক্লায়েন্টের ঠিকানা / হোস্টনামের উপর নির্ভর করে বিভিন্ন প্রমাণীকরণ পদ্ধতি ব্যবহার করতে আপনি sshd_config এ ssh ডিমন কনফিগার করতে পারেন। আপনি যদি কেবল অন্য হোস্টকে সংযোগ থেকে আটকাতে চান তবে আপনার পরিবর্তে iptables বা TCP র‌্যাপারগুলি ব্যবহার করা উচিত।

প্রথমে ডিফল্ট প্রমাণীকরণের পদ্ধতিগুলি সরান:

PasswordAuthentication no
PubkeyAuthentication no

তারপরে Match Addressফাইলটির শেষে একটি পছন্দসই প্রমাণীকরণের পদ্ধতি যুক্ত করুন। স্থাপন Matchযেহেতু এটি পরে কনফিগারেশন লাইন পরবর্তী পর্যন্ত শর্তাধীন ব্লক ভিতরে স্থাপন করা হয় ফাইলের শেষ পর্যন্ত, গুরুত্বপূর্ণ Matchলাইন। উদাহরণ স্বরূপ:

Match Address 127.0.0.*
    PubkeyAuthentication yes

অন্যান্য ক্লায়েন্টরা এখনও সংযোগ করতে সক্ষম, তবে লগইনগুলি ব্যর্থ হবে কারণ কোনও প্রমাণীকরণের উপলভ্য নেই।

ম্যাচের যুক্তিগুলি এবং অনুমোদিত শর্তযুক্ত কনফিগারেশন বিকল্পগুলি sshd_config ম্যান পৃষ্ঠাতে নথিভুক্ত করা হয়েছে । মিলের ধরণগুলি ssh_config ম্যান পৃষ্ঠাতে নথিভুক্ত করা হয় ।


/ Etc / ssh / sshd_config এ লিনাকএড্রেস ডিরেক্টরী যুক্ত করার বিষয়ে কী?
জেরোম

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

2
উপরন্তু, sshd_config AlowUsers নির্দেশ দিয়ে filterings ফিল্টার সেট করতে পারেন, এবং এছাড়াও, authorized_keys -র IP অথবা সাবনেট থেকে 'সেট করা যেতে পারে "।
tonioc

@ ট্যানিয়োক আমার ব্যবহারের ক্ষেত্রে দুর্দান্ত সমাধান। দয়া করে এই পরামর্শটি একটি উত্তরে প্রসারিত করুন।

যদি আপনার কাছে একটি এনআইসির সাথে 4 টি পোর্ট রয়েছে যার মধ্যে প্রত্যেকে আলাদা আলাদা নেটওয়ার্কে যায়, তবে ডিফল্ট #ListenAddress ::ইন /etc/ssh/sshd_configএসএসএইচ সার্ভারকে সেই কোনও নেটওয়ার্ক থেকে আগত গ্রহণ করতে বলবে। অন্যথায় আপনি যে এনআইসি বন্দরগুলির অনুমতি চান তা ListenAddress <ip address>কোথায় do <ip address>আমার eth0হয় 192.168.3.4সেইজন্য ListenAddress 192.168.3.4, SSH ফলাফল শুধুমাত্র নেটওয়ার্কের 192.168.3.4 যা eth0 এর উপর কাজ; এবং eth1 eth2 eth3 অস্বীকার করা হয়েছে।
ron

5

পূর্ববর্তী উত্তরগুলি প্রসারিত করতে এসএসএইচ ডেমনটির জন্য এখানে কিছু অতিরিক্ত কনফিগারেশন রয়েছে:

  • ফাইলের AllowUsersবিকল্পের সাথে ব্যবহারকারী ফিল্টারিং যুক্ত sshd_configকরুন:

    AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 otherid2
    

    এটি যোহন্দো এবং অ্যাডমিন 2 কেবলমাত্র 192.168.1.*ঠিকানা এবং অন্যান্য আইডি 1 , অন্য আইডি 2 কোথাও থেকে অনুমতি দেয়।

  • .ssh/authorized_keysপ্রদত্ত ব্যবহারকারীর হোম ডিরেক্টরিতে ফাইলের ঠিকানাগুলির একটি সেটে একটি এসএসএস কী বা সিএ-ভিত্তিক কী সীমাবদ্ধ করুন :

    from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
    

    এই উদাহরণে, ইউজারালিয়াসের জন্য সর্বজনীন কী কেবল প্রদত্ত ঠিকানা থেকে কার্যকর হবে।

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