首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟没有grsecurity的/proc/sys/内核/grsecurity/deny_new_usb?

如何模拟没有grsecurity的/proc/sys/内核/grsecurity/deny_new_usb?
EN

Unix & Linux用户
提问于 2019-01-29 14:12:47
回答 1查看 227关注 0票数 4

如何灵活地启用和禁用新USB设备(运行驱动程序代码负责这些设备)在运行时没有Grsecurity补丁?

是否有其他方法或具有此功能的替代内核修补程序?

重新打开:关于提议的重复问题如何安全地将卡/设备插入Linux计算机?的差异和评论

  • 链接的问题总是有选择地接受某些设备,这个问题要求在选定的时间内接受所有的设备(在其他时刻否认任何东西)。
  • 主要答案 (USBGuard)是一种用户解决方案。它似乎只会阻止udev的行动。不太可能阻止扫描块设备的分区、创建网络接口和查询其元数据或注册某些/dev/input/eventX节点。内核内的攻击表面似乎暴露了。
  • 另一个答案部分链接到Grsecurity,这个问题的声明明确排除了该链接。

据我所知,有计划使屏幕锁定的桌面Linux系统不接受任何USB设备,直到屏幕被解锁。这意味着在某个地方可能会有一些补丁。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-02-24 02:39:29

下面是我的Linux内核版本4.19.18的修补程序:

代码语言:javascript
复制
From e5be5f1e696f5d41d992ac67d688c40045e81e95 Mon Sep 17 00:00:00 2001
From: Vitaly _Vi Shukela <vi0oss@gmail.com>
Date: Tue, 29 Jan 2019 21:01:08 +0300
Subject: [PATCH] Introduce dev.deny_new_usb sysctl flag

---
 drivers/usb/core/hub.c | 9 +++++++++
 kernel/sysctl.c        | 9 +++++++++
 2 files changed, 18 insertions(+)

diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index cc62707c0251..fb4483b80bac 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -46,6 +46,9 @@
  * change to USB_STATE_NOTATTACHED even when the semaphore isn't held. */
 static DEFINE_SPINLOCK(device_state_lock);

+/* Skip handling of USB device plugging. Like /proc/sys/kernel/grsecurity/deny_new_usb. */
+int deny_new_usb __read_mostly = 0;
+
 /* workqueue to process hub events */
 static struct workqueue_struct *hub_wq;
 static void hub_event(struct work_struct *work);
@@ -4933,6 +4936,12 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus,
            goto done;
        return;
    }
+
+   if (deny_new_usb) {
+       printk(KERN_WARNING "Denying insertion of new USB device because of /proc/sys/dev/deny_new_usb is set to nonzero");
+       goto done;
+   }
+
    if (hub_is_superspeed(hub->hdev))
        unit_load = 150;
    else
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index f77df9f5fdb5..b0c14ad347c7 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -114,6 +114,8 @@ extern unsigned int sysctl_nr_open_min, sysctl_nr_open_max;
 extern int sysctl_nr_trim_pages;
 #endif

+extern int deny_new_usb;
+
 /* Constants used for minimum and  maximum */
 #ifdef CONFIG_LOCKUP_DETECTOR
 static int sixty = 60;
@@ -1905,6 +1907,13 @@ static struct ctl_table debug_table[] = {
 };

 static struct ctl_table dev_table[] = {
+   {
+       .procname   = "deny_new_usb",
+       .data       = &deny_new_usb,
+       .maxlen     = sizeof(int),
+       .mode       = 0644,
+       .proc_handler   = &proc_dointvec,
+   },
    { }
 };

-- 
2.20.1

它基于Grsecurity的代码。它使用/proc/sys/dev/deny_new_usb而不是/proc/sys/kernel/grsecurity/deny_new_usb

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/497463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档