Ограничения процессов с привилегиями суперпользователя.

Процессы, работающие с привилегиями суперпользователя, обнаружат, что на привилегированные вызовы, которые они могут делать, накладывается множество ограничений. Большинство ограничений спроектировано для ограничения деятельности, которая повлияла бы на ресурсы вне тюрьмы. Эти ограничения включают следующие запреты на:

  • изменение работающего ядра путем непосредственного доступа или загрузки модулей ядра;
  • монтирование и демонтирование файловых систем; создание узлов устройств;
  • изменение параметров ядра времени выполнения, таких, как большинство установок sysctl;
  • изменение флагов уровня безопасности;
  • изменение любых сетевых настроек, интерфейсов, адресов и элементов таблицы маршрутизации;
  • доступ к непосредственным (сырым) (raw), переключающим (divert) или маршрутизирующим (routing) сокетам. Эти ограничения предотвращают доступ к возможностям, которые дают возможность имитировать IP-номера или создавать «подрывной» трафик;
  • доступ к сетевым ресурсам, не связанным с тюрьмой. Конкретнее, попытка привязать зарезервированный номер порта для всех доступных адресов приведет к привязке лишь адреса, связанного с тюрьмой;
  • влияющие на систему хоста административные действия, такие, как перезагрузка.
  • Другие привилегированные действия разрешаются постольку, поскольку они ограничены пределами тюрьмы.
  • Разрешается отправка сигналов любому процессу в пределах тюрьмы.
  • Разрешается удаление или изменение владельца и режима любого файла внутри тюрьмы, пока флаги файла допускают запрошенное изменение.
  • Суперпользователь может читать файл владельца с любым UID, если он доступен через пространство имен файловой системы тюрьмы.
  • Разрешается привязка номеров портов TCP и UDP к IP-адресу тюрьмы.

Эти ограничения на доступ суперпользователя ограничивают область действия процессов, работающих с привилегиями суперпользователя, позволяя беспрепятственно выполняться большинству приложений, но предотвращая вызовы, которые могли бы позволить приложению получить доступ за пределами тюрьмы и повлиять на другие процессы или общесистемную конфигурацию.

 

Еще материалы

  • Процедуры вычисления приоритета потока -

    Вычисления приоритета, использованные в алгоритме кратковременного планирования, разбросаны в различных частях системы. Периодически запускаются две процедуры, schedcpuQ и roundrobinQ. SchedcpuQ пересчитывает приоритеты потоков раз в секунду, используя формулу 4.2, и обновляет значение kg_slptime для потоков, заблокированных вызовом sleepQ. Процедура roundrobinQ запускается 10 раз в секунду и заставляет систе­му перепланировать потоки в (непустой) очереди с самым высоким приоритетом в режиме карусели, что дает каждому потоку квант времени в 100 миллисекунд.

  • Учет использования ресурсов -

    Система поддерживает простую форму учета использования ресурсов. По завершении каждого процесса учетная запись, описывающая использованные этим процессом ре­сурсы, записывается в системный файл учета.

  • Идентификаторы и SETID -

    FreeBSD реализует возможность setgid путем установки в нулевом элементе мас­сива дополнительных групп процесса, который выполняет программу setgid, значения группы этого файла. После этого можно проверять права доступа, как если бы это был обычный процесс. Из-за дополнительной группы программа setgid может иметь воз­можность доступа к большему количеству файлов, чем процесс пользователя, запус­кающий программу без этой особой привилегии.

  • Идентификаторы (Часть 2) -

    Часто пользователю нужно предоставить дополнительные ограниченные привиле­гии. Например, пользователь, который хочет отправить сообщение, должен иметь воз­можность добавить сообщение в почтовый ящик другого пользователя. Разрешение записи в почтовый ящик назначения для всех пользователей дало бы возможность пользователю, не являющемуся владельцем ящика, изменять в нем сообщения (злона­меренно или неумышленно). Чтобы решить эту проблему, ядро допускает создание программ, которым предоставляются при их выполнении дополнительные привиле­гии.

  • Корректировка времени и интервальное время -

    Часто желательно на всех машинах сети поддерживать одно и то же время. Можно также поддерживать более точное время, чем возможно от базовых часов процессора. Например, без труда доступно оборудование, прослушивающее ряд радиостанций, рассылающих в Соединенных Штатах синхронизирующие сигналы UTC. Когда про­цессы на различных машинах приходят к соглашению относительно общего времени, им нужно изменить часы процессора своего хоста, чтобы согласовать их с сетевым значением времени.