Как сделать так, чтобы 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 и внести любые изменения в конфигурационные файлы компьютера, включая замену образа ядра на новый (тем самым включив драйверы сетевой карты).
Все дело в том простом факте: если у вас есть физический доступ к компьютеру, вы можете изменить на нем все, что угодно (при наличии знаний и инструментов).
Итак, вот несколько возможных способов:
Если пользователи не обладают глубокими знаниями Linux, токомпиляция ядра Linuxбез драйверов сетевых карт (не забывайте о сетевых картах USB) в ядре будет достаточно, по моему мнению.
Также вы можете отключить сетевую карту в настройках BIOS — но, опять же, эти настройки можно сбросить, если у вас есть физический доступ к компьютеру.
Вы можете установитьiptablesправила отклонения любого внешнего сетевого трафика.
Использоватьфизическое устройство безопасностикак комплект для блокировки порта;
решение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-серверу для работы требуются сетевые системные вызовы, и он не запускается должным образом.