अखंडता की निगरानी उस सवाल का जवाब देती है जिसका जवाब न एंटीवायरस देता है न फ़ायरवॉल: पिछले हफ़्ते से इस सर्वर पर क्या बदला। हस्ताक्षर स्कैनर ज्ञात बुरी चीज़ें ढूँढ़ता है; 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 आमतौर पर पहले लगता है, क्योंकि उसे न व्यवस्था चाहिए न डेटाबेस।

इनमें एक कमज़ोरी साझा भी है: रिपोर्ट मेल से आती है, और मेल खो जाती है। इसलिए मायने यह नहीं रखता कि जाँच चली, बल्कि यह कि कोई ऐसी जगह हो जहाँ उसका ताज़ा नतीजा दिखे। वह कैसा लगता है, नीचे डेमो पेज पर।