Hanya gunakan perangkat Penyimpanan Massal pada port USB yang dipilih - bagaimana?

14

Pada port USB yang diberikan, saya hanya ingin menerima kemampuan USB Mass Storage, dan tidak ada yang lain. Tidak ada perangkat HID, tidak ada adapter Bluetooth, tidak ada konverter RS232, tidak ada. Apakah ada cara untuk melakukan ini misalnya menggunakan udev? Saya sadar bahwa saya dapat menulis aturan udev khusus untuk menyertakan driver untuk perangkat tertentu, atau port tertentu, tetapi bisakah saya mengecualikan semua driver lain? Saya mencoba untuk hanya mengizinkan satu kelas perangkat, yaitu USB Mass Storage; ada banyak sekali model perangkat yang berbeda di kelas ini, dan saya tidak tahu mana yang akan terhubung ke port (klien akan membawa sendiri, tidak ada cara bagi saya untuk mempengaruhi ini).

Ancaman dari firmware USB yang diprogram ulang hanya akan menjadi lebih buruk di masa mendatang. Saya mencoba memitigasi mereka untuk kasus penggunaan ini: Saya memiliki komputer dengan periferal USB yang terhubung secara internal (kartu jaringan, periferal khusus, keyboard) dan satu port USB yang menghadap publik, yang seharusnya hanya digunakan untuk transfer file. Jadi, saya tidak bisa daftar hitam modul USB lainnya sama sekali; tapi saya ingin "membersihkan" port tertentu, sehingga memasukkan jenis perangkat yang berbeda tidak akan menghasilkan apa-apa.

Kasingnya dikunci secara fisik, sehingga hanya port USB khusus yang satu ini yang dapat diakses dari luar, dan mencampurkan kasing atau menyambungkan kabel keyboard harus cukup mencurigakan untuk memicu respons keamanan fisik; Selain itu, saya tidak berharap sebagian besar pengguna menjadi berbahaya secara aktif, tetapi saya berharap jumlah operator tanpa disadari flash drive USB kembali meningkat (seperti halnya dengan infeksi sektor boot floppy dahulu kala). Sejauh keamanan berjalan, tidak terlalu penting apakah pengguna membawa disk USB "yang dipersenjatai" dengan niat jahat, atau hanya tidak tahu bahwa itu "terinfeksi".

Saya menyadari bahwa keamanan yang sempurna tidak dapat dilakukan di sini, dan memungkinkan pengguna untuk berinteraksi dengan sistem dengan cara apa pun berisiko - tetapi sayangnya, saya perlu menyeimbangkan keamanan terhadap kegunaan: komputer harus dapat digunakan oleh klien. Juga, saya tidak mencoba untuk bertahan melawan penyerang yang ditargetkan dan ditentukan dengan ini; alih-alih, saya menggunakan ini sebagai salah satu teknik mitigasi, sehingga sistem ini tidak bergantung pada hasil.

Piskvor meninggalkan gedung
sumber
2
Um Saya hanya belajar hal-hal, jadi tidak yakin apakah ini dapat membantu, tetapi lihat apakah ini relevan: " linux-usb.org/FAQ.html " Secara khusus, gulir ke "Mengapa saya hanya melihat satu perangkat dari perangkat penyimpanan multiguna saya "pertanyaan, dan ada baris" Jika Anda tidak ingin melakukan ini untuk semua perangkat SCSI maka Anda dapat memberitahu kernel untuk memindai perangkat tertentu menggunakan; echo> / proc / scsi / scsi "scsi add-single-device 0 0 0 1 ""
Sergiy Kolodyazhnyy
1
Anda hanya ingin port tertentu dikunci ke USB Mass Storage?
Kaz Wolfe
3
"Dengan akses fisik, pertempuran demi keamanan hilang." ~ Setiap pengguna Security.SE sebelumnya.
Kaz Wolfe
1
@Piskvor Saya tidak yakin tetapi Anda mungkin lebih beruntung menemukan jawaban di security.stackexchange.com atau salah satu situs yang lebih maju / berorientasi profesional lainnya.
Brian Z
2
Mungkin ini bisa membantu: irongeek.com/… , terutama 3.2 Mengunci Linux menggunakan bagian UDEV.
alci

Jawaban:

16

Tampaknya bekerja untuk saya di Ubuntu 14.04 dengan 2 tombol flash & ponsel android sebagai penyimpanan dan adaptor jaringan usb & webcam sebagai tipe lainnya. (Saya tidak bisa menguji penempatan hub usb)

  1. Periksa port USB (yang merupakan perangkat induk untuk perangkat yang terpasang)

    $ 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. Buat aturan udev, cocokkan nama port usb kernel tanpa usb-storagedriver

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

    Izinkan perangkat apa pun yang memiliki penyimpanan sebagai antarmuka pertama (Perangkat komposit diizinkan)

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

    Blokir perangkat apa pun yang memiliki antarmuka non-penyimpanan (Perangkat komposit ditolak)

    Sebenarnya, Telepon akan dipasang sebagai modem ke /dev/ttyACM0sebagai KERNELS == "2-1.2: 1.1". Ini tidak akan membiarkan ponsel (perangkat komposit) dipasang hanya perangkat penyimpanan sederhana yang akan.

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

    Blokir hanya antarmuka yang bukan penyimpanan (Perangkat komposit hanya diperbolehkan sebagai penyimpanan)

    Setelah beberapa pencarian tentang cara untuk menonaktifkan hanya antarmuka yang tidak diizinkan. Driver yang tidak mengikat tampaknya berfungsi. Ponsel saya hanya dapat digunakan sebagai penyimpanan, tidak dibuat /dev/ttyACM0.

    KERNELS=="2-1.2:1.[0-9]*", DRIVERS!="usb-storage", RUN+="/bin/sh -c 'echo -n %k >/sys%p/driver/unbind'"
    
  3. Muat ulang aturan udev

    udevadm control --reload-rules
    

Referensi:

user.dz
sumber
Kalahkan aku untuk itu ...
Kaz Wolfe
@ Whaaaaaat, ya authorizedberhasil juga, tetapi removecara yang lebih bersih karena pengguna akan mencabutnya juga. Saya telah memeriksa drive yang tidak di-mount, mereka masih memiliki usb-storagedriver untuk simpul induk. Saya setuju, ada beberapa kasus di mana usb-storagemungkin tidak digunakan. BTW, :) Anda mengkonsumsi terlalu banyak komentar (2 menit, 1 menit), Anda dapat mengedit yang pertama (dalam <5 menit)
user.dz
@ Whaaaaaat: Ketika saya menguji ini, driver penyimpanan usb dimuat tepat sebelum perangkat blok dibuat; pemasangan mereka tidak perlu.
Piskvor meninggalkan gedung
@Piskvor Apakah ini menjawab pertanyaan Anda? Jika demikian, Anda harus menandai ini sebagai jawaban yang benar dan memberikan hadiah Anda.
John Scott