Debian GNU/Linux имеет ethtool и сетевые инструменты для установки скорости Ethernet.
Пример:
hwinfo --netcard --short network: wlp4s0 Atheros AR928X Wireless Network Adapter (PCI-Express) enp5s0 Broadcom NetLink BCM57780 Gigabit Ethernet PCIe
ethtool enp5s0 Settings for enp5s0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full
ethtool -s enp5s0 speed 100 duplex full
Да, вы можете использовать cgroups и SELinux / AppArmor исключительно для мониторинга и управления произвольным код, который вы будете выполнять.
С помощью контрольных групп вы можете сделать следующее:
cpuset
памяти
, отслеживая даже вилы. См. Пример https://github.com/gsauthof/cgmemtime . lo
, с помощью подсистемы net_prio
. А с помощью SELinux / AppArmor вы можете ограничить доступ процесса для чтения / записи.
Примечание. Я не знаком с AppArmor, но это система обязательного контроля доступа (MAC), а это значит, что защита записи и чтения - это его работа.
Использование этих систем зависит от написания правильных конфигураций. Конечно, все это легче сказать, чем сделать. Итак, вот несколько справочных ссылок, которые помогут вам начать:
Удачи!
Я бы отказался от SELinux для AppArmor , только если бы я использовал Ubuntu . (на самом деле довольно сложно)
LXC сам по себе небезопасен. Если вам нужна безопасность, вы должны использовать их через libvirt (на основе SELinux MLS ).
Ваша проблема бесконечна , поэтому не пытайтесь найти какое-либо решение в готовом виде и без бесконечного времени, помните, что даже kernel.org был запущен, а совсем недавно ФБР заявило, что кто-то использовал их системы в течение многих лет и до сих пор не был обнаружен.
Я выберу LXC / libvirt для довольно хорошей безопасности или попробую «новые» прозрачные контейнеры Intel , которые используют очень легкую виртуальную машину для вашего контейнера с понятным использованием из DAX / KSM (я не тестировал их, но они действительно выглядят очень многообещающими).
Если вас беспокоит использование ядра, grsecurity - ваше решение, но вам придется интегрировать его с вашим контейнерным решением (головная боль наверняка).
Это, конечно, непростая задача, LXC / libvirt действительно удобны, но, возможно, лучше использовать чистые контейнеры.
Докер? Я не использовал / не хотел бы использовать докеры для большего, чем локальное тестирование, когда не было доступного бродячего бокса, им нужно больше работы и лучшее сообщество.
Конечно, контейнеры systemd тоже хороши, но я предполагаю, что они вам не нравятся / вы их не хотите, потому что вы даже не упомянули о них, и они не зависят от производителя.
Если вам нужно что-то «попроще» и более любительское, вы можете попробовать firejail , я использовал его для некоторых настольных «приложений», и он выполняет свою работу (довольно легко создать шаблон для вашего пользовательского приложения используйте "частные" монтирования поверх ваших каталогов и ограничьте сеть только для локального использования, порожденные процессы наследуются для родительского и продолжается ...).
Ура и получайте удовольствие, не сходя с ума. ;)
Возможно, вы захотите изучить системы грид-вычислений. В частности, BOINC ( http://boinc.berkeley.edu ) проверяет почти все ваши ящики.
Я считаю, что он работает с вашими параметрами как таковыми:
fs: может читать / писать в свой собственный каталог, больше нигде
net: можно настроить только для разрешения сетевого доступа к вашему серверу BOINC, но не t по умолчанию из коробки IIRC
mem: да, отдельные ограничения памяти для простаивающих и не простаивающих машин
cpu: да, можно даже сказать «не запускать, если компьютер не простаивает»
{ {1}}seccomp-bpf - еще один вариант, который хорошо работает для OpenSSH, vsftpd и Chromium. Он имеет только exit(), sigreturn(), read(), но также использует write(), хотя позволяет фильтровать системные вызовы с помощью настраиваемых правил Berkeley Packet Filter. Он также может использоваться в сочетании с cgroups для памяти, cpu и т.д....