स्रोत नियंत्रण (git) के तहत एक पूरा linux सर्वर डालना


17

मैं git का उपयोग करके अपने पूरे linux सर्वर को संस्करण नियंत्रण में रखने के बारे में सोच रहा हूं। इसके पीछे कारण यह है कि दुर्भावनापूर्ण संशोधनों / रूटकिट्स का पता लगाने का सबसे आसान तरीका हो सकता है। सिस्टम की अखंडता की जांच करने के लिए मैं सभी को भोलेपन से सोचना आवश्यक हूं: हर हफ्ते या तो एक विभाजन प्रणाली को माउंट करें और बचाव प्रणाली का उपयोग करें, जांचें कि क्या गिट रिपॉजिटरी अभी भी अप्रभावित है और फिर सिस्टम में किए गए किसी भी बदलाव का पता लगाने के लिए एक जीआईटी स्टेटस जारी करें। ।

डिस्क स्थान में स्पष्ट अपशिष्ट के अलावा, क्या कोई अन्य नकारात्मक दुष्प्रभाव हैं?

क्या यह पूरी तरह से पागल विचार है?

क्या रूटकिट्स के खिलाफ जांच करने के लिए यह एक सुरक्षित तरीका है क्योंकि मुझे सबसे अधिक संभावना कम से कम / देव और / खरीद को बाहर करना होगा?


5
मैं "एक पूरी तरह से पागल विचार", बहुत सारे निहितार्थों के लिए मतदान करूंगा। फ़ाइलों में परिवर्तन हर समय होगा और उन्नयन प्रक्रियाओं को एक बुरा सपना बना देगा।
Forcefsck

@forcefsck - हर समय बदलाव क्यों दर्ज होंगे? क्या उन्हें सिस्टम अपग्रेड के दौरान बस नहीं होना चाहिए?
तोबियस हर्टकोर्न

1
बस एक विचार, क्यों कुछ भी नहीं है जैसे कि dirvish या rsync के साथ --link-dest? यदि आप अपने बैकअप बनाने के लिए dirvish का उपयोग करते हैं तो यह आपको प्रत्येक बैकअप के लिए एक अच्छी रिपोर्ट देगा जो कि बदल गया है। आप अपने बैकअप के खिलाफ वर्तमान स्थिति की तुलना करने के लिए rdync - in -ry-run मोड में कर सकते हैं। यदि आप dirvish का उपयोग करते हैं, तो आप एक ऐसे उपकरण का उपयोग करेंगे जो एक बैकअप सिस्टम के रूप में अच्छी तरह से परीक्षण किया जाता है।
जोर्डेचे

जवाबों:


16

यह एक "खराब विचार" (टीएम) है। अन्य सभी के अलावा, आपकी रिपॉजिटरी सभी हेक के रूप में धीमी गति से चलेगी, और हर संशोधन के रूप में खराब हो जाएगी।

कठपुतली / cfengine / महाराज की तरह केंद्रीकृत प्रबंधन का प्रयास करें। जैसा कि आप उम्मीद करते हैं, और अप्रत्याशित बदलावों को वापस लाएँगे।

अनधिकृत फ़ाइल परिवर्तनों के ईमेल प्राप्त करने के लिए iwatch जैसी किसी चीज़ के साथ मिलाएं।

कस्टम अनुप्रयोगों को रोल आउट करने के लिए यदि आवश्यक हो तो rpm / डिब फ़ाइलों के साथ आगे जोड़ दें।

अब और फिर किक्स के लिए रुखुन्टर या चकरोटकिट जैसी किसी चीज़ को फेंक दें और आपको अच्छा होना चाहिए।

काम हो गया।


बैड आइडिया के लिए +1 - सेंट्रलाइज्ड मैनेजमेंट (कठपुतली / कोफीन / शेफ / रेडमाइंड / आदि।) आपको यह सुनिश्चित करने की क्षमता देगा कि आपकी प्रणाली आपकी निर्धारित आवश्यकताओं के अनुसार कॉन्फ़िगर की गई है, और इसका उपयोग "ट्रिपवायर" के रूप में भी किया जा सकता है। टाइप सिस्टम आपको बताता है कि सामान कब बदलता है जो नहीं होना चाहिए।
voretaq7

मुझे लगता है कि यह वास्तव में एक बुरा विचार है। ठीक है आप देख सकते हैं कि कौन सी फाइलें नई और बदली हुई हैं। लेकिन अगर आप git चलाते हैं तो इसे आपकी फ़ाइलों को अनपैक करने और गणना करने के लिए बहुत सी cpu की आवश्यकता होती है। यदि आप पूरे माशीन पर ऐसा करते हैं तो बहुत समय लगता है।
रेने होले

1
मैं उस सूची में एक और एक फेंक दूंगा; etckeeper git रेपो करेगा, केवल / etc को छोड़कर।
शेन झुंझलाना

git जैसी रिपॉजिटरी तेजी से LGDibly हैं। और मैं सीपीयू या आईओ के बारे में चिंतित नहीं हूं क्योंकि मेरे पास जो सर्वर है, वह डाउनटाइम्स अनुसूचित है (इसलिए एक बचाव प्रणाली का उपयोग करके इसे माउंट करने की संभावना है)
टोबियास हर्टकोर्न

मुझे समझ में नहीं आता: केंद्रीकृत प्रबंधन प्रणाली कैसे गारंटी देती है कि कोई झूठी सकारात्मकता नहीं है - सिस्टम से समझौता किया जाता है + सिस्टम को जांचने के लिए उपयोग किए जाने वाले उपकरण समझौता किए जाते हैं = गलत सकारात्मक
टॉबियस हर्टकोर्न

5

एक अन्य विकल्प ट्रिपवायर को स्थापित करना है , जो कि जीपीएलड सॉफ्टवेयर है जो आपके सिस्टम की सभी महत्वपूर्ण फाइलों के माध्यम से मकड़ियों का निर्धारण करता है और निर्धारित करता है कि आपके द्वारा अस्वीकार्य के रूप में परिभाषित किए गए तरीकों से बदल गया है। परिवर्तन को केवल माइम के रूप में परिभाषित किया जा सकता है, इनकोड संख्या के माध्यम से, क्रिप्टोग्राफिक रूप से मजबूत चेकसम के सभी तरीके।

यदि आप हर रात रिपोर्ट की गई फ़ाइलों के बारे में /var/run, डीएचसीपी क्लाइंट फ़ाइलों में बदलाव /etcऔर इस तरह की पूरी जानकारी प्राप्त नहीं करना चाहते हैं, तो यह कुछ सेटिंग और ट्यूनिंग लेता है , लेकिन यदि आप उस परेशानी में जाते हैं, तो यह हो सकता है वास्तव में बहुत उपयोगी है।

फ़ाइल गुणों के डेटाबेस को मशीन से ज्ञात नहीं की गई कुंजी के साथ हस्ताक्षरित किया जाता है, जो आपको यह विश्वास दिलाने में मदद करता है कि किसी भी उपकरण ने दुर्भावनापूर्ण रूप से डेटाबेस या ट्रिपवायर बायनेरिज़ को नहीं बदला है। पूर्ण निश्चितता के लिए आप ट्रिपवायर टूल्स और डेटाबेस की एक प्रति केवल-पढ़ने के लिए माध्यम से जला सकते हैं, जिसे सर्वर पर लगाया जा सकता है और डिस्क को जलाने के बाद से सभी परिवर्तनों को सत्यापित करने के लिए उपयोग किया जाता है, अगर एक पूर्ण फोरेंसिक विश्लेषण की आवश्यकता है।

यदि आप ऐसा करने जा रहे हैं, तो ट्रिपवायर को सेट करना और मशीन के उत्पादन में तैनात होने से पहले चलना काफी महत्वपूर्ण है, या आप कभी भी पूरी तरह से सुनिश्चित नहीं हो सकते हैं कि कुछ दुर्भावनापूर्ण उपयोगकर्ता के पास मशीन को संक्रमित करने का मौका नहीं था। यात्रा की थी।


3

मुझे नहीं लगता कि यह काम करने की संभावना है, लेकिन एक प्रयोग के रूप में मैं देखना चाहता हूं कि क्या होता है अगर आप ऐसा सिर्फ / / आदि फ़ोल्डर के साथ करते हैं। यहीं पर अधिकतर विन्यास की जानकारी रखी जाती है।


4
बस / आदि किया जा रहा है। की जाँच करें kitenet.net/~joey/code/etckeeper (etckeeper)
टोबियास Hertkorn

1
एटकीपर वास्तव में अच्छी तरह से काम करता है, मुझे यह बहुत उपयोगी लगता है।
जोर्डेचे

2

@ साइरेक्स ने पहले से ही बहुत अच्छा जवाब दिया है, लेकिन अगर आप सुरक्षा के साथ एक कदम और आगे बढ़ना चाहते हैं, तो इससे निपटने का सबसे अच्छा तरीका पहले रोकथाम है फिर पता लगाना।

केवल पढ़ने के लिए / फाइल सिस्टम माउंटेड सिस्टम को स्थापित करने का प्रयास करें। नोक्सेक, नोडव विकल्प के साथ घुड़सवार एक अलग रम्फ बनाओ / tmp। काम करने की प्रणाली के लिए, आपको वास्तव में केवल पठन-लेखन की आवश्यकता / संस्करण होना चाहिए। तो / var के तहत rw, noexec, nodev के साथ fs माउंट करें और / var / tmp (afaik) के लिए राइट लिखने की अनुमति हटा दें, यह शायद ही कभी डेमॉन द्वारा आवश्यक है और इसे कॉन्फ़िगर किया जाना चाहिए)। उपयोगकर्ताओं द्वारा संसाधनों तक पहुंच को सीमित करने के लिए अपने कर्नेल के लिए सुरक्षा पैच का उपयोग करें, उदाहरण के लिए grsec का प्रयास करें। संभव सबसे प्रतिबंधात्मक नियमों के साथ एक फ़ायरवॉल का उपयोग करें।

कुछ वितरण सिस्टम सख्त होने पर व्यापक प्रलेखन प्रदान करते हैं। उदाहरण के लिए:


0

मुझे लगता है कि आपके सिस्टम में एक टूल द्वारा किए गए परिवर्तनों का विश्लेषण करना एक अच्छा विचार है:

  1. VM में एक नंगे लिनक्स को स्थापित करें
  2. रूट गिट शुरू करें
  3. उस टूल को इंस्टॉल करें जिसका आप विश्लेषण करना चाहते हैं
  4. अपने सिस्टम में किए गए सभी परिवर्तनों को देखें

... VM को हटा दें

आपको बहुत सारे फ़ोल्डर्स को .gitignore फ़ाइल में जोड़ना होगा , जैसे कि खरीद, आदि।


0

उन स्थितियों के लिए जहां आप संस्करण नियंत्रण के तहत संपूर्ण फाइल सिस्टम में कुछ फ़ोल्डर्स रखने में रुचि रखते हैं, निम्नलिखित दृष्टिकोण काम कर सकते हैं:

सबसे पहले, /स्तर पर एक गिट रिपॉजिटरी बनाएं :

$ cd /
# git init

उसके बाद /.gitignoreकेवल कुछ फ़ोल्डर्स का चयन करें, उदाहरण के लिए केवल श्वेतसूची में /path/to/versioned/config/folder/( /programming//a/11018557/320594 पर आधारित ):

/*
!/path/
/path/*
!/path/to/
/path/to/*
!/path/to/versioned/
/path/to/versioned/*
!/path/to/versioned/config/
/path/to/versioned/config/*
!/path/to/versioned/config/folder/
!/.gitignore

फिर पहला कमिट बनाएं:

# git add -A
# git commit -m "Initial commit"

और फिर अतिरिक्त फ़ोल्डर जोड़ें जिन्हें आप मांग पर संस्करण नियंत्रण के तहत चाहते हैं।

पुनश्च:

पिछली विधि के अलावा, यदि आपको / etc / under version नियंत्रण रखने की आवश्यकता है, तो आप उस विशिष्ट फ़ोल्डर के संस्करण के लिए etckeeper( https://etckeeper.branchable.com/ ) का उपयोग करना पसंद कर सकते हैं क्योंकि यह उस उद्देश्य के लिए अधिक विशिष्ट है ( उदाहरण के लिए यह संकुल को स्थापित करने के बाद स्वचालित रूप से हो जाता है)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.