ভূমিকা: সার্ভার হার্ডেনিং কী এবং এটি কেন গুরুত্বপূর্ণ?
বর্তমান ডিজিটাল যুগে যেকোনো প্রতিষ্ঠানের জন্য তথ্য ও ডেটার নিরাপত্তা বজায় রাখা একটি প্রধান চ্যালেঞ্জ। বিশ্বজুড়ে পরিচালিত বিপুল সংখ্যক ওয়েব সার্ভার, ক্লাউড ইনফ্রাস্ট্রাকচার এবং এন্টারপ্রাইজ অ্যাপ্লিকেশন লিনাক্স (Linux) অপারেটিং সিস্টেমের ওপর নির্ভর করে চলে। ওপেন সোর্স এবং অত্যন্ত স্থিতিশীল হওয়ার কারণে লিনাক্স জনপ্রিয় হলেও, ডিফল্ট কনফিগারেশনে একটি লিনাক্স সার্ভার পুরোপুরি নিরাপদ থাকে না। এখানেই আসে Server Hardening বা সার্ভার হার্ডেনিংয়ের বিষয়টি।
Server Hardening হলো এমন একটি ধারাবাহিক কারিগরি প্রক্রিয়া যার মাধ্যমে একটি সিস্টেমের সম্ভাব্য সাইবার আক্রমণ ক্ষেত্র (Attack Surface) কমিয়ে আনা হয়। সিস্টেমের অপ্রয়োজনীয় সার্ভিস বন্ধ করা, সিকিউরিটি প্যাচ ইনস্টল করা, অ্যাক্সেস কন্ট্রোল কঠোর করা এবং কার্নেল অপ্টিমাইজেশনের মাধ্যমে একটি সার্ভারকে বাইরের ও ভেতরের সাইবার হুমকি থেকে সুরক্ষিত করাই হলো এর মূল লক্ষ্য। কোনো একটি নতুন লিনাক্স সার্ভার সেটআপ করার পর সেটিকে প্রোডাকশন এনভায়রনমেন্টে নেওয়ার আগে হার্ডেনিং সম্পন্ন করা অপরিহার্য।
১. সিস্টেম প্যাকেজ হালনাগাদ ও অপ্রয়োজনীয় সফটওয়্যার অপসারণ
যেকোনো লিনাক্স সার্ভার সুরক্ষার প্রথম ধাপ হলো অপারেটিং সিস্টেম ও এতে ইনস্টল করা প্রতিটি প্যাকেজ আপডেট রাখা। হ্যাকাররা সাধারণত পুরোনো এবং অসংশোধিত সিকিউরিটি বাগের (Vulnerabilities) সুযোগ নিয়ে সিস্টেমে অনুপ্রবেশ করে।
নিয়মিত সিকিউরিটি আপডেট দেওয়া: Ubuntu/Debian সিস্টেমে apt update && apt upgrade এবং RHEL/CentOS/Rocky Linux সিস্টেমে dnf update কমান্ডের মাধ্যমে নিয়মিত আপডেট সম্পন্ন করতে হয়। নিরাপত্তা সুনিশ্চিত করতে অটোমেটিক সিকিউরিটি আপডেটের জন্য Unattended-Upgrades বা dnf-automatic কনফিগার করা একটি ভালো অনুশীলন।
অপ্রয়োজনীয় সার্ভিস বন্ধ করা: ডিফল্ট লিনাক্স ইনস্টলেশনে অনেক সময় এমন কিছু ব্যাকগ্রাউন্ড সার্ভিস ও পোর্ট চালু থাকে যা বাস্তবে প্রয়োজন হয় না। systemctl list-unit-files --type=service ব্যবহার করে সমস্ত চালু সার্ভিস পরীক্ষা করুন এবং অব্যবহৃত সার্ভিসগুলো বন্ধ (disable) করে দিন। সিস্টেমে যত কম সফটওয়্যার থাকবে, সাইবার আক্রমণের ঝুঁকি তত কমে আসবে।
২. SSH (Secure Shell) অ্যাক্সেস কঠোরভাবে সুরক্ষিত করা
রিমোট লিনাক্স সার্ভার পরিচালনার জন্য SSH সবচেয়ে বহুল ব্যবহৃত মাধ্যম। কিন্তু দুর্বল SSH কনফিগারেশন সাইবার হামলাকারীদের জন্য সার্ভারে প্রবেশ করার সহজ দরজা হয়ে দাঁড়ায়। SSH সুরক্ষিত করতে নিচের পদক্ষেপগুলো গ্রহণ করা উচিত:
ডিফল্ট পোর্ট পরিবর্তন: SSH সাধারণত ডিফল্ট ২২ (22) নম্বর পোর্টে চলে। স্বয়ংক্রিয় বট নেটওয়ার্কগুলোর পোর্ট স্ক্যানিং এড়াতে /etc/ssh/sshd_config ফাইল থেকে ডিফল্ট পোর্ট পরিবর্তন করে যেকোনো একটি কাস্টম পোর্টে (যেমন: ২২২২ বা ৪৮৫৭) সেট করুন।
রুট (Root) লগইন নিষ্ক্রিয় করা: সরাসরি Root হিসেবে লগইন করার সুযোগ রাখা অত্যন্ত বিপজ্জনক। SSH কনফিগারেশন ফাইলে PermitRootLogin no সেট করুন। এর ফলে হামলাকারীরা রুট পাসওয়ার্ড ক্র্যাক করার সুযোগ পাবে না। রুট প্রিভিলেজের কাজের জন্য সাধারণ ইউজার তৈরি করে sudo কমান্ড ব্যবহার করা উচিত।
পাসওয়ার্ড ভিত্তিক লগইন বন্ধ ও SSH Key ব্যবহার: পাসওয়ার্ড ভিত্তিক সিস্টেম ব্রুট ফোর্স (Brute Force) আক্রমণের শিকার হতে পারে। তাই PasswordAuthentication no সেট করে শুধুমাত্র SSH Public/Private Key ভিত্তিক অথেনটিকেশন চালুর নিয়ম কার্যকর করুন।
৩. ফায়ারওয়াল কনফিগারেশন ও সাইবার আক্রমণ প্রতিরোধ
নেটওয়ার্ক ট্রাফিক নিয়ন্ত্রণ করা এবং শুধুমাত্র অনুমোদিত পোর্টগুলো খোলা রাখা সার্ভার হার্ডেনিংয়ের অন্যতম ভিত্তি। একটি শক্তিশালী ফায়ারওয়াল কনফিগারেশন অচেনা ও ক্ষতিকর আইপি (IP) ঠিকানা থেকে আসার ট্রাফিক আটকে দেয়।
UFW অথবা Firewalld এর সঠিক ব্যবহার: Ubuntu/Debian এর জন্য UFW (Uncomplicated Firewall) এবং RHEL ভিত্তিক ডিস্ট্রিবিউশনের জন্য Firewalld বা iptables ব্যবহার করা হয়। ডিফল্ট ইনকামিং ট্রাফিক পুরোপুরি Block (Deny All) করে রেখে কেবল প্রয়োজনীয় পোর্ট (যেমন: HTTP-80, HTTPS-443, Custom SSH Port) উন্মুক্ত রাখুন।
Fail2ban দিয়ে ব্রুট ফোর্স আক্রমণ ঠেকানো: Fail2ban একটি অত্যন্ত কার্যকর সিকিউরিটি টুল। এটি লিনাক্স সিস্টেমের লগ ফাইল (যেমন: /var/log/auth.log) মনিটর করে। কোনো নির্দিষ্ট IP থেকে ক্রমাগত ভুল পাসওয়ার্ড দিয়ে লগইনের চেষ্টা করা হলে Fail2ban স্বয়ংক্রিয়ভাবে সেই IP টিকে ফায়ারওয়ালের মাধ্যমে নির্দিষ্ট সময়ের জন্য ব্যান (Block) করে দেয়।
৪. ইউজার অ্যাক্সেস ও আইডেন্টিটি ম্যানেজমেন্ট
সার্ভারে একাধিক ব্যবহারকারী থাকলে নিরাপত্তা রক্ষা করা জটিল হয়ে পড়ে। সিস্টেমের অপব্যবহার রোধে Principle of Least Privilege (PoLP) বা সর্বনিম্ন অধিকার নীতি প্রয়োগ করতে হবে।
কঠোর পাসওয়ার্ড নীতি (PAM): সিস্টেমে নতুন পাসওয়ার্ড নির্ধারণের ক্ষেত্রে নির্দিষ্ট দৈর্ঘ্য, ক্যাপিটাল ও স্মল লেটার, সংখ্যা এবং স্পেশাল ক্যারেক্টারের সংমিশ্রণ বাধ্যতামূলক করতে Pluggable Authentication Modules (PAM) কনফিগার করুন। এছাড়া chage কমান্ড ব্যবহার করে পাসওয়ার্ডের মেয়াদ (Expiration Date) নির্দিষ্ট করে দেওয়া সম্ভব।
টু-ফ্যাক্টর অথেনটিকেশন (2FA): গুরুত্বপূর্ণ সার্ভারে SSH লগইনের ক্ষেত্রে Google Authenticator বা Duo Security এর মাধ্যমে 2FA যুক্ত করা অত্যন্ত কার্যকর। এতে পাসওয়ার্ড বা SSH Key লিকেজ হলেও দ্বিতীয় স্তরের সিকিউরিটি কোড ছাড়া কেউ সিস্টেমে প্রবেশ করতে পারবে না।
৫. ফাইল সিস্টেম নিরাপত্তা ও পারমিশন নিয়ন্ত্রণ
লিনাক্স ফাইল সিস্টেমের নিরাপত্তা সঠিক না থাকলে কোনো সাধারণ ব্যবহারকারী বা আপলোড হওয়া ক্ষতিকর স্ক্রিপ্ট পুরো সার্ভার টেকওভার করে নিতে পারে।
সংবেদনশীল ফাইলের পারমিশন পরিবর্তন: /etc/passwd, /etc/shadow, এবং /etc/sudoers এর মতো অতীব গুরুত্বপূর্ণ ফাইলগুলোর পারমিশন কঠোরভাবে বজায় রাখতে হবে। উদাহরণস্বরূপ, shadow ফাইলের পারমিশন এমন হতে হবে যেন শুধুমাত্র রুট ইউজার তা পড়তে পারে (chmod 600 /etc/shadow)।
পার্টিশন মাউন্টিং সিকিউরিটি: সার্ভার সেটআপ করার সময় /tmp, /var, এবং /home এর জন্য আলাদা পার্টিশন তৈরি করা ভালো। /etc/fstab ফাইলে /tmp পার্টিশন মাউন্ট করার সময় noexec, nosuid, nodev ফ্ল্যাগ যুক্ত করে দিলে এই ফোল্ডারে কোনো ক্ষতিকর এক্সিকিউটেবল ফাইল রান হতে পারবে না।
File Integrity Monitoring (FIM): সিস্টেমে কোনো ফাইল অনাকাঙ্ক্ষিতভাবে পরিবর্তিত হচ্ছে কিনা তা শনাক্ত করতে AIDE (Advanced Intrusion Detection Environment) বা Tripwire এর মতো টুল ব্যবহার করুন। এটি ফাইল সিস্টেমের একটি ডাটাবেজ তৈরি রাখে এবং নিয়মিত ফাইল স্ক্যান করে কোনো পরিবর্তন হলে অ্যালার্ট দেয়।
৬. কার্নেল টিউনিং এবং অ্যাডভান্সড সিকিউরিটি (sysctl & SELinux)
লিনাক্স কার্নেল হলো অপারেটিং সিস্টেমের হৃদয়। কার্নেল লেভেলে নিরাপত্তা বৃদ্ধি করতে কিছু নেটওয়ার্ক ও মেমোরি প্যারামিটার পরিবর্তন করা প্রয়োজন।
/etc/sysctl.conf অপ্টিমাইজেশন: কার্নেল সেটিংস পরিবর্তন করে নেটওয়ার্ক ভিত্তিক আক্রমণ (যেমন: SYN Flood, ICMP Redirection, IP Spoofing) ঠেকানো যায়। উদাহরণস্বরূপ:
net.ipv4.tcp_syncookies = 1 (SYN Flood হামলা প্রতিরোধে)
net.ipv4.ip_forward = 0 (IP ফরোয়ার্ডিং বন্ধ রাখতে, যদি না সার্ভারটি রাউটার হিসেবে কাজ করে)
net.ipv4.conf.all.accept_redirects = 0 (ICMP Redirectস বন্ধ করতে)
SELinux বা AppArmor সক্রিয় রাখা: Security-Enhanced Linux (SELinux) বা AppArmor হলো Mandatory Access Control (MAC) মেকানিজম। এগুলো কোনো অ্যাপ্লিকেশন বা প্রসেসকে নির্দিষ্ট সীমার বাইরে ফাইল অ্যাক্সেস করা থেকে বিরত রাখে। অনেক সময় জটিলতার কারণে SELinux বন্ধ (Disabled) রাখা হয়, যা নিরাপত্তার দৃষ্টিকোণ থেকে অনুচিত। সঠিক পলিসি সেট করে SELinux Enforcing মোডে রাখা উচিত।
৭. অডিটিং, নিয়মিত লগিং এবং মনিটরিং
সার্ভার হার্ডেনিং করার পরও সিস্টেমে কী ঘটছে তা সার্বক্ষণিক পর্যবেক্ষণ করা জরুরি। কোনো অনুপ্রবেশ ঘটলে বা অস্বাভাবিক কার্যকলাপ হলে লগ ফাইলই অনুসন্ধানের প্রধান উৎস হিসেবে কাজ করে।
Auditd এর মাধ্যমে অ্যাক্টিভিটি ট্র্যাক করা: লিনাক্স অডিট ডেমোন (auditd) সার্ভারের সমস্ত সিস্টেম কল, ফাইল পরিবর্তন এবং ইউজার অ্যাকশন রেকর্ড করে। গুরুত্বপূর্ণ ফাইল রিড বা রাইট হলে অডিট রুলসের মাধ্যমে সহজেই তা ধরে ফেলা যায়।
সেন্ট্রালাইজড লগিং: সার্ভারের লগ ফাইলগুলো (Syslog/Journald) শুধুমাত্র লোকাল সার্ভারে না রেখে একটি রিমোট লগ সার্ভারে (যেমন: ELK Stack, Graylog) পাঠানো উচিত। এতে মূল সার্ভার কোনো কারণে হ্যাক হলেও হ্যাকাররা লোকাল লগ মুছে ফেলে আলামত নষ্ট করতে পারবে না।
উপসংহার: সার্ভার হার্ডেনিং একটি চলমান প্রক্রিয়া
সার্ভার হার্ডেনিং কোনো এককালীন কাজ নয়, বরং এটি একটি অবিচ্ছিন্ন ও চলমান প্রক্রিয়া (Continuous Process)। প্রতিনিয়ত নতুন নতুন সাইবার হুমকি ও জিরো-ডে ভলনারেবিলিটি (Zero-day vulnerabilities) আবিষ্কৃত হচ্ছে। তাই সিকিউরিটি প্যাচ নিয়মিত আপডেট করা, সার্ভারের কনফিগারেশন অডিট করা এবং নিয়মিত ব্যাকআপ বজায় রাখা অত্যন্ত গুরুত্বপূর্ণ।
পেশাদার এনভায়রনমেন্টে একটি সুনির্দিষ্ট Security Policy মেনে লিনাক্স সার্ভার হার্ডেনিং সম্পন্ন করলে সাইবার আক্রমণের ঝুঁকি ৯৯% পর্যন্ত কমিয়ে আনা সম্ভব। সঠিক পরিকল্পনা ও সতর্কতাই পারে আপনার ডিজিটাল সম্পদ ও স্পর্শকাতর তথ্যকে নিরাপদ রাখতে।
Share your opinion here!