Yığın Depolama aygıtlarını yalnızca seçili bir USB bağlantı noktasında kullanın - nasıl?


14

Belirli bir USB bağlantı noktasında, yalnızca USB Yığın Depolama özelliklerini kabul etmek istiyorum, başka bir şey yok. HID cihazı yok, Bluetooth adaptörü yok, RS232 dönüştürücü yok, hiçbir şey yok. Bunu yapmanın bir yolu var mı, örneğin udev kullanmak? Ben için özel bir udev kuralı yazabilirsiniz farkındayım dahil belirli bir cihaz veya belirli port için bir sürücü, ama bir şekilde yapabilirsiniz dışlamak tüm diğer sürücüleri? Ben sadece bir sınıf aygıt, yani USB Yığın Depolama izin vermeye çalışıyorum ; Bu sınıfta sayısız farklı cihaz modeli var ve hangisinin limana bağlanacağını bilmiyorum (müşteriler kendi getirecek, bunu etkilemem mümkün değil).

Yeniden programlanmış USB ürün yazılımından gelen tehditler , ancak öngörülebilir gelecekte daha da kötüleşecektir. Bu kullanım durumu için onları hafifletmeye çalışıyorum: Dahili bağlı USB çevre birimleri (ağ kartı, özel çevre birimleri, klavye) ve yalnızca dosya aktarımı için kullanılması gereken bir genel USB bağlantı noktasına sahip bir bilgisayarım var. Yani, diğer USB modüllerini tamamen kara listeye alamıyorum; ancak o bağlantı noktasını "sterilize etmek" istiyorum, böylece farklı bir cihaz tipi takmak hiçbir şey yapmaz.

Kasa fiziksel olarak kilitlenmiştir, böylece yalnızca bu belirli bir USB bağlantı noktasına dışarıdan erişilebilir ve kasaya müdahale etmek veya klavye kablosuna yapışmak fiziksel güvenlik yanıtını tetikleyecek kadar şüpheli olmalıdır; dahası, kullanıcıların çoğunun aktif olarak kötü niyetli olmasını beklemiyorum, ancak yeniden yanıp sönen USB sürücülerinin istenmeyen taşıyıcılarının sayısının artmasını bekliyorum (yy disket önyükleme sektörü enfeksiyonlarında olduğu gibi). Güvenlik söz konusu olduğunda, kullanıcının "silahlı" USB diskini kötü niyetli olarak getirip getirmediği ya da yalnızca "bulaşmış" olduğunu bilmemesi önemli değildir.

Burada mükemmel güvenliğin mümkün olmadığının farkındayım ve kullanıcının sistemle herhangi bir şekilde etkileşime girmesine izin vermek riskli - ama ne yazık ki, güvenliği kullanılabilirliğe karşı dengelemem gerekiyor: bilgisayarın istemci tarafından kullanılabilir olması gerekiyor. Ayrıca, bununla hedeflenmiş, kararlı bir saldırgana karşı savunmaya çalışmıyorum; daha ziyade, bunu hafifletme tekniklerinden biri olarak kullanıyorum, böylece sistem düşük asılı meyve değil.


2
Um. Sadece bir şeyler öğreniyorum, bunun yardımcı olup olmayacağından emin değilim, ancak bunun alakalı olup olmadığına bakın: " linux-usb.org/FAQ.html " Özellikle, "Çok amaçlı depolama cihazımdan neden yalnızca bir cihaz görüyorum? "soru ve satır var" Bunu tüm SCSI aygıtları için yapmak istemiyorsanız, çekirdeğe; echo> / proc / scsi / scsi "scsi add-single-device 0 0 kullanarak belirli bir aygıtı taramasını söyleyebilirsiniz. 0 1 ""
Sergiy Kolodyazhnyy

1
Yalnızca belirli bir bağlantı noktasının USB Yığın Depolama'ya kilitlenmesini mi istiyorsunuz?
Kaz Wolfe

3
"Fiziksel erişim ile güvenlik savaşı kaybedildi." ~ Her Güvenlik.
Kaz Wolfe

1
@Piskvor Emin değilim ama security.stackexchange.com veya diğer daha gelişmiş / profesyonel odaklı sitelerden bir cevap bulmakta daha iyi şansınız olabilir .
Brian Z

2
Belki bu yardımcı olabilir: irongeek.com/… , özellikle 3.2 UDEV kullanarak Linux'u kilitleme bölümü.
alci

Yanıtlar:


16

Ubuntu 14.04'te 2 flash anahtar ve android telefon ile depolama ve usb ağ adaptörü ve web kamerası gibi diğer tipte benim için çalışıyor gibi görünüyor. (USB hub yerleştirmeyi test edemedim)

  1. USB bağlantı noktasını kontrol edin (takılı aygıtın ana aygıtıdır)

    $ 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-storageSürücü olmadan usb bağlantı noktası çekirdek adını eşleştirerek udev kuralı oluşturun

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

    1. arayüz olarak depolama alanına sahip tüm cihazlara izin ver (Kompozit cihazlara izin verilir)

    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'"
    

    Depolama arabirimi olmayan tüm aygıtları engelleme (Bileşik aygıtlar reddedildi)

    Aslında, Telefon modem /dev/ttyACM0olarak KERNELS == "2-1.2: 1.1" olarak monte edilir . Bu, telefonların (kompozit cihazlar) sadece basit depolama cihazlarının monte edilmesine izin vermez.

    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'"
    

    Yalnızca depolama özelliği olmayan arabirimleri engelleme (Bileşik aygıtlara yalnızca depolama alanı olarak izin verilir)

    Bazı aramalardan sonra yalnızca izin verilmeyen arayüzleri devre dışı bırakmanın bir yolu hakkında. Sürücü bağlamayı kaldırıyor gibi görünüyor. Telefonum sadece depolama alanı olarak kullanılabilir, oluşturmaz /dev/ttyACM0.

    KERNELS=="2-1.2:1.[0-9]*", DRIVERS!="usb-storage", RUN+="/bin/sh -c 'echo -n %k >/sys%p/driver/unbind'"
    
  3. Udev kurallarını yeniden yükle

    udevadm control --reload-rules
    

Referanslar:


Beni döv ...
Kaz Wolfe

@Waaaaaat, evet authorizedde çalışıyor, ancak removekullanıcı yine de fişini çekeceği için daha temiz bir yol. Takılmamış sürücüleri kontrol ettim, yine de usb-storageüst düğüm için sürücü olarak varlar. Katılıyorum, kullanılmayabilecek bazı durumlar var usb-storage. BTW, :) u çok fazla yorum tüketirsiniz (2dk, 1dk),
ilkini

@Waaaaaat: Bunu test ederken, usb depolama sürücüsü blok aygıt (lar) oluşturulmadan hemen önce yüklendi; onları monte etmek gerekli değildi.
Piskvor,

@Piskvor Bu soruya cevap verdi mi? Eğer öyleyse, bunu doğru cevap olarak işaretlemeli ve ödülünü vermelisin.
John Scott
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.