2010-10-04 9 views
9

मैं अज्ञात स्रोत से सी कोड से संकलित एक प्रोग्राम चलाने की कोशिश कर रहा हूं। मैं यह सुनिश्चित करना चाहता हूं कि कार्यक्रम मेरे सिस्टम को किसी भी तरह से नुकसान नहीं पहुंचाएगा। उदाहरण के लिए, इस कार्यक्रम में स्रोत में system("rm -rf /") की तरह सोमिंग हो सकती है, जो अनदेखा करने योग्य है, जब तक कोड की पूरी तरह से जांच नहीं की जाती।लिनक्स पर निष्पादन योग्य चलाने का सबसे सुरक्षित तरीका क्या है?

मैं निम्नलिखित 2 तरीकों में से

  1. भागो यह एक वी एम के अंदर VMWare
  2. तरह
  3. सोचा लिनक्स पर एक विंडोज़ exe निर्माण और शराब

पर चलने दोनों बहुत सुंदर समाधान नहीं हैं और मैं उन्हें स्वचालित नहीं कर सकता। और, 1 के मामले में, यह वीएम को नुकसान पहुंचा सकता है।

किसी भी मदद की सराहना की जाएगी।

मैं प्रोग्राम को चलाने के लिए चाहता हूं जिसे हम "सैंडबॉक्स" कह सकते हैं।

+1

मैंने क्रोट के बारे में सोचा है, लेकिन यह कांटा बम और अन्य सिस्टम कॉल समस्याओं को रोकता नहीं है। धन्यवाद – arbithero

+0

लिनक्स या यूनिक्स में सैंडबॉक्सिंग/जेलिंग प्रक्रियाओं पर समान प्रश्न: * http://unix.stackexchange.com/q/6433/4319 * http://stackoverflow.com/q/4410447/94687 * http : //stackoverflow.com/q/4249063/94687 * http://stackoverflow.com/q/1019707/94687 –

+1

वाइन निष्पादन योग्य रखने में बिल्कुल कोई मूल्य नहीं है। एक शराब निष्पादन योग्य रूट के रूप में चलाएं और आप अपने सिस्टम को – sehe

उत्तर

4

Geordi संकलन और फिर sandbox मनमानी कोड के लिए syscalls के interroalls के संयोजन का उपयोग करता है।

+1

जिओर्डी स्रोत में बहुत से विचार हैं जिनका मैं उपयोग कर सकता हूं। धन्यवाद! – arbithero

1

एक ऐसे उपयोगकर्ता को बनाएं जहां केवल गैर-महत्वपूर्ण निर्देशिकाओं तक पहुंच पहुंच हो। उस उपयोगकर्ता के रूप में प्रोग्राम चलाएं। यदि आप गोपनीयता में रुचि रखते हैं, तो इसके पढ़ने के अधिकारों को भी सीमित करने पर विचार करें।

1

chroot के लिए विकिपीडिया पृष्ठ एक अच्छी शुरुआत हो सकती है। यह क्रोट का वर्णन करता है और कुछ, अधिक व्यापक विकल्पों के लिंक भी प्रदान करता है।

2

आप schroot और chroot की तरह कुछ का उपयोग कर सकते कार्यक्रम, लेकिन पर्याप्त नास्टनेस के कुछ भी उस से बाहर निकल जाएगा।

आप सबसे अच्छा शर्त शायद वर्चुअल मशीन (vmware या वर्चुअलबॉक्स) है और प्रोग्राम को संकलित करने और चलाने से पहले स्नैपशॉट ले रहे हैं। अगर कुछ गलत हो जाता है तो इस तरह आप वापस रोल कर सकते हैं।

+0

मिटा सकते हैं वास्तव में, आपको इसे परीक्षण के बाद इसे वापस रोल करना चाहिए, क्योंकि आपने शायद यह नहीं देखा होगा कि क्या गलत हो गया है। – caf

+0

@caf सच है, अगर यह अविश्वसनीय है तो यह अविश्वसनीय है। वैसे भी बकवास और रोलबैक मत करो। – Dave

+0

वर्चुअल मशीन बिल्कुल सुरक्षित वातावरण नहीं हैं, अगर प्रोग्राम निष्पादित किया जाता है तो यह जानता है कि यह एक में है। – Jonathan

6

seccomp देखें। यह इस उपयोग के मामले के लिए डिजाइन किया गया था।

+0

यह वास्तव में बहुत अच्छा है अगर यह काम करता है! मैं इसे लागू करने की कोशिश करूंगा और यहां काम करता हूं अगर यह काम करता है। धन्यवाद @ फ्लोरिन! – arbithero

0

इसे एक गैर-नेटवर्क वाले कंप्यूटर पर चलाएं जिसे आप एक बार पूरा करने के बाद फिर से चित्रित करेंगे। मशीन पर इसे चलाने के लिए कोई सुरक्षित तरीका नहीं है और बाद में उस मशीन पर भरोसा करना जारी रखें।

+0

या, कम से कम, एक कंप्यूटर स्थानीय नेटवर्क पर नहीं। – Jonathan

4

मैंने यहां overview of sandboxing methods on Linux (archived) लिखा था। मेरे विचार में, आप लिनक्स कंटेनर (एलएक्ससी) या सेलिनक्स का उपयोग कर सबसे अच्छे हैं। आप वर्चुअलाइजेशन समाधान का उपयोग कर सकते हैं और इसे स्वचालित कर सकते हैं, लेकिन यह बहुत अधिक प्रयास है।

एलएक्ससी आपकी प्रक्रियाओं, फाइल सिस्टम और नेटवर्क को अलग करेगा, और आप कंटेनर पर संसाधन सीमा निर्धारित कर सकते हैं। कर्नेल हमले के जोखिम अभी भी हैं, लेकिन वे बहुत कम हो गए हैं।

0

strace या ltrace का उपयोग करके अन्य उत्तरों के अलावा, प्रोग्राम यह समझने में आपकी सहायता कर सकता है कि प्रोग्राम क्या कर रहा है।

संबंधित मुद्दे