অখণ্ডতার নজরদারি সেই প্রশ্নের উত্তর দেয় যার উত্তর না অ্যান্টিভাইরাস দেয়, না ফায়ারওয়াল: গত সপ্তাহ থেকে এই সার্ভারে কী বদলেছে। স্বাক্ষর স্ক্যানার পরিচিত খারাপ জিনিস খোঁজে; AIDE খারাপ সম্পর্কে কিছুই জানে না, সে জানে এই ফাইলটা কাল অন্যরকম ছিল। বিদ্যমান ফাইলের শেষে জোড়া পেছনের দরজা খুঁজে বের করতে এটিই একমাত্র কার্যকর উপায়।

AIDE দুটি কমান্ডে বসে যায়। এটি এমনভাবে সাজানো যাতে তার রিপোর্ট পড়া হয় — সেটাই কঠিন অংশ, আর সাধারণত সেটাই একে মেরে ফেলে: প্রথম রিপোর্ট দশ হাজার লাইন নিয়ে আসে, দ্বিতীয়টা কেউ খোলে না, আর এক মাস পরে কাজটা মুছে দেওয়া হয়।

স্থাপন এবং প্রথম ডেটাবেস

sudo apt install aide aide-common
sudo aideinit

সূচনায় কয়েক মিনিট থেকে আধঘণ্টা লাগে: প্রতিটি ফাইলের হ্যাশ গণনা করা হয়। ফল কর্মরত ডেটাবেসের পাশে .new প্রত্যয়সহ রাখা হয়, আর সেটিকে কাজে লাগাতে হয়:

sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

তারপর যাচাই চলে এভাবে:

sudo aide --check

রিপোর্ট পড়ার উপযোগী রাখতে কী বাদ দেবেন

সেটিংস থাকে /etc/aide/aide.conf-এ আর /etc/aide/aide.conf.d/ ডিরেক্টরিতে। Debian-এর আদর্শ ব্যবস্থা অতিরিক্ত যাচাই করে, আর প্রথম কাজ হলো যা সারাক্ষণ নিজে থেকে বদলায় তা সরানো:

  • /var/log — প্রতি সেকেন্ডে বদলায়;
  • পুরো /var/lib — ডেটাবেস, প্যাকেজের অবস্থা, সেবার অবস্থা;
  • /var/cache, /tmp, /proc, /sys, /run;
  • সাইটের আপলোড ও ক্যাশ ডিরেক্টরি — তাদের বিষয়বস্তু দর্শনার্থীরা বদলায়।

কঠোরতম সেটিংস দিয়ে যাচাই করার মতো তালিকাটি সংকীর্ণ:

  • /bin, /sbin, /usr/bin, /usr/sbin — সিস্টেমের চলনযোগ্য ফাইল;
  • /lib, /usr/lib — লাইব্রেরি;
  • /etc — কনফিগারেশন;
  • /root/.ssh আর আপনার ব্যবহারকারীদের .ssh ডিরেক্টরি;
  • সাইটের কোড, তবে আপলোড ও ক্যাশ ডিরেক্টরি ছাড়া।

মানদণ্ড: সাধারণ দৈনিক রিপোর্ট এক পর্দায় আঁটা উচিত। এর চেয়ে লম্বা হলে বাদ দেওয়া অপর্যাপ্ত আর সেটি পড়া বন্ধ হয়ে যাবে।

ডেটাবেস কোথায় রাখবেন

একটা গুরুত্বপূর্ণ কথা যা প্রায়ই বাদ পড়ে। অন্য কারও কাছে root থাকলে ফাইল বদলে সঙ্গে সঙ্গে AIDE-র ডেটাবেস হালনাগাদ করা তার কাছে কিছুই নয় — আর তারপরের যাচাই জানাবে সব ঠিক আছে। একই যন্ত্রে থাকা, লেখার যোগ্য ডেটাবেস কেবল দুর্ঘটনা থেকে রক্ষা করে।

একটি সার্ভারের জন্য যুক্তিসঙ্গত ন্যূনতম:

  • প্রতিটি হালনাগাদের পরে ডেটাবেস অন্য যন্ত্রে অনুলিপি করুন, আর যাচাই সেই অনুলিপিটি জায়গামতো রেখে চালান;
  • অথবা অন্তত ডেটাবেসের চেকসাম আলাদা রাখুন আর যাচাইয়ের আগে সেটি মিলিয়ে নিন:
sha256sum /var/lib/aide/aide.db

এত সরল ব্যবস্থাও নীরব বদলকে লক্ষণীয় ঘটনায় পরিণত করে।

ডেটাবেস হালনাগাদ করা সচেতন পদক্ষেপ

বৈধ পরিবর্তনের পরে — সিস্টেম হালনাগাদ, সাইটের নতুন সংস্করণ মোতায়েন — ডেটাবেস আবার গড়া হয়:

sudo aide --update
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

এটি কখন করা হয় তা গুরুত্বপূর্ণ। সঠিক উপায়: রিপোর্ট পড়ুন, নিশ্চিত হন প্রতিটি পরিবর্তন ব্যাখ্যাযোগ্য, আর তবেই হালনাগাদ করুন। ভুল আর খুব প্রচলিত উপায়: aide --update সূচি ধরে চালানো যাতে রিপোর্ট পরিষ্কার আসে। দ্বিতীয় ক্ষেত্রে সিস্টেম চলে, রিপোর্ট আসে, আর পরিবর্তনগুলো ঠিক যে মুহূর্তে ঘটে সেই মুহূর্তেই স্বাভাবিক হিসেবে নথিভুক্ত হয় — অর্থাৎ পুরো অর্থটাই হারিয়ে গেছে।

সূচি ও চাপ

aide-common প্যাকেজ নিজেই দৈনিক কাজ বসিয়ে দেয়। যাচাই কয়েক মিনিট ডিস্ক ও প্রসেসরে চাপ দেয়, তাই সেটিকে শান্ত সময়ে আর কমানো অগ্রাধিকারে চালানো ভালো:

0 4 * * * ionice -c3 nice -n19 /usr/bin/aide --check

রিপোর্ট কীভাবে পড়বেন

তিনটি অংশ: যোগ হওয়া, সরানো ও বদলানো ফাইল। প্রতিটি পরিবর্তনের জন্য দেখায় ঠিক কী আলাদা: বিষয়বস্তু, অনুমতি, মালিক, সময়।

আগে কীসে সাড়া দেবেন:

  • হালনাগাদের জানালার বাইরে /bin, /sbin, /usr/bin-এর যেকোনো ফাইলের পরিবর্তন;
  • সিস্টেম ডিরেক্টরিতে নতুন ফাইল;
  • authorized_keys, /etc/passwd, /etc/sudoers, /etc/crontab/etc/cron.d-তে পরিবর্তন;
  • দেখা দেওয়া ফাইল /etc/ld.so.preload — সে নিজে থেকে কখনও আসে না।

apt upgrade-এর ঠিক পরে একশো বদলানো ফাইল স্বাভাবিক, আর রিপোর্টের সময় তা নিশ্চিত করে। হালনাগাদহীন কোনো বুধবারে /usr/bin-এ তিনটি বদলানো ফাইল থেমে খতিয়ে দেখার কারণ।

AIDE আর debsums

সরঞ্জাম দুটি পাশাপাশি সমস্যা সমাধান করে, কিন্তু তাদের মানদণ্ড আলাদা। AIDE আপনার নিজের স্ন্যাপশটের সঙ্গে তুলনা করে — তাই সে যেকোনো ফাইলের পরিবর্তন দেখে, সাইটের কোডসহ। debsums ডিস্ট্রিবিউশনের প্যাকেজে থাকা চেকসামের সঙ্গে তুলনা করে — তাই সে কোনো পূর্বব্যবস্থা ছাড়াই বদলে দেওয়া সিস্টেম ফাইল দেখে, কিন্তু প্যাকেজের বাইরে বসানো কিছু সম্পর্কে কিছুই জানে না। দুটোই রাখা যুক্তিসঙ্গত; বাস্তবে debsums সাধারণত আগে বসে, কারণ তার না ব্যবস্থা লাগে না ডেটাবেস।

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