如何保護您的 Linux 計算機免受流氓 USB 驅動器的侵害
已發表: 2023-01-23USB 記憶棒可用於從您的 Linux 計算機竊取數據。 USBGuard 可讓您設置管理 USB 記憶棒使用的規則,例如 USB 存儲設備的防火牆。 以下是它的工作原理以及設置方法。
USB 記憶棒及其危險
什麼是 USBGuard?
在 Linux 上使用 USB 記憶棒的正常行為
安裝 USBGuard
配置基本策略
添加另一個 USB 設備
刪除 USB 設備的訪問權限
USB 記憶棒及其危險
我們可能都至少擁有一個 USB 記憶棒或 USB 存儲設備,例如 USB 外置驅動器。 它們便宜、有效、便攜且易於使用。
如今,您只需將一個插入 Linux 計算機,即可將其識別為存儲設備並自動安裝。 必須在命令行上手動安裝它們的日子已經一去不復返了。 這種便利意味著任何人都可以將其放入 Linux 計算機並將數據從 USB 驅動器複製到計算機上,或從計算機複製到記憶棒上。
如果其他人使用您的計算機,您可能希望限制他們使用 USB 記憶棒可以執行的操作。 如果您的計算機在您的家中,當您的計算機處於開機狀態且無人看管時,懷有惡意的機會主義者不太可能路過,但在工作場所可能會發生這種情況。
但即使家裡有電腦,您也可能希望限制 USB 訪問。 也許您的孩子經常有朋友過來玩。 鎖定 USB 訪問權限是一種明智的預防措施,可以防止它們無意中造成問題。
當有人找到 USB 驅動器時,會立即將其插入某物以查看其中的內容。 針對 Linux 計算機的網絡威脅比針對 Windows 計算機設計的網絡威脅要少得多,但它們仍然存在。
什麼是 USBGuard?
USBGuard 可以保護您免受基於軟件的威脅,這些威脅分佈在受損的 USB 記憶棒上,例如 BadUSB,當您被操縱打開看起來像文檔但實際上是偽裝的可執行文件時,攻擊就會開始。 USBGuard 無法保護您免受基於硬件的威脅,例如 USB Killer 設備,它們通過向您的機器釋放高壓放電而對您的計算機造成物理傷害。
實際上,USBGuard 允許您為各種不同的 USB 設備設置規則,包括鼠標、網絡攝像頭和鍵盤。 它不僅僅適用於 USB 記憶棒。 您的計算機知道每個 USB 設備的 ID,因此您可以選擇哪些 USB 設備可以在您的計算機上工作,哪些不能。 它類似於 USB 連接的防火牆。
警告: USBGuard 守護程序在安裝後立即運行。 確保在安裝後直接配置 USBGuard。 否則,當您重新啟動計算機時,所有 USB 設備都將被阻止。
在 Linux 上使用 USB 記憶棒的正常行為
在我們做任何事情之前,我們將檢查我們的 Ubuntu 22.10 計算機上的默認行為。 這是一個簡單的過程。 我們插入 USB 記憶棒,看看會發生什麼。
我們聽到警報聲,並且記憶棒圖標出現在擴展塢中。
打開文件瀏覽器會顯示一個條目已添加到側邊欄的位置列表中。 顯示的名稱是格式化時為設備指定的名稱。
打開終端並使用lsusb
命令列出連接的 USB 設備。 最上面的條目是有問題的記憶棒,恰好是 TDK 品牌的設備。
lsusb
相關:如何從 Linux 終端列出您的計算機設備
安裝 USBGuard
USBGuard 依賴於usbutils
和udisks2
。 在我們測試的最新 Manjaro、Fedora 和 Ubuntu 版本中,這些已經安裝。
要在 Ubuntu 上安裝 USBGuard,請使用以下命令:
sudo apt 安裝 usbguard
在 Fedora 上你需要輸入:
sudo dnf 安裝 usbguard
在 Manjaro 上,命令是:
sudo pacman -S usbguard
配置基本策略
USBGuard 有一個巧妙的技巧。 它有一個命令可以創建一個規則,允許所有當前連接的 USB 設備繼續不受阻礙地工作。 這意味著您可以為所有始終需要的設備創建基準配置。 這組規則稱為基本策略。
USBGuard 使用三種類型的規則。
- 允許:允許規則允許指定的設備正常運行不受阻礙。 這用於始終連接的設備,例如有線鍵盤、鼠標、軌跡球、網絡攝像頭等。 它還用於間歇性連接的設備,以及已知和可信的設備。
- 阻止:阻止規則阻止 USB 設備運行。 USB 設備對用戶根本不可見。
- 拒絕:拒絕規則也會阻止 USB 設備運行,但 USB 設備對使用
lsusb
的用戶可見。
USBGuard 有一個巧妙的技巧。 它有一個命令,該命令將為每個當前連接的 USB 設備創建一個包含允許規則的基本策略。 這是快速配置始終連接到計算機的設備(如鍵盤和網絡攝像頭)的好方法。 這也是捕獲受信任的間歇性設備的便捷方式。 當您發出命令時,只需確保您所有受信任的設備都已連接到您的計算機。
一個奇怪的怪癖要求您以 root 身份執行此操作。 將sudo
與命令一起使用不起作用。 我們需要使用sudo -i
(登錄)命令以 root 身份打開 shell,然後發出命令。 確保在完成後使用exit
命令離開 root 登錄會話。
須藤-我
usbguard generate-policy -X -t reject > /etc/usbguard/rules.conf
出口
-X
(–no-hashes) 選項阻止 USBGuard 為每個設備生成哈希屬性。 -t
(目標)選項為所有無法識別的 USB 設備設置默認目標。 在我們的例子中,我們選擇了“拒絕”。 我們也可以選擇“阻止”。
要查看我們的新規則,我們可以使用cat
。
須藤貓 /etc/usbguard/rules.conf
在我們的測試計算機上,這檢測到三個 USB 設備並為它們創建了“允許”規則。 它添加了“拒絕”作為所有其他 USB 設備的目標。
添加另一個 USB 設備
現在,如果我們插入我們之前使用的同一個 USB 記憶棒,則不允許操作。 它沒有添加到停靠欄,沒有添加到文件瀏覽器,我們也沒有聽到聲音警報。
但是因為我們對無法識別的設備使用了“拒絕”目標, lsusb
可以列出其詳細信息。
lsusb
如果我們在基本策略中使用了“阻止”目標,則需要使用帶有-b
(阻止的設備)選項的list-devices
命令。
sudo usbguard 列表設備-b
這顯示當前連接但被阻止的 USB 設備。
我們將使用此命令中的一些信息來允許我們拒絕的 USB 設備具有臨時訪問權限或永久訪問權限。 為了給我們的設備臨時訪問權限,我們將使用設備 ID 號。 在我們的示例中,這是“10”。
sudo usbguard 允許設備 10
我們的設備已連接並出現在擴展塢和文件瀏覽器中。 如果我們要求 USBGuard 列出被阻止的設備,則沒有列出。
sudo usbguard 列表設備-b
我們可以使用-p
(永久)選項使權限永久化。 這為我們創建了一個規則並將其添加到我們的策略中。
sudo usbguard 允許設備 10 -p
我們現在可以正常使用這個 USB 設備了。
刪除 USB 設備的訪問權限
如果您改變了對 USB 設備的想法——也許您丟失了 USB 記憶棒並想刪除它的訪問權限——您可以使用block-device
命令來實現。
我們需要知道設備 ID。 我們可以通過列出允許的設備來找到它。 請注意,此編號可能與您用於將規則添加到列表中的編號不同,因此請在發出block-device
命令之前進行檢查。
須藤 usbguard 列表設備 -a
在我們的例子中,ID 是“13”。 我們將把它與 block-device 命令和-p
(永久)選項一起使用,以永久刪除它的訪問權限。
sudo usbguard 塊設備 13 -p
請注意,這會立即斷開設備。 僅當您使用完設備上的任何數據後才使用此命令。
USBGuard 為您提供了一種有效且強大的方式來控制和管理可以在您的計算機上使用的 USB 設備。
這是您的計算機,因此您可以選擇才公平。
相關:如何從 Linux 終端掛載和卸載存儲設備