Как навсегда отключить сетевое взаимодействие GNU/Linux?

Как навсегда отключить сетевое взаимодействие GNU/Linux?

Как сделать так, чтобы Ubuntu 12 не могла взаимодействовать с сетью, даже если в системе установлена ​​сетевая карта (к которой может быть подключен кабель)?

я нашелэтот ответкоторый рекомендует удалить драйверы сетевой карты, но я обеспокоен тем, что драйвер может быть переустановлен во время обновления. У меня нет большого опыта администрирования Linux.

Существует ли наилучшая практика запуска GNU/Linux без сетевых возможностей?

решение1

Это можно сделать, отключив различные сетевые возможности в ядре Linux. Отключение ВСЕХ сетевых опций будет разрушительным (потому что некоторые программы используют интерфейс loopback для работы - одна из них - X-сервер). Но что может помочь - отключите все драйверы сетевых устройств из ядра. Это обеспечит отсутствие внешней сетевой активности.

Но вот еще один момент - как вы и сказали:

but I'm concerned that the driver might be re-installed during an upgrade

Это предполагает, что пользователь, который делает обновления, имеет root-доступ к системе. Если это так - вы не сможете решить проблему с помощью программного решения. Поскольку у пользователя есть root-доступ (и знания) - он сможет вносить любые изменения.

Еще один момент — даже если у пользователя нет прав root — есть возможность загрузить живой дистрибутив Linux и внести любые изменения в конфигурационные файлы компьютера, включая замену образа ядра на новый (тем самым включив драйверы сетевой карты).

Все дело в том простом факте: если у вас есть физический доступ к компьютеру, вы можете изменить на нем все, что угодно (при наличии знаний и инструментов).

Итак, вот несколько возможных способов:

  1. Если пользователи не обладают глубокими знаниями Linux, токомпиляция ядра Linuxбез драйверов сетевых карт (не забывайте о сетевых картах USB) в ядре будет достаточно, по моему мнению.

  2. Также вы можете отключить сетевую карту в настройках BIOS — но, опять же, эти настройки можно сбросить, если у вас есть физический доступ к компьютеру.

  3. Вы можете установитьiptablesправила отклонения любого внешнего сетевого трафика.

  4. Использоватьфизическое устройство безопасностикак комплект для блокировки порта;

решение2

CONFIG_NET=n

Эти параметры управляют поддержкой сети в ядре. Но, как говорится в самой документации, это может сломать многие пользовательские программы, которые делают что-то сетевое:

menuconfig NET
    bool "Networking support"
    select NLATTR
    select GENERIC_NET_UTILS
    select BPF
    ---help---
      Unless you really know what you are doing, you should say Y here.
      The reason is that some programs need kernel networking support even
      when running on a stand-alone machine that isn't connected to any
      other computer.

      If you are upgrading from an older kernel, you
      should consider updating your networking tools too because changes
      in the kernel and the tools often go hand in hand. The tools are
      contained in the package net-tools, the location and version number
      of which are given in <file:Documentation/Changes>.

      For a general introduction to Linux networking, it is highly
      recommended to read the NET-HOWTO, available from
      <http://www.tldp.org/docs.html#howto>.

Я протестировал этот вариант:https://github.com/cirosantilli/linux-kernel-module-cheat/blob/71d673bac48f43a2e38f5e1e4f94b10da15b7cee/kernel_config_fragment#L58

Результат: многие (все?) сетевые системы возвращают статус сбоя и ничего не делают, например:

# nc -l -p 8000 127.0.0.1
nc: socket: Function not implemented

TODO: Сокеты UNIX? В этой версии их нет, ncа мне было лень пробовать.

Я по-прежнему могу использовать оболочку и вызывать основные утилиты, но, например, X-серверу для работы требуются сетевые системные вызовы, и он не запускается должным образом.

Связанный контент