সার্ভার সিকিউরিটি: লগইন দিয়েই শুরু (Debian)

যে কোন কিছুর ক্ষতি করতে চাইলে সবার আগে সেটার কাছে যেতে হয়। এটা সার্ভার এর ক্ষেত্রেও সত্য। আপনার সার্ভারের যে কোন ধরনের ক্ষতি করতে চাইলে আগে সার্ভারে প্রবেশ করতে হবে। যদি সরাসরি সামনে থাকে তবে তো কোন কথায় নেই, কিন্তু যদি দুরে থাকে তবে ঐ সার্ভারে লগইন করা ছাড়া ক্ষতি হবার সম্ভাবনা মাত্র একটা যেটা আমরা DOS বা DDOS আক্রমন বলি (এটা নিয়ে বিস্তর আলোচনা আছে, তবে সেটা পরে)। সুতরাং শুধুমাত্র লগইন দিয়েই মোটামুটি ৮০% সিকিউরিটি নিশ্চিত করা যায়।

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

মোদ্দাকথা আপনার সার্ভারে বহিঃপ্রবেশ বা অনুঃপ্রবেশ বন্ধ করতে হবে এবং শুধুমাত্র অনুমোদিত ব্যবহারকারী ছাড়া আর কেউ যেন প্রবেশ করতে না সে বিষয় খুবই সচেষ্ট থাকতে হবে। প্রতিটা সার্ভারে একটা কমন ইউজার থাকে (root) এবং ওটাই সর্বময় ক্ষমতার অধীকারী আবার ওটাই সবার আক্রমনের লক্ষ্য হয়ে দাড়ায়। কারন ঐ ইউজারকে দখল করা মানে সার্ভারের সমস্ত ক্ষমতা নিয়ে নেয়া।

এই ক্ষুদ্র কর্মজজ্ঞ শুরু করার আগে দুইটা বিষয়ে নুন্যতম জ্ঞান দরকার। একটি হচ্ছে “ইউজার” এবং অপরটি হচ্ছে “পোর্ট”।
প্রতিটা অপরেটিং সিসেটেমে প্রবেশের জন্য একটা ইউজার দরকার হয় যা লিনাক্স ক্ষেত্রেও প্রযোজ্য। তবে লিনাক্স এ সিকিউরিটির জন্য ইউজারদের ভিন্নতা আছে। আপাতত তিন ধরনের ইউজার মনে রাখলেই হবে:

১. সুপার ইউজার : এটিই আসলে root, যাকে নিয়ে এত মাথাব্যাথা এবং যাকে নিয়ে কাজ করাও অনেক বেশী মজা।

২. সিস্টেম ইউজার : প্রতিটা সার্ভিস চলার জন্য একটা করে ইউজার থাকে। এই গুলি শুধুমাত্র ঐ সার্ভিস পরিচালনা করতে পারে, এদের আর কোন ক্ষমতা নেই (ক্ষেত্রবিশেষে এইগুলিও মারাত্মক আকার ধারন করতে পারে)

৩. অন্যান্য ইউজার : এই গুলি আপনি তৈরিও করবেন এবং তাদের পারমিশনও আপনিই দিবেন। সহজ কথায় আমরা যে ইউজার তৈরি করি সেগুলিই এর অন্তর্গত এবং এই ইউজারগুলি ডিফল্ট পারমিশন নিয়ে তৈরি হয় যা পরে পরিবর্তন করা যায়।

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

এবার একটু পোর্ট নিয়ে মাথা খাটাই। প্রতিটা অপারেটিং সিষ্টেমেই মোট ৬৫,৫৩৬ টা পোর্ট আছে। পোর্ট আসলে এককেটা দরজা বলতে পারেন। কোনটা মেইনগেট, কোনটা বেডরুমের গেট, কোনটা বাথরুমের গেট কোনটা পেছন দরজা ইত্যাদি অনেক দরজা থাকতে পারে। তাই আপনাকে জানতে হবে কোন দরজা কোন কাজের, কোনটা খোলা থাকবে এবং কার জন্য খোলা থাকবে।

৬৫,৫৩৬ টা পোর্টের কাহিনী মনে রাখা বেশ কঠিন। আপাতত শুধু এই কাজের জন্য মনে রাখুন ২২ পোর্ট হচ্ছে SSH এর জন্য default পোর্ট এবং যে কোন পোর্ট পরিবর্তন করতে চাইলে আপনাকে ১০২৪ এর চেয়ে বেশী কোন পোর্ট ব্যবহার করতে হবে। কারন ০-১০২৪ পর্যন্ত রিজার্ভ বা ব্যবহৃত পোর্ট। সার্ভার এ্যাডমিনিষ্ট্রেশেন কখনই default সেটিংস না রাখাটাও কিন্তু ছোট খাট সিকিউরিটি। যেহেতু ২২ পোর্ট SSH এর জন্য default তাই এটি পরিবর্তন করা জরুরী। নিচের কাজটি করুন:

# vim /etc/ssh/sshd_config

#Port ২২

Port 8001

 

এখানে default পোর্ট ২২ থাকে, মুছে দিয়ে নিজের পছন্দমত একটা পোর্ট লিখে দিন। মনে রাখবেন এর পরে লগইন করতে হলে  ssh -p 8001 xx.xx.xx.xx  লিখেত হবে।

 

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

১. সবার আগে root এর লগইন বন্ধ করতে হবে। তার মানে এই নয় যে একেবারে বন্ধ হয়ে যাবে এবং সেটা করাটাও সঠিক কাজ না। root ইউজারকে শুধুমাত্র অথোরাইজড কাজের জন্য ব্যবহার করা হবে এবং কনসোল লগইন বা সরাসরি সামনে বসে লগইন করার অনুমতি থাকবে। অর্থাৎ root দিয়ে রিমোট লগইন বা SSH লগইন করা যাবে না।

SSH এর config ফাইল খুলুন এবং ” PermitRootLogin” খুজে বার করেন।

# vim /etc/ssh/sshd_config

PermitRootLogin no

এর শেষে ডিফল্ট yes থাকে, ওটাকে মুছে দিয়ে no করে দিন। ব্যাস বন্ধ হয়ে গেছে, সার্ভিস রিষ্টার্ট করতে ভুলবেন না। আর হ্যা, এখনই লগআউট করবেন না তবে আবার লগইন করতে সমস্যায় পড়বেন। root লগইন তো বন্ধ হয়ে গেছে এখন আপনি কাজ করবেন কিভাবে? মনে রাখবেন root ইউজারকে সবাই চেনে, তাই এই নাম ধরে আক্রমন খুব সহজ। তাই নিজে একটা ইউজার তৈরি করুন এবং সেটা দিয়ে লগইন করুন। আপনার সেই ইউজারকে আবার root পারমিশন দিযেন না, তাহলে তো ঘটনা একই থেকে গেল। আপনার নরমাল ইউজার দিয়ে লগইন করে SU করে আপনি root এর এ্যাকসেস নিতে পারবেন। এবার অন্য একটা টার্মিনাল থেকে পরীক্ষা করুন সব ঠিক আছে কি না।

এবার সিষ্টেম এবং অন্যান্য ইউজারদের লগইন এ্যকসেস বন্ধ করতে হবে। এটা আরও সহজ। password ফাইল এ গিয়ে সমস্ত সিষ্টেম ইউজার লাইনের শেষে /bin/false লিখে দিন এবং সমস্ত অন্যান্য ইউজারের লাইনের শেষে /bin/nologin লিখে দিন। যেই ইউজার দিয়ে আপনি লগইন করবেন তার পাশে /bin/bash লিখেত হবে।

avahi:x:106:113:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false

userabc:x:1003:1002:,,,:/home/userabc:/bin/nologin

 

উপরের কাজগুলি শেষ করে ৮০% নিশ্চন্ত হতে পারেন তবে ১০০% নয়। এই বিষয়ে আরও পড়াশুনা করতে পারেন।