আমরা কীভাবে নির্দিষ্ট কিছু প্রাইভেট আইপিএসকে লিনাক্স সার্ভারে এসএসএইচ লগইন (আরএসএ কী জোড়) মাধ্যমে প্রবেশের অনুমতি দেব?
/etc/ssh/sshd_config
আমরা কীভাবে নির্দিষ্ট কিছু প্রাইভেট আইপিএসকে লিনাক্স সার্ভারে এসএসএইচ লগইন (আরএসএ কী জোড়) মাধ্যমে প্রবেশের অনুমতি দেব?
/etc/ssh/sshd_config
উত্তর:
আপনি সীমিত করতে পারেন হোস্ট কনফিগার করে সংযোগ করতে পারেন যা বিভিন্ন TCP চাদরে বা নেটওয়ার্ক ট্রাফিক (ফায়ারওয়ালের) ব্যবহার ফিল্টারিং iptables- র । আপনি যদি ক্লায়েন্টের আইপি ঠিকানার উপর নির্ভর করে বিভিন্ন প্রমাণীকরণ পদ্ধতি ব্যবহার করতে চান তবে পরিবর্তে এসএসএইচ ডেমন কনফিগার করুন (বিকল্প 3)।
প্রথম ম্যাচ না হওয়া পর্যন্ত 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
।
টিসিপি মোড়কে ব্যবহার করে কোন হোস্ট সংযোগ করতে পারে তা আপনি কনফিগারও করতে পারেন। টিসিপি মোড়কের সাহায্যে আইপি অ্যাড্রেস ছাড়াও আপনি নিয়মে হোস্ট-নেম ব্যবহার করতে পারেন।
ডিফল্টরূপে, সমস্ত হোস্টকে অস্বীকার করুন।
/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]
ক্লায়েন্টের ঠিকানা / হোস্টনামের উপর নির্ভর করে বিভিন্ন প্রমাণীকরণ পদ্ধতি ব্যবহার করতে আপনি sshd_config এ ssh ডিমন কনফিগার করতে পারেন। আপনি যদি কেবল অন্য হোস্টকে সংযোগ থেকে আটকাতে চান তবে আপনার পরিবর্তে iptables বা TCP র্যাপারগুলি ব্যবহার করা উচিত।
প্রথমে ডিফল্ট প্রমাণীকরণের পদ্ধতিগুলি সরান:
PasswordAuthentication no
PubkeyAuthentication no
তারপরে Match Address
ফাইলটির শেষে একটি পছন্দসই প্রমাণীকরণের পদ্ধতি যুক্ত করুন। স্থাপন Match
যেহেতু এটি পরে কনফিগারেশন লাইন পরবর্তী পর্যন্ত শর্তাধীন ব্লক ভিতরে স্থাপন করা হয় ফাইলের শেষ পর্যন্ত, গুরুত্বপূর্ণ Match
লাইন। উদাহরণ স্বরূপ:
Match Address 127.0.0.*
PubkeyAuthentication yes
অন্যান্য ক্লায়েন্টরা এখনও সংযোগ করতে সক্ষম, তবে লগইনগুলি ব্যর্থ হবে কারণ কোনও প্রমাণীকরণের উপলভ্য নেই।
ম্যাচের যুক্তিগুলি এবং অনুমোদিত শর্তযুক্ত কনফিগারেশন বিকল্পগুলি sshd_config ম্যান পৃষ্ঠাতে নথিভুক্ত করা হয়েছে । মিলের ধরণগুলি ssh_config ম্যান পৃষ্ঠাতে নথিভুক্ত করা হয় ।
#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 অস্বীকার করা হয়েছে।
পূর্ববর্তী উত্তরগুলি প্রসারিত করতে এসএসএইচ ডেমনটির জন্য এখানে কিছু অতিরিক্ত কনফিগারেশন রয়েছে:
ফাইলের 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
এই উদাহরণে, ইউজারালিয়াসের জন্য সর্বজনীন কী কেবল প্রদত্ত ঠিকানা থেকে কার্যকর হবে।