Информационная безопасность

Инструментарий


Вот они, наши основные помощники по помещению приложения в "тюрьму":

  • chroot - основная утилита, описанная выше, делает системный вызов chroot()
  • chrootuid - функционально отличается от просто chroot лишь тем, что может еще и менять UID процесса посредствов setuid() - эта утилита может быть полезной, если вы хотите, чтобы сервис работал не от root, а его авторы не предусмотрели такой возможности (может отсутствовать в вашем дистрибутиве)
  • ldd - выводит информацию о зависимостях от общедоступных (shared) библиотек
  • strace - позволяет отслеживать системные вызовы и сигналы, чрезвычайно мощная утилита
  • практический опыт - чем больше, тем лучше
  • Если помещенное в CE приложение не работает или работает не так, как нужно, то алгоритм отладки такой:

    1. с помощью ldd выясняем, какие из библиотек требуются, и копируем их в CE (естественно, сохраняя структуру каталогов)
    2. внимательно смотрим вывод программы и лог-файлы - часто запускаемый сервис сам говорит, что ему не хватает для работы
    3. анализируем лог-файлы сервиса, лежащие уже внутри CE (если таковые имеются)
    4. запускаем программу через strace и сохраняем вывод STDOUT в файл для дальнейшего анализа: strace chroot /chroot/service /path/to/service 2> ./strace.log

    5. проверяем права доступа на файлы и каталоги внутри CE
    6. в случае неудачи - пытаемся еще раз пройтись по этой цепочке, думаем, советуемся со знакомым гуру, идем гуглить и совершаем прочие эзотерические действия.
    7. Помимо уже упомянутых утилит, существуют и более продвинутые инструментальные решения по созданию CE, например - jailkit (работающий, кстати, не только на Linux, но и на FreeBSD, OpenBSD и MacOSX). Однако, по сути, этот пакет лишь делает за вас часть рутины, в любом случае пригодится знание того, как собрать CE руками.

      Еще один практический совет - автоматизируйте свой труд, создавайте shell-скрипты генерации CE, постепенно дописывая их по ходу мигрирования сервиса в CE - тем самым вы избавите себя от ненужной механической работы и снизите вероятность ошибки.



      Содержание раздела