![如何使用“硬件密钥”来控制 Linux 网络](https://linux22.com/image/29457/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E2%80%9C%E7%A1%AC%E4%BB%B6%E5%AF%86%E9%92%A5%E2%80%9D%E6%9D%A5%E6%8E%A7%E5%88%B6%20Linux%20%E7%BD%91%E7%BB%9C.png)
有时我在电脑前无法控制自己,而且上网时很容易拖延。幸运的是,我的大部分工作不需要互联网。
所以我想有一种方法可以完全禁用Linux上的网络。要再次启用它,我需要一个可以充当密钥的 USB 记忆棒。
您对如何实施这种方案有什么建议吗?理想情况下,启用/禁用网络应该尽可能快速和自动。此外,我想要一种解决方案,一旦实施,就可以轻松地在不同的机器上进行设置。
编辑:我的笔记本电脑有类似的设置,但它并不像我喜欢的那样自动。我只需删除所有无线驱动程序并将它们的副本保留在 USB 记忆棒上。但该解决方案不易移植。所以我正在寻找如何改进它的想法。
答案1
也许结合 udev 规则和 iptables 技巧?
添加目标USB设备后,执行iptables -D OUTPUT -j DROP
;删除后,执行iptables -I OUTPUT DROP
有关脚本的详细信息,看看这里的指南
(用于lsusb
检索供应商信息)
编辑
嗯,这是为非 root 用户设计的,否则无法阻止 root 用户恢复它,除非 USB 密钥是互联网访问介质。
答案2
我找到了一种简单的方法来完成我想要的事情,所以我将其发布在这里作为可能需要类似东西的其他人的参考。
正如许多人指出的那样,如果您拥有 root 访问权限,则很难限制任何内容。所以我们的想法是限制 root 访问。我们可以使用pam_usb模块来做到这一点。我们可以将计算机设置为需要 USB 记忆棒才能以 root 身份登录。请参阅教程http://linuxconfig.org/linux-authentication-login-with-usb-device这解释了如何。
当我们不再拥有不受限制的根访问权限时,我们可以通过各种方式限制或禁用互联网/网络。
答案3
由于您的要求包括 root 无法绕过它,因此最好的办法可能是切换到 USB 网络接口。或者,如果您使用有线以太网而不是 USB 盘,请拔下以太网电缆。
USB 接口正常工作后,您将禁用板载接口。如果是无线的,则很可能它实际上是 PCI-E 卡(易于拆卸)。如果没有,您可以尝试卸下天线,这可能足以阻止其工作。
禁用以太网端口非常简单:用热胶填充它。这也是相当永久的。
您还可以从以下位置禁用您的连接其他结尾。例如,将您的 MAC 地址添加到路由器的阻止列表中。您当然可以重新登录路由器以重新启用它......但您首先需要网络访问权限,您需要转到另一台计算机才能获得网络访问权限。或者,如果是硬连线,请从交换机上拔下电缆。
如果其他人控制了网络设备,您可以与他/她交谈,看看是否可以在路由器上实施限制。
如果您是唯一的连接者,您也可以删除路由器/调制解调器等。或者只是它的电源砖。
(如果你真的真的只需要使用软件来做到这一点,你可以通过将网络管理从功能集中删除来锁定 root,这至少会迫使你重新启动......)