Я изучаю основы работы SELinux и считаю полезным вызвать отказ. Мой тестовый компьютер работает под управлением CentOS 7, это базовая установка сервера без каких-либо дополнительных сервисов, и Getenforce сообщает «Enforcing». Поэтому я был уверен, что сделать / root доступным для чтения всему миру и попытаться прочитать файлы оттуда как непривилегированный пользователь, поможет. Но не повезло! Кто-нибудь может предложить несколько быстрых тестов? Попытка получить доступ к путям или открыть порты и т. Д.
В идеале я ищу простые команды оболочки, которые бы ЦАП не ограничивал, но MAC это заметит и откажет. Поэтому я не собираюсь компилировать сделанные на заказ программы или устанавливать конкретные службы (например, веб-сервер) для достижения этой цели. Это ценно, поскольку предоставляет общий и понятный способ увидеть SELinux в действии.
У меня нет проблем с изменением DAC (т.е. разрешений файловой системы), чтобы сделать их менее строгими, чем они были бы по умолчанию в рамках теста.
Ответы:
Чтобы продемонстрировать утилиту SELinux для обнаружения ошибок для кода стороннего / собственного разработчика, вот тест защиты памяти (модифицирующий первый пример кода здесь ):
Компилировать и показывать по умолчанию (не перехвачено)Измените логическое значение, чтобы уловить проблему:
источник
Это ясно демонстрирует политику MAC, в которой эквивалентный ЦАП мог быть обойден при базовой установке CentOS 7.
По умолчанию (в CentOS на момент написания статьи) непривилегированные пользователи, не являющиеся системными пользователями, вошли в систему как роль «undefined_u». Однако мы можем изменить нашу систему так, чтобы вместо непривилегированного пользователя «Алиса» была назначена роль «user_u». Политики по умолчанию могут быть сделаны, чтобы явно ограничить эту роль только небольшим количеством дополнительной конфигурации.
Теперь отключите возможность для этих пользователей выполнять файлы, расположенные в их домашних каталогах и / tmp. Еще раз, по умолчанию разрешено такое поведение. Выполнение этой команды может занять некоторое время .
Теперь (с нашим непривилегированным пользователем) мы можем войти в систему и попытаться выполнить что-то в одной из этих областей, где нет доступа. Как видите, нам отказано.
Наконец, мы можем просмотреть журнал AVC, чтобы увидеть наш отказ SELinux.
источник
Если вы не изменили свои политики на вкладке Boolean в system-config-selinux (или в / etc / selinux / policy), то по умолчанию должно реагировать на следующее (NB, вы также можете установить setroubleshoot для более глубокого погружения) :
Затем перезагрузите веб-сервер и попытайтесь получить доступ http: // localhost / ks с помощью веб-браузера. Вы должны увидеть сообщение «Запрещено». Если вы находитесь в хвосте
/var/log/audit/audit.log
или если вы бежитеausearch -m avc -ts recent
, то вы должны увидеть сообщение:type=AVC msg=audit(1391277951.222:266): avc: denied { read } for pid=1731 comm="httpd" name="ks" dev=sda1 ino=22351 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined u:object r:default t:s0 tclass=dir
Затем вы можете изменить контекст SELinux,
chcon -Rv --reference /var/www/html /install/ks
если вы не хотите отключать SELinux, но иметь доступ к ресурсу.РЕДАКТИРОВАТЬ: извините, не видел, что вы сказали "не веб-сервер". Попробуйте
chcon -u fake_u <filename>
использовать непривилегированную учетную запись в системном файле.источник
установить два небольших пакета - без зависимостей
запустить FTP-сервер
создать файл в корне дома
перейти из корневого каталога в FTP-каталог.
примечание: переместите, не копируйте, или текст файла изменится
войдите в свой FTP-сервер как пользователь FTP-клиента и попытайтесь получить доступ к новому файлу.
примечание: автозаполнение вкладки здесь не будет работать
просмотреть отказ в необработанных журналах
или если вы
setroubleshoot*
установилиисточник