Chỉ sử dụng các thiết bị Mass Storage trên cổng USB đã chọn - bằng cách nào?


14

Trên một cổng USB nhất định, tôi chỉ muốn chấp nhận khả năng lưu trữ dung lượng lớn của USB và không có gì khác. Không có thiết bị HID, không có bộ điều hợp Bluetooth, không có bộ chuyển đổi RS232, không có gì. Có cách nào để làm điều này không, ví dụ như sử dụng udev? Tôi biết rằng tôi có thể viết quy tắc udev tùy chỉnh để bao gồm trình điều khiển cho một thiết bị nhất định hoặc một cổng nhất định, nhưng bằng cách nào đó tôi có thể loại trừ tất cả các trình điều khiển khác không? Tôi đang cố gắng chỉ cho phép một loại thiết bị, cụ thể là USB Mass Storage; có vô số kiểu thiết bị khác nhau trong lớp này và tôi không biết cái nào sẽ kết nối với cổng (khách hàng sẽ tự mang theo, không có cách nào để tôi ảnh hưởng đến điều này).

Các mối đe dọa từ phần sụn USB được lập trình lại sẽ chỉ trở nên tồi tệ hơn trong tương lai gần. Tôi đang cố gắng giảm thiểu chúng cho trường hợp sử dụng này: Tôi có một máy tính có các thiết bị ngoại vi USB được kết nối bên trong (card mạng, thiết bị ngoại vi chuyên dụng, bàn phím) và một cổng USB công khai, chỉ được sử dụng để truyền tệp. Vì vậy, tôi không thể liệt kê danh sách đen các mô-đun USB khác hoàn toàn; nhưng tôi muốn "vệ sinh" cổng cụ thể đó, để việc cắm vào một loại thiết bị khác sẽ không làm gì cả.

Vỏ được khóa vật lý, do đó chỉ có một cổng USB cụ thể này có thể truy cập được từ bên ngoài và việc kết hợp với vỏ hoặc nối vào cáp bàn phím phải đủ đáng ngờ để kích hoạt phản ứng bảo mật vật lý; hơn nữa, tôi không hy vọng hầu hết người dùng sẽ tích cực độc hại, nhưng tôi hy vọng số lượng người mang các ổ USB được flash lại sẽ tăng lên (như đã bị nhiễm trùng khu vực khởi động đĩa mềm). Về bảo mật, việc người dùng mang đĩa USB "vũ khí hóa" với mục đích xấu có thực sự không quan trọng hay chỉ không biết rằng nó "bị nhiễm".

Tôi nhận thấy rằng bảo mật hoàn hảo là không thể thực hiện được ở đây và cho phép người dùng tương tác với hệ thống theo bất kỳ cách nào là rủi ro - nhưng than ôi, tôi cần phải cân bằng bảo mật chống lại khả năng sử dụng: máy tính cần phải có thể sử dụng được. Ngoài ra, tôi không cố gắng chống lại một kẻ tấn công quyết đoán, kiên quyết với điều này; thay vào đó, tôi đang sử dụng điều này như một trong những kỹ thuật giảm thiểu, để hệ thống không bị treo quả thấp.


2
Ừm. Tôi chỉ đang học nội dung, vì vậy không chắc điều này có giúp ích được không, nhưng hãy xem liệu điều này có liên quan không: " linux-usb.org/FAQ.html " Cụ thể, cuộn đến "Tại sao tôi chỉ thấy một thiết bị từ thiết bị lưu trữ đa năng của mình "câu hỏi và có dòng" Nếu bạn không muốn làm điều này cho tất cả các thiết bị SCSI thì bạn có thể yêu cầu nhân quét một thiết bị cụ thể bằng cách sử dụng; echo> / Proc / scsi / scsi "scsi add-single-device 0 0 0 1 ""
Sergiy Kolodyazhnyy

1
Bạn chỉ muốn một cổng cụ thể được khóa vào USB Mass Storage?
Kaz Wolfe

3
"Với quyền truy cập vật lý, cuộc chiến vì an ninh bị mất." ~ Mọi người dùng Security.SE từng có.
Kaz Wolfe

1
@Piskvor Tôi không chắc nhưng bạn có thể gặp may mắn hơn khi tìm câu trả lời tại security.stackexchange.com hoặc một trong những trang web tiên tiến / chuyên nghiệp hơn.
Brian Z

2
Có lẽ điều này có thể giúp: irongeek.com/ , đặc biệt là 3.2 Khóa Linux bằng phần UDEV.
alci

Câu trả lời:


16

Nó dường như hoạt động với tôi trong Ubuntu 14.04 với 2 phím flash và điện thoại android là bộ lưu trữ và bộ điều hợp mạng usb & webcam như các loại khác. (Tôi không thể kiểm tra việc đặt một trung tâm usb)

  1. Kiểm tra cổng USB (là thiết bị gốc cho thiết bị đã cắm)

    $ 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. Tạo quy tắc udev, khớp tên nhân cổng USB mà không cần usb-storagetrình điều khiển

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

    Cho phép mọi thiết bị có lưu trữ dưới dạng giao diện thứ nhất (Cho phép thiết bị tổng hợp)

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

    Chặn mọi thiết bị có giao diện không lưu trữ (Thiết bị tổng hợp bị từ chối)

    Trên thực tế, Điện thoại được gắn dưới dạng modem thành /dev/ttyACM0Kernels == "2-1.2: 1.1". Điều này sẽ không cho phép điện thoại (thiết bị tổng hợp) được gắn kết chỉ các thiết bị lưu trữ đơn giản sẽ.

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

    Chỉ chặn các giao diện không lưu trữ (Thiết bị tổng hợp chỉ được phép lưu trữ)

    Sau một số tìm kiếm về một cách để vô hiệu hóa chỉ các giao diện không được phép. Trình điều khiển unbinding dường như làm việc. Điện thoại của tôi chỉ có thể được sử dụng làm bộ lưu trữ, Nó không tạo ra /dev/ttyACM0.

    KERNELS=="2-1.2:1.[0-9]*", DRIVERS!="usb-storage", RUN+="/bin/sh -c 'echo -n %k >/sys%p/driver/unbind'"
    
  3. Tải lại quy tắc udev

    udevadm control --reload-rules
    

Người giới thiệu:


Hãy đánh bại tôi ...
Kaz Wolfe

@Whaaaaaat, yep authorizedcũng hoạt động, nhưng removelà một cách sạch hơn vì người dùng sẽ rút phích cắm bằng mọi cách. Tôi đã kiểm tra các ổ đĩa chưa được đếm, chúng vẫn có usb-storagetrình điều khiển cho nút cha. Tôi đồng ý, có một số trường hợp usb-storagecó thể không được sử dụng. BTW, :) bạn tiêu thụ quá nhiều bình luận (2 phút, 1 phút), bạn có thể chỉnh sửa ý kiến ​​thứ nhất (trong <5 phút)
user.dz

@Whaaaaaat: Khi tôi đang kiểm tra điều này, trình điều khiển lưu trữ usb đã được tải ngay trước khi (các) thiết bị khối được tạo; gắn chúng là không cần thiết.
Piskvor rời khỏi tòa nhà vào

@Piskvor Điều này có trả lời câu hỏi của bạn không? Nếu vậy, bạn nên đánh dấu đây là câu trả lời đúng và thưởng tiền thưởng của bạn.
John Scott
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.