केवल चयनित USB पोर्ट पर मास स्टोरेज डिवाइस का उपयोग करें - कैसे?


14

दिए गए USB पोर्ट पर, मैं केवल USB मास स्टोरेज क्षमताओं को स्वीकार करना चाहता हूं, और कुछ नहीं। कोई छिपाई डिवाइस, कोई ब्लूटूथ एडेप्टर, कोई RS232 कन्वर्टर्स, कुछ भी नहीं। वहाँ ऐसा करने के लिए एक तरीका है udev का उपयोग कर? मुझे पता है कि मैं किसी दिए गए डिवाइस, या किसी दिए गए पोर्ट के लिए ड्राइवर सहित एक कस्टम udev नियम लिख सकता हूं, लेकिन क्या मैं किसी भी तरह अन्य सभी ड्राइवरों को बाहर कर सकता हूं ? मैं केवल एक वर्ग उपकरणों की अनुमति देने की कोशिश कर रहा हूं , अर्थात् USB मास स्टोरेज; इस वर्ग में असंख्य अलग-अलग डिवाइस मॉडल हैं, और मुझे नहीं पता है कि पोर्ट से कनेक्ट होने जा रहे हैं (क्लाइंट अपने स्वयं लाएंगे, मुझे इसे प्रभावित करने का कोई रास्ता नहीं है)।

रिप्रोग्राम किए गए USB फर्मवेयर से खतरे केवल निकट भविष्य में खराब होने वाले हैं। मैं इस उपयोग के मामले के लिए उन्हें कम करने की कोशिश कर रहा हूं: मेरे पास आंतरिक रूप से कनेक्टेड USB बाह्य उपकरणों (नेटवर्क कार्ड, विशेष बाह्य उपकरणों, कीबोर्ड) और एक सार्वजनिक-सामना करने वाला यूएसबी पोर्ट है, जिसका उपयोग केवल फ़ाइल स्थानांतरण के लिए किया जाना है। इसलिए, मैं अन्य USB मॉड्यूल को पूरी तरह से ब्लैकलिस्ट नहीं कर सकता; लेकिन मैं उस विशेष पोर्ट को "सैनिटाइज़" करना चाहूंगा, ताकि एक अलग डिवाइस प्रकार में प्लगिंग कुछ भी नहीं कर सके।

केस को भौतिक रूप से लॉक किया गया है, ताकि यह केवल एक विशिष्ट यूएसबी पोर्ट बाहर से सुलभ हो, और मामले के साथ मध्यस्थता या कीबोर्ड केबल में splicing शारीरिक सुरक्षा प्रतिक्रिया को ट्रिगर करने के लिए पर्याप्त संदिग्ध होना चाहिए; इसके अलावा, मैं अधिकांश उपयोगकर्ताओं को सक्रिय रूप से दुर्भावनापूर्ण होने की उम्मीद नहीं करता, लेकिन मुझे उम्मीद है कि USB फ्लैश के अनियंत्रित वाहक की संख्या में वृद्धि होगी (क्योंकि यह फ़्लॉपी के बूट क्षेत्र में संक्रमण के साथ था)। जहां तक ​​सुरक्षा जाती है, यह वास्तव में कोई फर्क नहीं पड़ता कि क्या उपयोगकर्ता दुर्भावनापूर्ण इरादे से "हथियारबंद" यूएसबी डिस्क लाता है, या बस यह नहीं जानता कि यह "संक्रमित" है।

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


2
उम। मैं सिर्फ सामान सीख रहा हूं, इसलिए यह सुनिश्चित नहीं करें कि क्या यह मदद कर सकता है, लेकिन यह देखें कि क्या यह प्रासंगिक है: " linux-usb.org/FAQ.html " विशेष रूप से, "मैं अपने बहुउद्देशीय भंडारण उपकरण से केवल एक उपकरण क्यों देखता हूं, स्क्रॉल करें" "प्रश्न, और वहां की पंक्ति" यदि आप सभी SCSI उपकरणों के लिए ऐसा नहीं करना चाहते हैं, तो आप कर्नेल को एक विशिष्ट उपकरण का उपयोग करने के लिए स्कैन करने के लिए कह सकते हैं; इको> / proc / scsi / scsi "scsi ऐड-सिंगल-डिवाइस 0 0 0 1 ""
सेर्गेई कोलोडियाज़नी

1
आप केवल एक विशिष्ट पोर्ट को USB मास स्टोरेज पर लॉक करना चाहते हैं?
कज़ वोल्फ

3
"भौतिक पहुंच के साथ, सुरक्षा की लड़ाई हार गई है।" ~ हर सुरक्षा। कभी भी उपयोगकर्ता।
काज वोल्फ

1
@Piskvor मुझे यकीन नहीं है, लेकिन आपके पास सुरक्षा पर एक उत्तर खोजने के लिए बेहतर भाग्य हो सकता है ।stackexchange.com या अन्य उन्नत / व्यावसायिक-उन्मुख साइटों में से एक।
ब्रायन जेड

2
शायद यह मदद कर सकता है: irongeek.com/… , विशेष रूप से UDEV अनुभाग का उपयोग करके लिनक्स को 3.2 लॉक करना।
अलसी

जवाबों:


16

यह मेरे लिए Ubuntu 14.04 में 2 फ़्लैश कीज़ और एंड्रॉइड फोन को स्टोरेज और यूएसबी नेटवर्क एडॉप्टर और वेबकेम के साथ अन्य प्रकार के रूप में काम करने के लिए लगता है। (मैं एक हब हब रखने का परीक्षण नहीं कर सका)

  1. USB पोर्ट की जाँच करें (जो प्लग किए गए डिवाइस के लिए एक मूल उपकरण है)

    $ udevadm info --name=/dev/sdc --attribute-walk
    
      looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0':
        KERNELS=="2-1.2:1.0"
        SUBSYSTEMS=="usb"
        DRIVERS=="usb-storage"
        ATTRS{bInterfaceClass}=="08"
        ATTRS{bInterfaceSubClass}=="06"
        ATTRS{bInterfaceProtocol}=="50"
        ATTRS{bNumEndpoints}=="02"
        ATTRS{supports_autosuspend}=="1"
        ATTRS{bAlternateSetting}==" 0"
        ATTRS{bInterfaceNumber}=="00"
    
  2. usb-storageचालक के बिना USB पोर्ट कर्नेल नाम का मिलान, udev नियम बनाएँ

    /etc/udev/rules.d/90-remove-non-storage.rules

    ऐसे किसी भी उपकरण को अनुमति दें जिसके पास पहली इंटरफ़ेस के रूप में भंडारण है (समग्र उपकरणों की अनुमति है)

    KERNELS=="2-1.2:1.0", DRIVERS!="usb-storage", RUN+="/bin/sh -c 'echo 1 > /sys/bus/usb/drivers/hub/2-1\:1.0/port2/device/remove'"
    

    किसी भी डिवाइस को ब्लॉक करें जिसमें नॉन स्टोरेज इंटरफेस हो (कम्पोजिट डिवाइस इंकार किया गया हो)

    दरअसल, फोन मॉडेम के /dev/ttyACM0रूप में KERNELS == "2-1.2: 1.1" पर चढ़ जाता है। यह फोन (कंपोजिट डिवाइस) को केवल साधारण स्टोरेज डिवाइस को माउंट नहीं करने देगा।

    KERNELS=="2-1.2:1.[0-9]*", DRIVERS!="usb-storage", RUN+="/bin/sh -c 'echo 1 > /sys/bus/usb/drivers/hub/2-1\:1.0/port2/device/remove'"
    

    केवल वे इंटरफेस ब्लॉक करें जो स्टोरेज नहीं हैं (केवल भंडारण के रूप में अनुमत कंपोजिट डिवाइस)

    केवल गैर-अनुमति वाले इंटरफेस को अक्षम करने के तरीके के बारे में कुछ खोज के बाद। चालक unbinding काम करने लगता है। मेरा फोन केवल स्टोरेज के रूप में इस्तेमाल किया जा सकता है, यह नहीं बनता है /dev/ttyACM0

    KERNELS=="2-1.2:1.[0-9]*", DRIVERS!="usb-storage", RUN+="/bin/sh -c 'echo -n %k >/sys%p/driver/unbind'"
    
  3. रिलोड udv नियम

    udevadm control --reload-rules
    

संदर्भ:


मुझे इसे मारो ...
कज़ वुल्फ 15

@Whaaaaaat, हां authorizedकाम भी करता है, लेकिन removeउपयोगकर्ता इसे वैसे भी अनप्लग करने वाला एक साफ-सुथरा तरीका है। मैंने अनमाउंट ड्राइव की जांच की है, उनके पास अभी भी usb-storageएक मूल नोड के लिए ड्राइवर के रूप में है। मैं मानता हूं, कुछ ऐसे मामले हैं, जिनका usb-storageउपयोग नहीं किया जा सकता है। BTW, :) यू बहुत सारी टिप्पणियों (2min, 1min) का उपभोग करते हैं, आप 1 को संपादित कर सकते हैं (5min में)
user.dz

@Whaaaaaat: जब मैं यह परीक्षण कर रहा था, तो usb- स्टोरेज ड्राइवर को ब्लॉक डिवाइस (ओं) को बनाने से ठीक पहले लोड किया गया था; उन्हें बढ़ाना आवश्यक नहीं था।
पिस्कोर ने

@Piskvor ने आपके सवाल का जवाब दिया? यदि हां, तो आपको इसे सही उत्तर के रूप में चिह्नित करना चाहिए और अपने इनाम को पुरस्कृत करना चाहिए।
जॉन स्कॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.