Как запретить системные вызовы, GNU/Linux

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

Задний -конец представляет собой выделенную машину GNU/Linux, где для каждого участника будет создан пользователь, причем все такие пользователи будут частью группы пользователей. Исходники, отправленные любым конкретным пользователем, будут храниться в домашнем каталоге пользователя, а затем компилироваться и выполняться для проверки на различных тестовых примерах.

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

К настоящему моменту я вижу следующие места, куда можно поставить такой чекер:

  • Front -end/pre -анализ компиляции-исходник, уже проверенный в системе, но еще не скомпилированный. Простая проверка текста на имена системных вызовов. Решение, зависящее от платформы -, независимое от компилятора -, зависящее от языка -.
  • Патч для компилятора-приводит к сбою GCC (или любого другого компилятора, включенного в цепочку инструментов -), всякий раз, когда встречается системный вызов. Платформа -зависит, компилятор -зависит, язык -не зависит от решения (, если мы разместим средство проверки «достаточно далеко» ). Совместимость также может быть потеряна. На самом деле, мне эта альтернатива больше всего не нравится.
  • Запускать -средство проверки времени-всякий раз, когда из процесса вызывается системный вызов, завершать этот процесс и сообщать об этом. Это решение не зависит от компилятора и языка, но зависит от платформы -. Я согласен с этим, так как я разверну заднюю часть -на аналогичных платформах в короткие -и средние -сроки.

Итак, вопрос :в том, предоставляет ли GNU/Linux администратору возможность запрещать использование системных вызовов для группы пользователей, пользователя или конкретного процесса? Это может быть политика безопасности или облегченная утилита GNU.

Я пытался зайти в Google, но Google сегодня меня невзлюбил.

7
задан iehrlich 4 July 2017 в 18:24
поделиться