আমার এসএসএইচ সার্ভারের আশেপাশে সুরক্ষা একেবারেই দুর্গম হয় কিনা তা নিশ্চিত করতে আমি কী ব্যবস্থা নিতে পারি / উচিত?
এটি শুরু থেকে সম্প্রদায় উইকি হবে, সুতরাং লোকেরা তাদের সার্ভারগুলি সুরক্ষিত করতে কী করে তা দেখতে দিন।
আমার এসএসএইচ সার্ভারের আশেপাশে সুরক্ষা একেবারেই দুর্গম হয় কিনা তা নিশ্চিত করতে আমি কী ব্যবস্থা নিতে পারি / উচিত?
এটি শুরু থেকে সম্প্রদায় উইকি হবে, সুতরাং লোকেরা তাদের সার্ভারগুলি সুরক্ষিত করতে কী করে তা দেখতে দিন।
উত্তর:
পাসওয়ার্ডের পরিবর্তে প্রমাণীকরণের জন্য পাবলিক / প্রাইভেট কী জুড়ি ব্যবহার করুন।
সার্ভার অ্যাক্সেস করতে হবে এমন প্রতিটি কম্পিউটারের জন্য একটি পাসফ্রেজ-সুরক্ষিত এসএসএইচ কী তৈরি করুন:
ssh-keygen
অনুমোদিত কম্পিউটারগুলি থেকে সর্বজনীন-কী এসএসএইচ অ্যাক্সেসের অনুমতি দিন:
~/.ssh/id_rsa.pub
প্রতিটি কম্পিউটারের সামগ্রীগুলি ~/.ssh/authorized_keys
সার্ভারের স্বতন্ত্র লাইনে অনুলিপি করুন বা ssh-copy-id [server IP address]
আপনি যে কম্পিউটারে অ্যাক্সেস দিচ্ছেন তা চালিয়ে যান (আপনাকে প্রম্পটে সার্ভারের পাসওয়ার্ড দিতে হবে)।
পাসওয়ার্ড এসএসএইচ অ্যাক্সেস অক্ষম করুন:
খুলুন /etc/ssh/sshd_config
, যে লাইনটি বলেছে #PasswordAuthentication yes
তা সন্ধান করুন এবং এতে পরিবর্তন করুন PasswordAuthentication no
। পরিবর্তনটি প্রয়োগ করতে এসএসএইচ সার্ভার ডেমন পুনরায় চালু করুন sudo service ssh restart
।
এখন, সার্ভারে এসএসএইচ করার একমাত্র সম্ভাব্য উপায় হ'ল একটি লাইন মেলে এমন কী ব্যবহার করা ~/.ssh/authorized_keys
। এই পদ্ধতিটি ব্যবহার করে, আমি নিষ্ঠুর বলের আক্রমণগুলির বিষয়ে চিন্তা করি না কারণ তারা আমার পাসওয়ার্ডটি অনুমান করলেও এটি প্রত্যাখাত হবে। পাবলিক / প্রাইভেট কী জুটিটিকে জোর করে চাপিয়ে দেওয়া আজকের প্রযুক্তি দিয়ে অসম্ভব ।
আমি সুপারিশ করেছিলাম:
ব্রুট ফোর্স লগইন প্রচেষ্টা রোধ করতে ব্যর্থ 2ban ব্যবহার করা ।
এসএসএইচ এর মাধ্যমে লগ ইনকে রুট হিসাবে অক্ষম করা হচ্ছে। এর অর্থ একটি আক্রমণকারীকে ব্যবহারকারীর নাম এবং পাসওয়ার্ড উভয়ই খুঁজে বের করতে হয়েছিল যাতে আক্রমণটি আরও জটিল করে তোলে।
PermitRootLogin no
আপনার যোগ করুন /etc/ssh/sshd_config
।
সার্ভারে এসএসএইচ করতে পারে এমন ব্যবহারকারীদের সীমাবদ্ধ। হয় গোষ্ঠী দ্বারা বা কেবল নির্দিষ্ট ব্যবহারকারীদের দ্বারা।
যোগ AllowGroups group1 group2
বা AllowUsers user1 user2
সীমিত করতে যারা সার্ভারে SSH পারবেন না।
sshd
নিজেকে sshd পুনরায় চালু করার আগে আপনার কনফিগারটি সর্বদা কার্যকর করুন , নিজেকে মেশিন থেকে লক করা এড়ানোর জন্য। বিশদগুলির জন্য এই ব্লগটি দেখুন - sshd -T
মূলটি পুনরায় চালু করার আগে কোনও কনফিগার পরিবর্তনের পরে চলুন sshd
। এছাড়াও, আপনি যখন কনফিগারেশন পরিবর্তন করবেন তখন মেশিনে একটি এসএসএইচ সেশনটি খোলা থাকুন এবং যতক্ষণ না আপনি উল্লিখিত কনফিগারেশনটি যাচাই করেছেন এবং সম্ভবত কোনও এসএসএইচ লগইন না করেছেন ততক্ষণ এটি বন্ধ করবেন না।
অন্যান্য উত্তরগুলি সুরক্ষা সরবরাহ করে তবে আপনি একটি কাজ করতে পারেন যা আপনার লগগুলিকে আরও শান্ত করে তুলবে এবং আপনার অ্যাকাউন্ট থেকে লক হয়ে যাওয়ার সম্ভাবনা কম হবে:
22 পোর্ট থেকে অন্যটিতে সার্ভারটি সরান। হয় আপনার গেটওয়ে, বা সার্ভারে।
এটি সুরক্ষা বাড়ায় না, তবে এর অর্থ এই যে সমস্ত র্যান্ডম ইন্টারনেট স্ক্যানারগুলি আপনার ফাইলগুলিতে লগ করতে পারে না।
HOTP বা TOTP দিয়ে দুটি ফ্যাক্টর প্রমাণীকরণ সক্ষম করুন । এটি ১৩.১০ এর পরে পাওয়া যায়।
এটিতে এখানে অন্য উত্তরের মতো পাসওয়ার্ড প্রমাণীকরণের উপরে সর্বজনীন কী প্রমাণীকরণ ব্যবহার করা অন্তর্ভুক্ত রয়েছে তবে ব্যবহারকারীর প্রমাণ প্রয়োজন যে তিনি তার ব্যক্তিগত কী ছাড়াও তার দ্বিতীয়-গুণক-ডিভাইসটি ধারণ করেছেন holds
সারাংশ:
sudo apt-get install libpam-google-authenticator
প্রতিটি ব্যবহারকারীর google-authenticator
কমান্ডটি চালিত করুন , যা ~/.google-authenticator
তাদের দুটি ফ্যাক্টর ডিভাইস (যেমন গুগল প্রমাণীকরণকারী অ্যান্ড্রয়েড অ্যাপ্লিকেশন) তৈরি করে এবং তাদেরকে কনফিগার করতে সহায়তা করে।
সম্পাদনা করুন /etc/ssh/sshd_config
এবং সেট করুন:
ChallengeResponseAuthentication yes
PasswordAuthentication no
AuthenticationMethods publickey,keyboard-interactive
এতে sudo service ssh reload
আপনার পরিবর্তনগুলি বেছে নিতে দৌড়াও /etc/ssh/sshd_config
।
/etc/pam.d/sshd
লাইনটি সম্পাদনা করুন এবং প্রতিস্থাপন করুন:
@include common-auth
সঙ্গে:
auth required pam_google_authenticator.so
বিভিন্ন কনফিগারেশন বিকল্পের আরও বিশদটি আমার গত বছরের ব্লগ পোস্ট: উবুন্টুতে আরও ভাল দুটি ফ্যাক্টর ssh প্রমাণীকরণ ।
সঠিকভাবে লগইন তথ্য সরবরাহ করতে ব্যর্থ হয়েছে এমন এসএসডি ব্লক ক্লায়েন্টের আইপি তৈরি করুন " অস্বীকৃতি " এই কাজটি বেশ কার্যকরভাবে করতে পারে। আমি এটি আমার সমস্ত লিনাক্স বাক্সগুলিতে ইনস্টল করেছি যা একরকমভাবে দুর্দান্ত বাইরে থেকে পৌঁছতে পারে।
এটি নিশ্চিত করবে যে এসএসএইচডি-র উপর জোর আক্রমণগুলি কার্যকর হবে না, তবে মনে রাখবেন (!) আপনি যদি পাসওয়ার্ড ভুলে যান তবে আপনি নিজেকে এইভাবে লকিং আপ করতে পারেন। এটি আপনার কোনও অ্যাক্সেস নেই এমন রিমোট সার্ভারে সমস্যা হতে পারে।
এখানে করা একটি সহজ কাজ: ইউফডাব্লু ইনস্টল করুন ("জটিল জটিল ফায়ারওয়াল") এবং আসন্ন সংযোগগুলিকে সীমাবদ্ধ করতে এটি ব্যবহার করুন।
কমান্ড প্রম্পট থেকে, টাইপ করুন:
$ sudo ufw limit OpenSSH
যদি ufw ইনস্টল না করা থাকে তবে এটি করুন এবং আবার চেষ্টা করুন:
$ sudo aptitude install ufw
অনেক আক্রমণকারী আপনার নিখুঁত পাসওয়ার্ডগুলির জন্য আপনার এসএসএইচ সার্ভারটি ব্যবহার করার চেষ্টা করবে। এটি একই আইপি ঠিকানা থেকে প্রতি 30 সেকেন্ডে 6 সংযোগের অনুমতি দেবে।
আমি যদি কিছু অতিরিক্ত সুরক্ষা পেতে চাই বা কিছু কর্পোরেট নেটওয়ার্কের গভীরে এসএসএইচ সার্ভারগুলি অ্যাক্সেস করতে চাই তবে আমি অজ্ঞাতনামা সফটওয়্যার টোর ব্যবহার করে একটি গোপন পরিষেবা সেটআপ করি ।
localhost
।/etc/tor/torrc
। সেট HiddenServiceDir /var/lib/tor/ssh
এবং HiddenServicePort 22 127.0.0.1:22
।var/lib/tor/ssh/hostname
। এর মতো একটি নাম আছে d6frsudqtx123vxf.onion
। এটি হিডেন সার্ভিসের ঠিকানা।$HOME/.ssh/config
কিছু লাইন খুলুন এবং যুক্ত করুন:
Host myhost
HostName d6frsudqtx123vxf.onion
ProxyCommand socat STDIO SOCKS4A:127.0.0.1:%h:%p,socksport=9050
তবুও আমার স্থানীয় হোস্টে টোর দরকার। এটি ইনস্টল করা থাকলে আমি প্রবেশ করতে পারি ssh myhost
এবং এসএসএইচ টরের মাধ্যমে একটি সংযোগ খুলবে। অন্যদিকে থাকা এসএসএইচ সার্ভারটি কেবল লোকালহোস্টে তার বন্দরটি খুলবে। সুতরাং কেউ এটিকে "সাধারণ ইন্টারনেট" এর মাধ্যমে সংযুক্ত করতে পারে না।
এই বিষয়ে একটি দেবিয়ান প্রশাসনিক নিবন্ধ রয়েছে। এটি বেসিক এসএসএইচ সার্ভার কনফিগারেশন এবং ফায়ারওয়াল বিধিগুলিও অন্তর্ভুক্ত করে। এটি কোনও এসএসএইচ সার্ভারকে শক্ত করার পক্ষেও আগ্রহী হতে পারে।
সেখানে নিবন্ধটি দেখুন: এসএসএইচ অ্যাক্সেস সুরক্ষিত রাখা ।
এসএসএইচ কঠোর করার জন্য আমার পদ্ধতি ... জটিল ... নীচের আইটেমগুলি আমি কীভাবে এটি করি তার শর্তাবলী, আমার নেটওয়ার্ক (গুলি) এর প্রান্ত-সর্বাধিক সীমানা থেকে সার্ভারগুলি পর্যন্ত।
ব্লকলিস্টে পরিচিত পরিষেবা স্ক্যানার এবং স্বাক্ষর সহ আইডিএস / আইপিএসের মাধ্যমে ট্র্যাফিকের সীমানা-স্তরীয় ফিল্টারিং। আমি আমার সীমান্ত ফায়ারওয়াল (এটি আমার পদ্ধতির, একটি পিএফএসেন্স অ্যাপ্লায়েন্স) এর মাধ্যমে স্নোর্টের মাধ্যমে এটি অর্জন করি। কখনও কখনও, আমি যদিও এটি করতে পারি না যেমন আমার ভিপিএস দিয়ে।
এসএসএইচ পোর্ট (গুলি) এর ফায়ারওয়াল / নেটওয়ার্ক ফিল্টারিং। আমি স্পষ্টভাবে কেবলমাত্র কয়েকটি সিস্টেমকে আমার এসএসএইচ সার্ভারগুলিতে পৌঁছানোর অনুমতি দিই। এটি হয় হয় আমার নেটওয়ার্কের সীমান্তে পিএফসেন্স ফায়ারওয়ালের মাধ্যমে, বা প্রতিটি সার্ভারের ফায়ারওয়ালগুলি স্পষ্টভাবে কনফিগার করা হচ্ছে। এমন কিছু ক্ষেত্রে রয়েছে যেখানে আমি এটি করতে পারি না, যদিও (ব্যক্তিগত পেন টেস্টিং বা সুরক্ষা পরীক্ষার ল্যাব পরিবেশ যেখানে ফায়ারওয়ালগুলি পরীক্ষার জিনিসগুলিতে সহায়তা করবে না) বাদে এটি প্রায়শই কখনও হয় না।
আমার পিএফএসেন্স, বা একটি সীমান্ত ফায়ারওয়াল NAT- এর অভ্যন্তরীণ নেটওয়ার্কের সাথে এবং ইন্টারনেট এবং সিস্টেমগুলি থেকে পৃথক করে, সার্ভারগুলিতে ভিপিএন-কেবল অ্যাক্সেস । সার্ভারগুলিতে যাওয়ার জন্য আমার নেটওয়ার্কগুলিতে ভিপিএন পেতে হবে, কারণ এর মতো কোনও ইন্টারনেট-মুখী বন্দর নেই। এটি অবশ্যই আমার সমস্ত ভিপিএসের জন্য কাজ করে না, তবে # 2 এর সাথে মিলে আমি একটি ভিপিএসকে সেই সার্ভারে ভিপিএনিংয়ের 'গেটওয়ে' হতে পারি এবং তারপরে অন্যান্য বাক্সে আইপি করার অনুমতি দিতে পারি। এইভাবে, আমি ঠিক কীভাবে এসএসএইচ করতে পারি বা করতে পারি না তা জানি - আমার একটি বাক্স যা ভিপিএন। (বা, পিএফসেন্সের পিছনে আমার হোম নেটওয়ার্কে, আমার ভিপিএন সংযোগ, এবং আমি ভিপিএন অ্যাক্সেস সহ একমাত্র ব্যক্তি)।
যেখানে # 3 কার্যকর করা যায় না, ফেইল 2 ব্যাবহার করা হয়, 4 টি ব্যর্থ চেষ্টার পরে ব্লক করার জন্য কনফিগার করা এবং আইপিগুলিকে এক ঘন্টা বা তার বেশি সময় অবরুদ্ধ করার জন্য ক্রমাগত ব্রুটেফোর্সিংয়ের সাথে আক্রমণকারী লোকদের বিরুদ্ধে একটি শালীন সুরক্ষা - কেবল ফায়ার 2 এবং মেহের সাথে ফায়ারওয়ালে স্বয়ংক্রিয়ভাবে তাদের ব্লক করুন। ব্যর্থ 2ban কনফিগার করা যদিও ব্যথা ...
এসএসএইচ পোর্ট পরিবর্তন করে পোর্ট অবরুদ্ধকরণ। তবে কোনও অতিরিক্ত সুরক্ষা ব্যবস্থা ছাড়াই এটি করা ভাল ধারণা নয় - "ইতিমধ্যে সুরক্ষা মাধ্যমে সুরক্ষা" এর মন্ত্রটি ইতিমধ্যে অনেক ক্ষেত্রে খণ্ডন ও বিতর্কিত হয়েছে। আমি আইডিএস / আইপিএস এবং নেটওয়ার্ক ফিল্টারিংয়ের সাথে একত্রে এটি করেছি, তবে এটি এখনও নিজের হাতে করা খুব খারাপ কাজ।
দ্বৈত সুরক্ষার দ্বি-ফ্যাক্টর প্রমাণীকরণ সমাধানের মাধ্যমে ম্যান্ডোরিয়াল দ্বি-ফ্যাক্টর প্রমাণীকরণ । আমার এসএসএইচ সার্ভারের প্রত্যেকেরই এটিতে ডুও কনফিগার করা আছে, যাতে এমনকি প্রবেশের জন্য, 2 এফএ অনুরোধ জানানো হয় এবং আমাকে প্রতিটি অ্যাক্সেস নিশ্চিত করতে হবে। (এটি চূড়ান্ত সহায়ক বৈশিষ্ট্য - কারণ কারও কাছে আমার পাসফ্রেজ রয়েছে বা ভেঙে গেলেও তারা ডুও পিএএম প্লাগইনগুলি পার করতে পারে না)। এটি আমার এসএসএইচ সার্ভারের অননুমোদিত অ্যাক্সেস থেকে সবচেয়ে বড় সুরক্ষাগুলির মধ্যে একটি - প্রতিটি ব্যবহারকারীকে ডুয়ের একটি কনফিগার ব্যবহারকারীর সাথে আবদ্ধ হওয়া আবশ্যক, এবং যেহেতু আমার একটি সীমাবদ্ধ সেট রয়েছে তাই কোনও নতুন ব্যবহারকারী সিস্টেমে নিবন্ধভুক্ত হতে পারবেন না।
এসএসএইচ সুরক্ষিত করার জন্য আমার দুই সেন্ট। বা, অন্ততপক্ষে আমার ধারণাগুলি কাছে।
আপনি গুগল প্রমাণীকরণকারীর পরিবর্তে রেডহ্যাট থেকে ফ্রিওটিপি অ্যাপটি চেকআউট করতে চাইতে পারেন। কখনও কখনও অ্যাপ্লিকেশন আপডেট করার সময়, তারা আপনাকে লক আউট করে! ;-)
আপনি যদি অন্য হার্ডওয়্যার টোকেন যেমন ইউবিকি বা ইটোকেন পাস বা এনজি ব্যবহার করতে চান বা আপনার যদি অনেক ব্যবহারকারী বা অনেক সার্ভার থাকে তবে আপনি একটি ওপেনসোর্স দুটি ফ্যাক্টর প্রমাণীকরণ ব্যাকএন্ড ব্যবহার করতে চাইতে পারেন।
ইদানীং আমি এই সম্পর্কে একটি হাউটো লিখেছি ।
আমি সম্প্রতি এটি করার জন্য একটি ছোট টিউটোরিয়াল লিখেছি। মূলত, আপনাকে পিকেআই ব্যবহার করা দরকার এবং আমার টিউটোরিয়ালটি আরও সুরক্ষার জন্য কীভাবে দ্বি-কারখানা প্রমাণীকরণ ব্যবহার করতে হবে তাও দেখায়। এমনকি যদি আপনি এই জিনিসগুলির কোনও একটিই না ব্যবহার করেন তবে দুর্বল সাইফার স্যুটগুলি এবং অন্যান্য বেসিকগুলি সরিয়ে সার্ভারকে সুরক্ষিত করার বিষয়ে কিছু টিডব্যাট রয়েছে। https://joscor.com/blog/hardening-openssh-server-ubuntu-14-04/
বিপুল সংখ্যক ব্যবহারকারী / শংসাপত্রের জন্য এলডিএপি সংহতকরণ বিবেচনা করুন। বড় প্রতিষ্ঠানগুলি শংসাপত্রগুলি প্রমাণীকরণের জন্য বা ইমেলগুলিতে স্বাক্ষর করার জন্য ব্যবহার করা হয় না কেন, ব্যাজ বা ফোবগুলিতে সংরক্ষিত শংসাপত্রগুলির ব্যবহারকারীর শংসাপত্র এবং শংসাপত্রগুলির জন্য একটি সংগ্রহস্থল হিসাবে LDAP ব্যবহার করে। উদাহরণগুলির মধ্যে ওপেনএলডিএপি, ওপেনডিজে, অ্যাক্টিভ ডিরেক্টরি, ওরাকল ইউনিভার্সাল ডিরেক্টরি, আইবিএম ডিরেক্টরি সার্ভার, স্নেয়ার ওয়ার্কস অন্তর্ভুক্ত রয়েছে ...
কম্পিউটার এবং গোষ্ঠীগুলিও এলডিএপিতে কেন্দ্রীয় শংসাপত্রের ব্যবস্থাপনায় পরিচালিত হতে পারে। এই ভাবে সহায়তা ডেস্কের বিশাল জনগোষ্ঠীর মোকাবেলা করার জন্য একটি স্টপ শপ থাকতে পারে।
এখানে CentOS ইন্টিগ্রেশনের লিঙ্ক রয়েছে: http://itdavid.blogspot.com/2013/11/howto-configure-openssh-to-fetch-public.html
আপনি জিওআইপি ডাটাবেস ব্যবহার করে উত্সের ভিত্তিতে অবরুদ্ধ করতে পারেন।
মূলত আপনি যদি মার্কিন যুক্তরাষ্ট্রে থাকেন তবে রাশিয়ায় কারও জন্য আপনার এসএসএইচে সংযোগ স্থাপন করার কোনও কারণ নেই তাই তারা স্বয়ংক্রিয়ভাবে অবরুদ্ধ হয়ে যাবে।
স্ক্রিপ্টটি এখানে পাওয়া যাবে: https://www.axllent.org/docs/view/ssh-geoip/
আপনি সেই আইপিগুলিতে / সমস্ত ট্র্যাফিক স্বয়ংক্রিয়ভাবে ফেলে দেওয়ার জন্য এটিতে আইপটিবল কমান্ডগুলি (আমি আমার ফোঁটাগুলির জন্য করেছি) যুক্ত করতে পারেন।