Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

Безопасность

Подписаться на эту рубрику по RSS

Security Enhanced Linux (SELinux) - это проект Агентства правительственной безопасности США (U.S. NSA). Репутация такого ведомс­тва говорит о серьезности проекта - там к безопасности относятся очень серьезно. Да и сам проект получился очень удачным - SELinux входит в со­став многих современных дистрибутивов и выясняется по умолчанию (правда, также по умолчанию не активизируется).

Далее...

Рассмотрим пример ACL, который позволяет работать DNS-серверу на машине. ACL будет состоять из двух частей. Первая часть будет содержать общий набор правил, предоставляющих базовый доступ. Эта часть универсальна - она подойдет не только для DNS-сервера, но и для разных остальных приложений, запущенных в Linux-системе.

     Во второй части будут описаны специфические для DNS-сервера правила, ограничивающие доступ к файлам, и определяющие возможности DNS-сервера. Как было написано ранее, набор правил будет представлен в виде shell-сценария, который содержит серию команд lidsconf.

     Сначала надо сделать системные исполнимые файлы и библиотеки доступными только для чтения. Обойти данное ограничение нужно только в LFS-оболочке. Итак, надо защитить каталоги /bin, /sbin, /usr и /opt:

Далее...

Теперь, когда известно, как работает LIDS, и знакомы ее основные опции, нужно приступить к практической реализации LIDS в системе.

     Нужно помнить, что написание ACL для всей системы - очень трудоемкая задача, поэтому, как и в случае с iptables, рекомендуется создать shell-сценарий, содержащий директивы lidsconf. Первой директивой будет lidsconf -Z - эта директива удаляет все ранее существующие ACL. Этот сценарий надо поместить в /etc/lids, что сделает его невидимым за пределами LFS-сессии.

Далее...

Возможности.

     В ACL из предыдущей статье описано действие GRANT, предостав­ляющее возможность CAP SETUID. А возможности до этого и не рассматривались, поэтому самое время их рассмотреть.

     LIDS предоставляет расширенное применение возможностей (однако, как было отмечено до этого, модуль возможностей (capability security module) нужно отключить в ядре). Кроме стандартных возможностей Linux, LIDS дает две собственные возможности:

  • CAP_HIDDEN — процессы с установленной возможностью CAPHIDDEN не будут отображаться в /рrос, что позволяет скрыть процесс от программы ps, lsof и top.
  • CAP_INIT_KILL — если эта возможность выключена для демона, то он не будет получать KILL-сигналы.

Далее...

В LIDS есть два типа ACL:

  • ACL файлов — контролирует доступ к файлам и каталогам.
  • ACL возможностей — регулирует возможности исполнимых файлов.

     ACL файлов.

     LIDS определяет четыре режима для объектов:

  • DENY - доступ к файлу запрещен. При обращении приложения (к примеру, Is или cat) к этому файлу, оно получит сообщение об ошибке "No such file or directory" (ENOET) - «Нет такого файла или каталога». Внешне будет выглядеть так, как будто файла не сущест­вует.
  • READ - объект может быть открыт исключительно в режиме «толь­ко чтение», запись запрещена.
  • WRITE — чтение и запись не ограничивается. LIDS не защищает этот файл.

Далее...

     Так как конфигурирование ядра уже было рассмотрено ранее, теперь можно заняться конфигурированием пользовательского уровня. Как и Grsecurity, LIDS позволяет управлять тем, как файлы и процессы будут взаимодействовать в системе. Кроме данного, LIDS предоставляет две очень полезные функции: LFS и «опечатывание» ядра.

     «Опечатывание» ядра (sealing the kernel).

     Загружаемые модули бывают полезны, так как они позволяют добавлять код в ядро во время выполнения ядра и без его перекомпиляции. Но, как было показано в главе 2, крекер может добавлять в ядро свои собственные модули, что крайне нежелательно. Особенно, самое лучшее решение - включить нужный код в состав ядра и отключить совсем поддержку загружаемых модулей, но вряд ли это решение будет удоб­ным.

     LIDS предлагает концепцию «опечатывания» ядра. В отдельных случаях ядро «опечатано», никто не может загрузить или выгрузить модуль. Опечатать ядро нужно с помощью команды lidsadm -I. Данную команду надо поместить в сце­нарии загрузки системы, только нужно убедиться, что до команды lidsadm -I все важные модули загружены.

Далее...

Начально LIDS была несложной системой обнаружения вторжения, но с годами процесс улучшался и трансформировался в комплексную систему обеспе­чения безопасности Linux-машины.

     Сейчас LIDS «доросла» до уровня Grsecurity и кое в чем даже превосходит ее. Преимуществом второй версии LIDS представляется поддержка LSM (загру­жаемых модулей безопасности), в ранних версиях такой поддержки не было, что затрудняло установку системы и работу с ней.

Далее...