Na danym porcie USB chcę tylko akceptować możliwości pamięci masowej USB i nic więcej. Bez urządzeń HID, bez adapterów Bluetooth, bez konwerterów RS232, nic. Czy jest na to sposób, np. Używając udev? Zdaję sobie sprawę, że mogę napisać niestandardową regułę udev na tym sterownik dla danego urządzenia lub danego portu, ale mogę jakoś wykluczyć wszystkie inne sterowniki? Próbuję zezwolić tylko na jedną klasę urządzeń, a mianowicie pamięć masową USB; istnieją niezliczone różne modele urządzeń w tej klasie i nie wiem, które podłączą się do portu (klienci przyniosą własne, nie ma na to wpływu).
Zagrożenia ze strony przeprogramowanego oprogramowania USB będą się nasilać w dającej się przewidzieć przyszłości. Próbuję je złagodzić w tym przypadku: mam komputer z wewnętrznie podłączonymi urządzeniami peryferyjnymi USB (karta sieciowa, specjalistyczne urządzenia peryferyjne, klawiatura) i jednym portem USB od strony publicznej, który ma być używany tylko do przesyłania plików. Nie mogę więc całkowicie umieścić na czarnej liście innych modułów USB; ale chciałbym „zdezynfekować” ten konkretny port, aby podłączenie innego typu urządzenia nic nie zrobiło.
Obudowa jest fizycznie zablokowana, tak że tylko ten jeden konkretny port USB jest dostępny z zewnątrz, a wtrącanie się w obudowę lub podłączanie kabla klawiatury powinno być wystarczająco podejrzane, aby wywołać fizyczną reakcję bezpieczeństwa; Co więcej, nie spodziewam się, że większość użytkowników będzie aktywnie złośliwa, ale spodziewam się, że liczba nieświadomych nośników ponownie flashowanych napędów USB wzrośnie (tak jak miało to miejsce w przypadku infekcji dyskietek w sektorze rozruchowym). Jeśli chodzi o bezpieczeństwo, tak naprawdę nie ma znaczenia, czy użytkownik zabiera „uzbrojony” dysk USB ze złośliwą intencją, czy po prostu nie wie, że jest „zainfekowany”.
Wiem, że doskonałe bezpieczeństwo jest tutaj niemożliwe, a umożliwienie użytkownikowi interakcji z systemem w jakikolwiek sposób jest ryzykowne - ale niestety muszę zrównoważyć bezpieczeństwo z użytecznością: komputer musi obsługiwać klienta. Poza tym nie staram się tym bronić przed atakowanym, zdeterminowanym napastnikiem; raczej używam tego jako jednej z technik łagodzenia, aby system nie był nisko wiszący.
Odpowiedzi:
Wydaje się, że działa dla mnie w Ubuntu 14.04 z 2 kluczami flash i telefonem z Androidem jako pamięcią i adapterem sieciowym USB i kamerą internetową jako innym typem. (Nie mogłem przetestować umieszczenia hubu USB)
Sprawdź port USB (który jest urządzeniem nadrzędnym dla podłączonego urządzenia)
Utwórz regułę udev, dopasowując nazwę jądra portu USB bez
usb-storage
sterownika/etc/udev/rules.d/90-remove-non-storage.rules
Zezwól dowolnemu urządzeniu, które ma pamięć jako 1. interfejs (dozwolone urządzenia kompozytowe)
Zablokuj dowolne urządzenie, które nie ma interfejsu pamięci masowej (odrzucone urządzenia kompozytowe)
W rzeczywistości telefon jest montowany jako modem do
/dev/ttyACM0
KERNELS == "2-1.2: 1.1". Nie pozwoli to na zamontowanie telefonów (urządzeń kompozytowych) tylko na zwykłych urządzeniach pamięci masowej.Blokuj tylko interfejsy, które nie są pamięcią masową (urządzenia kompozytowe są dozwolone tylko jako pamięć masowa)
Po kilku poszukiwaniach sposobu na wyłączenie tylko niedozwolonych interfejsów. Rozpoznawanie sterowników wydaje się działać. Mój telefon może służyć tylko jako pamięć masowa, nie tworzy się
/dev/ttyACM0
.Przeładuj reguły udev
Bibliografia:
źródło
authorized
też działa, aleremove
jest czystszym sposobem, ponieważ użytkownik i tak je odłączy. Sprawdziłem odmontowane dyski, nadal mają oneusb-storage
sterownik dla węzła nadrzędnego. Zgadzam się, są przypadki, w którychusb-storage
nie można ich użyć. BTW, :) zużywasz zbyt wiele komentarzy (2min, 1min), możesz edytować 1. (w <5min)