Руководство FreeBSD
Пред. | Глава 15. Принудительный контроль доступа (MAC) | След.

# 15.15. Другой пример: Использование MAC для защиты веб сервера

Будет создано отдельное хранилище для веб данных, к которому пользователи должны иметь доступ. Это позволит `biba/high` управлять доступом к веб данным.

Начните с создания каталога для хранения веб данных:

    # mkdir /usr/home/cvs

Теперь инициализируйте его командой `cvs`:

    # cvs -d /usr/home/cvs init

Для начала необходимо включить политику `biba`, добавив `mac_biba_enable="YES"` в `/boot/loader.conf`. Предполагается, что ядро скомпилировано с поддержкой MAC.

Далее установите метку `biba/high` для всей системы по умолчанию.

В файл `login.conf`, класс default, необходимо внести следующие изменения:

    :ignoretime@:\
        :umask=022:\
        :label=biba/high:

Каждого пользователя необходимо поместить в класс по умолчанию; такая команда:

    # for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \
        /etc/passwd`; do pw usermod $x -L default; done;

быстро решит эту задачу.

Теперь создадим другой класс, web, копию класса default с меткой, установленной в `biba/low`.

Создайте пользователя для работы с основными веб данными, хранящимися в репозитории cvs. Этого пользователя необходимо поместить в новый класс, `web`.

Поскольку метка по умолчанию `biba/high`, на репозитории она будет той же. Веб данные должны иметь ту же метку, чтобы у пользователей был доступ к ним на чтение/запись. Веб сервер должен иметь доступ к тем же данным, к которым есть доступ у пользователей с меткой `biba/high`, для этого необходимо понизить метку данных.

Все, что потребуется, это следующий sh(1) скрипт, который может быть запущен из cron(8):

    PATH=/bin:/usr/bin:/usr/local/bin; export PATH;
    CVSROOT=/home/repo; export CVSROOT;
    cd /home/web;
    cvs -qR checkout -P htdocs;
    exit;

> Замечание: Во многих случаях в веб файлы `cvs` необходимо поместить теги Id.

Этот скрипт теперь может быть помещен в домашний каталог каталог пользователя `web`, необходимо также добавить следующую запись crontab(1):

    # Выполнять checkout web данных под меткой biba/low каждые 12 часов:
    0       */12       *       *       *       web    /home/web/checkout.sh

Эта запись будет извлекать HTML страницы каждые двенадцать часов.

Метод запуска веб сервера по умолчанию также должен быть изменен для запуска процесса с меткой `biba/low`. Это может быть сделано путем следующего изменения в скрипте `/usr/local/etc/rc.d/apache.sh`:

    command="setpmac biba/low /usr/local/sbin/httpd"

Настройки Apache должны быть изменены для работы с политикой `biba/low`. В этом случае необходимо указать для хранения лог файлов каталог с меткой `biba/low`, иначе будут возвращены ошибки “`access denied`”.

> Замечание: В этом примере необходимо указать в директиве `docroot` каталог `/home/web/htdocs`; или, Apache не сможет найти каталог с документами.

Необходимо также изменить другие параметры конфигурации, включая PID файл, `Scoreboardfile`, `DocumentRoot`, или любые другие настройки для каталогов, где необходим доступ на запись. При использовании `biba` будет запрещен доступ на запись во все каталоги сервера, на которых нет метки `biba/low`.

Пред. | Начало | След.
Реализация защищенной среды с MAC | Уровень выше | Решение проблем с инфраструктурой MAC

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.