An einem bestimmten USB-Anschluss möchte ich nur USB-Massenspeicherfunktionen akzeptieren und ansonsten nichts. Keine HID-Geräte, keine Bluetooth-Adapter, keine RS232-Konverter, nichts. Gibt es eine Möglichkeit, dies zB mit udev zu tun? Ich bin mir bewusst , dass ich eine benutzerdefinierte udev - Regel für schreiben , einschließlich einem Treiber für ein bestimmtes Gerät oder einem bestimmten Port, aber kann ich irgendwie ausschließen alle anderen Fahrer? Ich versuche, nur eine Klasse von Geräten zuzulassen , nämlich USB-Massenspeicher; Es gibt unzählige verschiedene Gerätemodelle in dieser Klasse, und ich weiß nicht, welche mit dem Port verbunden werden sollen (Clients bringen ihre eigenen mit, ich kann dies nicht beeinflussen).
Bedrohungen durch neu programmierte USB-Firmware werden sich in absehbarer Zeit noch verschlimmern. Ich versuche, sie für diesen Anwendungsfall zu entschärfen: Ich habe einen Computer mit intern angeschlossenen USB-Peripheriegeräten (Netzwerkkarte, spezielle Peripheriegeräte, Tastatur) und einen öffentlich zugänglichen USB-Anschluss, der nur für die Dateiübertragung verwendet werden soll. Daher kann ich die anderen USB-Module nicht auf eine schwarze Liste setzen. Aber ich möchte diesen bestimmten Port "bereinigen", damit das Anschließen eines anderen Gerätetyps nichts bewirkt.
Das Gehäuse ist physisch verriegelt, sodass nur auf diesen einen bestimmten USB-Anschluss von außen zugegriffen werden kann. Ein Eingriff in das Gehäuse oder ein Spleißen in das Tastaturkabel sollte verdächtig genug sein, um eine physische Sicherheitsreaktion auszulösen. Darüber hinaus erwarte ich nicht, dass die meisten Benutzer aktiv böswillig sind, aber ich erwarte, dass die Anzahl der unwissenden Datenträger für neu geflashte USB-Laufwerke zunimmt (wie es früher bei Infektionen des Disketten-Bootsektors der Fall war). Was die Sicherheit anbelangt, spielt es keine Rolle, ob der Benutzer die "bewaffnete" USB-Festplatte mit böswilliger Absicht mitbringt oder einfach nicht weiß, dass sie "infiziert" ist.
Mir ist bewusst, dass perfekte Sicherheit hier nicht möglich ist und dass es riskant ist , dem Benutzer auf irgendeine Weise die Interaktion mit dem System zu ermöglichen. Leider muss ich die Sicherheit mit der Benutzerfreundlichkeit in Einklang bringen: Der Computer muss vom Client aus bedienbar sein. Außerdem versuche ich damit nicht, mich gegen einen gezielten, entschlossenen Angreifer zu verteidigen. Vielmehr verwende ich dies als eine der Abschwächungstechniken, damit das System keine niedrig hängenden Früchte trägt.
Antworten:
Es scheint für mich in Ubuntu 14.04 mit 2 Flash-Tasten und Android-Handy als Speicher und USB-Netzwerkadapter und Webcam als andere Art zu arbeiten. (Ich konnte nicht testen, einen USB-Hub zu platzieren)
Überprüfen Sie den USB-Anschluss (der ein übergeordnetes Gerät für das angeschlossene Gerät ist)
Erstellen Sie eine udev-Regel, die dem Namen des USB-Port-Kernels ohne
usb-storage
Treiber entspricht/etc/udev/rules.d/90-remove-non-storage.rules
Alle Geräte zulassen, die über Speicher als erste Schnittstelle verfügen (Verbundgeräte zulässig)
Blockieren Sie alle Geräte, die keine Speicherschnittstelle haben (Verbundgeräte abgelehnt)
Eigentlich wird Phone als Modem
/dev/ttyACM0
als KERNELS == "2-1.2: 1.1" gemountet. Dadurch können keine Telefone (Verbundgeräte) bereitgestellt werden, sondern nur einfache Speichergeräte.Nur Schnittstellen sperren, die kein Speicher sind (Verbundgeräte sind nur als Speicher zulässig)
Nach einiger Suche nach einer Möglichkeit, nur nicht erlaubte Schnittstellen zu deaktivieren. Das Entbinden des Treibers scheint zu funktionieren. Mein Telefon konnte nur als Speicher verwendet werden, es erstellt keine
/dev/ttyACM0
.Udev Regeln neu laden
Verweise:
quelle
authorized
funktioniert auch, ist aberremove
eine sauberere Methode, da der Benutzer es trotzdem ausstecken wird. Ich habe nicht gemountete Laufwerke überprüft, sie haben immer noch einenusb-storage
Treiber für einen übergeordneten Knoten. Ich stimme zu, es gibt einige Fälle, in denenusb-storage
möglicherweise nicht verwendet werden. Übrigens :) Du verbrauchst zu viele Kommentare (2min, 1min), du könntest den ersten (in <5min) bearbeiten