16.15. Другой пример: Использование MAC для защиты веб сервера
Пред. | Глава 16. Принудительный контроль доступа (MAC) | След.

## 16.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`.

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

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

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