अखंडता की निगरानी में एक असुविधाजनक ख़ूबी है: उसे ऐसा मानक चाहिए जो साफ़ माने जाने वाले सिस्टम से लिया गया हो। अगर सर्वर तीन साल से चल रहा है और सेंध का सवाल आज ही उठा है, तो वह मानक लेना अब देर हो चुका — आप जो कुछ वहाँ है उसे ही सामान्य के रूप में दर्ज कर रहे होंगे।
पर Debian और Ubuntu पर मानक पहले से मौजूद है, और वह आपका नहीं है: हर स्थापित पैकेज अपनी फ़ाइलों के चेकसम साथ लाता है। उनसे तुलना के लिए न व्यवस्था चाहिए न पहले का स्नैपशॉट, और यह किसी भी सिस्टम पर किसी भी क्षण काम करती है। औज़ार का नाम debsums है।
इस्तेमाल
sudo apt install debsums
sudo debsums -c
-c झंडा सिर्फ़ वे फ़ाइलें छापता है जो मानक से मेल नहीं खातीं। उसके बिना आउटपुट सिस्टम की हर फ़ाइल पर पंक्ति-दर-पंक्ति रिपोर्ट है, दसियों हज़ार पंक्तियाँ।
जाँच कुछ मिनट लेती है और डिस्क पर बोझ डालती है, इसलिए काम करते सर्वर पर उसे घटाई गई प्राथमिकता के साथ चलाना ठीक रहता है:
sudo ionice -c3 nice -n19 debsums -c
नतीजा कैसे पढ़ें
ख़ाली आउटपुट का मतलब है कि हर जाँची गई फ़ाइल वितरण की लगाई फ़ाइल से मेल खाती है। ग़ैर-ख़ाली आउटपुट को देखना पड़ता है, और खोजें दो बिल्कुल अलग वर्गों में बँटती हैं।
/etc की कॉन्फ़िगरेशन फ़ाइलें। उन्हें बदलना सामान्य काम है: आपने sshd_config संपादित किया, nginx सेट किया, कर्नेल पैरामीटर जोड़े। ऐसे अंतर अपेक्षित हैं। इन्हें रास्ते से हटाने के लिए अलग मोड है:
sudo debsums -e -c
-e सिर्फ़ कॉन्फ़िगरेशन फ़ाइलें जाँचता है — कभी-कभी यह देखने के लिए काम आता है कि आपने इस मशीन पर क्या-क्या बदला है।
चलने योग्य फ़ाइलें और लाइब्रेरियाँ। /usr/bin, /usr/sbin, /bin या /usr/lib में अंतर वही है जिसके लिए जाँच चलाई गई थी। जायज़ कारण होते हैं, पर ज़्यादा नहीं: डिबग करते समय फ़ाइल हाथ से संपादित हुई, कोई तीसरे पक्ष का पैच लगाया गया, जाँच के दौरान पैकेज अपडेट हो रहा था। अगर इनमें से कोई मेल न खाए, तो गंभीरता से देखने का समय है।
बदले जाने के क्लासिक लक्ष्य हैं ls, ps, netstat, ss, find, sshd। बदला हुआ संस्करण अपने आउटपुट से वही पंक्तियाँ छिपा देता है जो मायने रखती हैं, और उसके बाद आपकी हर जाँच सच बोलना बंद कर देती है।
दायरा अधूरा है — और यह जानना ज़रूरी है
वह सीमा जिसका ज़िक्र आमतौर पर नहीं होता: हर पैकेज चेकसम नहीं भेजता। ऐसे पैकेजों की फ़ाइलें जाँची ही नहीं जातीं और किसी भी हाल में रिपोर्ट में नहीं आएँगी। सूची यूँ देखी जा सकती है:
sudo debsums -l
इसलिए साफ़ debsums रिपोर्ट का मतलब है «जिस हिस्से की जाँच हुई उसमें सब ठीक है», न कि «सिस्टम बदला नहीं गया»। यही बात पैकेज प्रबंधक के बाहर लगाई गई हर चीज़ पर लागू होती है: स्रोत से संकलित, बाइनरी के रूप में डाउनलोड की गई, डेवलपर की साइट की स्क्रिप्ट से लगाई गई — debsums इनमें से किसी पर परिभाषा से ही नज़र नहीं रखता, और ठीक वहीं AIDE चाहिए।
नियमित रूप से चलाना
पैकेज तैयार कार्य साथ लाता है, जो /etc/default/debsums में चालू होता है:
CRON_CHECK=weekly
हफ़्ते में एक बार समझदार आवृत्ति है: जाँच डिस्क पर ध्यान देने योग्य बोझ डालती है, और सिस्टम फ़ाइलें अपडेटों के बीच शायद ही बदलती हैं। रोज़ चलाने से बोझ के अलावा कुछ नहीं जुड़ता।
अगर फ़ाइल सचमुच बदल दी गई हो
पहली प्रेरणा होती है पैकेज दोबारा लगाकर मूल वापस पाना:
sudo apt install --reinstall coreutils
कमांड सही है, पर पहले कदम के रूप में नहीं। बदली हुई सिस्टम बाइनरी का मतलब है कि किसी के पास root था, और फ़ाइल बहाल करना उस समस्या को हल नहीं करता — वह सिर्फ़ निशान मिटाता है। क्रम उल्टा होना चाहिए: पहले संदिग्ध फ़ाइल और उसके बदलने के समय की नक़ल रखें, देखें कि उसी अवधि में और क्या बदला, cron कार्य, SSH कुंजियाँ और उपयोगकर्ताओं की सूची जाँचें। बहाल उसके बाद ही करें।
इस तरीक़े की सीमाएँ भी याद रखने लायक हैं: अगर सिस्टम गहराई से समझौता किया जा चुका हो, तो ख़ुद debsums और उसकी इस्तेमाल की लाइब्रेरियाँ भी बाकी सबके साथ बदली जा सकती हैं। भीतर से की गई जाँच निरपेक्ष गारंटी नहीं दे सकती — वह बाहरी माध्यम से बूट करके होती है। रोज़मर्रा के काम के लिए, फिर भी, यह काफ़ी है: हमलों का भारी बहुमत स्वचालित है और इतना परिष्कृत नहीं।
पूरी तस्वीर में इसकी जगह
debsums इसलिए अच्छा है कि उसे कुछ नहीं चाहिए और वह तुरंत काम करता है — जिससे वह ऐसे सर्वर के लिए सुविधाजनक शुरुआती बिंदु बन जाता है जिसका इतिहास आप नहीं जानते। उसकी कमज़ोरी अधूरा दायरा और पैकेजों के बाहर लगी चीज़ों की अनभिज्ञता है। «debsums और AIDE» की जोड़ी दोनों तरफ़ ढँक देती है: सिस्टम फ़ाइलों के लिए वितरण का तैयार मानक, और बाकी के लिए आपका अपना स्नैपशॉट।
हमेशा की तरह, बात चलाने की नहीं, बल्कि ताज़ा नतीजे का उसकी तारीख़ के साथ सामने रहने की है। वह कैसा लगता है, नीचे डेमो पर।