Hạn chế quyền truy cập USB trên Debian


7

Có thể hạn chế quyền của các cổng USB trên hệ thống Debian (Linux) không?

Ví dụ như :

  • Ức chế khả năng cắm bất kỳ loại vật liệu nào ngoại trừ khóa USB?
  • Cho khả năng đọc khóa USB nhưng không ghi trên đó?
  • Gửi tín hiệu cảnh báo khi cắm USB trên hệ thống?

Cách tiếp cận "sledgehammer" là thêm "nousb" vào các cờ kernel, ví dụ: "kernel /vmlinuz-2.6.18-128.1.1.el5 ro root = LABEL = / console = tty0 console = ttyS1,19200n8 nousb". Điều đó chắc chắn sẽ hạn chế quyền của các cổng USB.
steve

Câu trả lời:


4

Khi nhân Linux phát hiện một thiết bị mới, nó sẽ gửi một thông báo tới udev . Công việc của udev là làm cho thiết bị mới có thể tiếp cận được với đất của người dùng. Đối với nhiều thiết bị, tất cả udev cần làm là tạo các mục trong /dev. Đối với các thiết bị khối, điều này cho phép thiết bị được gắn kết. Đối với các thiết bị ký tự như cổng nối tiếp và cổng âm thanh, điều này cho phép các ứng dụng chuyên dụng sử dụng thiết bị. Đối với giao diện mạng, udev có thể đặt tên. Đối với bàn phím, udev cũng có thể xác định các scancodes bổ sung. Nếu udev không tạo mục nhập thiết bị, điều này thực sự khiến thiết bị không được sử dụng.

Udev có thể được kiểm soát bởi các quy tắc ; quy tắc mặc định có mặt /lib/udev/udev.dvà chúng có thể bị quản trị viên ghi đè thông qua các tệp trong /etc/udev/udev.d. Mỗi quy tắc udev có các điều kiện của hình thức ; quy tắc áp dụng nếu tất cả các quy tắc này được đáp ứng. Bạn có thể thấy các điều kiện áp dụng cho thiết bị bằng cách chạy hoặc .VARIABLE==VALUEudevadm info -a -n /dev/…udevadm info -a /sys/…

Theo tôi biết, không có cơ chế chung nào để bỏ qua một thiết bị. Nếu đó không phải là giao diện mạng (không sử dụng nút thiết bị bên dưới /dev), bạn có thể làm cho nó không sử dụng được một cách hiệu quả bằng cách không cho phép nó:

ĐIỀU KIỆN , MODE = "000"

Các thiết bị USB có cơ chế ủy quyền : nếu authorizedthuộc tính được đặt thành 0 (sai), hệ thống sẽ không truy cập vào thiết bị. Với quy tắc này, sẽ không có thiết bị USB nào ngoài thiết bị lưu trữ USB.

ACTION=="add", SUSYSTEMS=="usb", DRIVERS!="usb-storage", ATTR{authorized}="0"

Cũng có thể tắt các thiết bị USB sau chuỗi khởi động bằng cách vô hiệu hóa tất cả các cổng máy chủ USB với đoạn mã này trong /etc/rc.local:

for x in /sys/bus/usb/devices/usb*; do
  echo 0 >"$x/authorized_default"
done

Các thiết bị riêng lẻ có thể được bật thông qua quy tắc udev (hoặc thủ công) đặt authorizedthuộc tính thành 1.

Nếu bạn muốn làm cho thiết bị lưu trữ chỉ đọc, hãy đặt rothuộc tính của nó thành 1.

Nếu bạn muốn chạy một lệnh, hãy sử dụng RUNkhóa trong quy tắc udev (lưu ý rằng bạn cần đường dẫn đầy đủ đến lệnh và xem hướng dẫn để biết các chuỗi thoát có sẵn và các biến môi trường). Nếu bạn muốn lệnh đó truy cập GUI, hãy xem Mở cửa sổ trên màn hình X từ xa (tại sao "Không thể mở màn hình")?


1

Bạn sẽ muốn thiết lập một số quy tắc udev.

Các bước cho yêu cầu của bạn:

  1. Danh sách trắng các thiết bị được phép
  2. Áp dụng quyền hạn chế / quyền sở hữu cho tất cả những người khác
  3. cấu hình tập lệnh được kích hoạt bằng cách chèn vào tập tin quy tắc.

Đây là một chủ đề liên quan: https://askubfox.com/questions/15570/configure-udev-to-change-permissions-on-usb-hid-device

Nó sẽ giúp giải thích, và cung cấp thêm con trỏ. Nếu bạn gặp khó khăn, hãy thêm rào cản tiếp theo vào câu hỏi của bạn.

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.