如何在Linux伺服器上阻止USB儲存裝置?


在當今技術驅動的世界中,USB儲存裝置已變得無處不在,但它們也對組織構成重大的安全威脅。攻擊者可以利用這些裝置引入惡意軟體,竊取敏感資料或未經授權訪問網路。

為了保護Linux伺服器免受此類攻擊,管理員可以透過阻止USB儲存裝置採取積極措施。本文將深入探討實現此目的的各種方法,包括每種方法的優勢和必要的實施步驟。閱讀本文後,讀者將掌握停用USB儲存裝置並保護其Linux伺服器的知識。

在本文的後續部分,我們將逐步指導您完成阻止USB儲存裝置的每種可用方法。

方法一:使用udev規則

Linux中的udev系統就像裝置及其檔案的管理器。透過使用udev規則,我們可以阻止核心為USB儲存裝置建立裝置檔案,從而有效地阻止其使用。方法如下:

步驟1 − 建立udev規則檔案

要建立阻止USB儲存裝置的規則,您需要在“/etc/udev/rules.d/”目錄中建立一個新檔案。該檔案可以命名為任何名稱,但在此示例中,我們將其命名為“99-block-usb-storage.rules”。您可以使用任何文字編輯器(包括nano或vi)建立該檔案。

sudo nano /etc/udev/rules.d/99-block-usb-storage.rules

步驟2 − 新增udev規則

將以下幾行新增到新建立的檔案中:

SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", RUN+="/bin/sh -c 'echo 1 > /sys$env{DEVPATH}/authorized'"

該規則以if-then語句的形式編寫。這意味著如果子系統是USB,並且操作是“add”(連線了USB儲存裝置),並且供應商和產品ID與指定的值匹配,則執行RUN引數中的命令。在本例中,該命令是“echo 1 > /sys$env{DEVPATH}/authorized”,它可以阻止核心為該裝置建立裝置節點。

將“****”替換為要阻止的USB儲存裝置的供應商和產品ID。您可以透過執行“lsusb”命令來獲取這些ID。例如,如果您想阻止所有供應商ID為“0781”和產品ID為“5567”的USB儲存裝置,則規則應為:

SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="0781", ATTRS{idProduct}=="5567", RUN+="/bin/sh -c 'echo 1 > /sys$env{DEVPATH}/authorized'"

步驟3 − 重新載入udev規則

儲存檔案後,透過執行以下命令重新載入udev規則:

sudo udevadm control --reload-rules
sudo udevadm trigger

“udevadm control”命令用於重新載入規則,“udevadm trigger”命令用於將規則重新應用於當前連線的裝置。

步驟4 − 測試規則

插入一個具有規則中指定的供應商和產品ID的USB儲存裝置。核心不應為該裝置建立裝置節點。您可以透過執行“lsblk”命令來確認這一點。

如果成功阻止了裝置,則它不會顯示在“lsblk”命令返回的塊裝置列表中。如果未阻止裝置,請確保檢查udev規則中的供應商和產品ID與USB儲存裝置的ID匹配。

方法二:將USB儲存模組列入黑名單

阻止USB儲存裝置的另一種方法是將USB儲存模組列入黑名單。此方法可防止核心載入負責管理USB儲存裝置的模組。方法如下:

步驟1 − 識別USB儲存模組

透過執行以下命令來識別負責USB儲存裝置的模組:

lsmod | grep usb_storage

此命令將列出所有當前載入的核心模組,“grep”命令將過濾輸出以僅顯示包含字串“usb_storage”的模組。輸出應如下所示:

usb_storage            77824  0

此輸出顯示當前已載入“usb_storage”模組。

步驟2 − 將模組列入黑名單

在“/etc/modprobe.d/”目錄中建立一個名為“blacklist-usb-storage.conf”的新檔案,並將以下幾行新增到該檔案中:

blacklist usb_storage

這將使“usb_storage”模組列入黑名單,從而防止它在下一次系統啟動時載入。

步驟3 − 更新initramfs

透過執行以下命令來更新initramfs以應用更改:

sudo update-initramfs -u

initramfs(初始RAM檔案系統)是在引導過程中載入到記憶體中的臨時檔案系統。透過更新initramfs,我們確保在引導過程中不會載入列入黑名單的模組。

步驟4 − 重新啟動系統

重新啟動系統以確保未載入列入黑名單的模組。系統重新啟動後,您可以透過再次執行“lsmod”命令來確認“usb_storage”模組是否未載入。

lsmod | grep usb_storage

如果模組已正確列入黑名單,則輸出應為空。

方法三:使用USBGuard實用程式

USBGuard是一個可用於實施USB裝置策略的工具。它可以根據預定義的策略阻止或允許USB裝置。以下是使用USBGuard阻止USB儲存裝置的方法:

步驟1 − 安裝USBGuard

第一步是在您的Linux伺服器上安裝USBGuard實用程式。USBGuard可在大多數Linux發行版的預設儲存庫中找到。要安裝USBGuard,請執行以下命令:

sudo apt-get install usbguard

此命令在基於Debian的Linux發行版上安裝USBGuard包及其依賴項。如果您使用的是其他Linux發行版,則命令可能會有所不同。

步驟2 − 建立策略

安裝USBGuard後,您需要建立一個規則來阻止USB儲存裝置。USBGuard使用規則檔案來定義USB裝置的策略。透過執行以下命令建立一個新的規則檔案:

sudo nano /etc/usbguard/rules.conf

此命令在“/etc/usbguard/”目錄中建立一個名為“rules.conf”的新檔案。

將以下幾行新增到檔案中以阻止USB儲存裝置:

# Block USB Storage Devices
deny allow id-*:* storage

此策略將拒絕所有USB儲存裝置。

步驟3 − 啟動USBGuard服務

您可以透過執行以下命令來啟動USBGuard服務。

sudo systemctl start usbguard

此命令啟動USBGuard服務並應用在“rules.conf”檔案中定義的規則。

步驟4 − 啟用USBGuard服務

透過執行以下命令,啟用USBGuard服務以便在啟動時自動啟動。

sudo systemctl enable usbguard

此命令啟用USBGuard服務並確保它在系統啟動時自動啟動。

步驟5 − 驗證USBGuard策略

要驗證USBGuard是否正在阻止USB儲存裝置,請將USB儲存裝置插入伺服器。您應該會收到一條通知,告知該裝置已被USBGuard阻止。

usbguard-daemon[PID]: Policy violation in device: ... (device blocked)

您還可以透過執行以下命令來檢視USBGuard服務的狀態:

sudo systemctl status usbguard

此命令顯示USBGuard服務的狀態,包括任何策略衝突。

結論

總之,有多種方法可以在Linux伺服器上阻止USB儲存裝置,例如使用udev規則、修改fstab檔案或使用USBGuard實用程式。透過實施這些方法,您可以增強系統的安全性並保護其免受透過USB裝置引入的潛在威脅。重要的是定期檢查和更新您的安全措施,以確保您的Linux伺服器保持安全。

更新於:2023年7月26日

3K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.