diff --git a/module2/02_mac_selinux/tasks.md b/module2/02_mac_selinux/tasks.md new file mode 100644 index 0000000..0cdad15 --- /dev/null +++ b/module2/02_mac_selinux/tasks.md @@ -0,0 +1,76 @@ +# Задания + +### 0. Инициализация SELinux +Запустите следующие команды, чтобы инициализировать SELinux: +``` +$ sudo apt install selinux-basics selinux-policy-default auditd +$ sudo selinux-activate +$ reboot +``` +Вы установили утилиты для работы с selinux, политики по-умолчанию, созданные для популярных пакетов и демон для аудита всех действий пользователя. Активировали selinux, собрав модули политик по-умолчанию и добавив параметры запуска с selinux в grub. + +После перезагрузки проверьте, что selinux активирован. К каждому файлу и процессу SELinux прикрепляет поля: пользователь, роль, домен(тип), чувствительность(степень секретности). Изменение файловой системы может занять какое-то время. +``` +$ sudo check-selinux-installation +$ getenforce +``` + +Действия пользователей (процессов) с объектами (файлами) проверяются в начале Linux DAC, а затем SELinux модулями. В режиме Permissive все нарушения политик SELinux будут только логироваться. + +Установите режим `Enforcing` в конфигурационном файле `/etc/selinux/config` и перезагрузите систему. +``` +$ sestatus -v +``` + +### 1. +Скачайте проект с примером политик SELinux c помощью `apt`: +``` +$ sudo apt install selinux-policy-src +``` +Определите местоположение файла `selinux-policy-src.tar.gz` с помощью `dpkg` и распакуйте себе в домашнюю директорию пользователя. Изучите README и INSTALL. + +### 2. +Установите в систему документацию для политик selinux. +``` +$ sudo sepolicy manpage -a -p /usr/local/man/man8 +$ sudo mandb +``` +Проверьте, что открывается документация для `httpd_selinux`. Обратите внимание на строки с `ngnix`. + +### 3. +Изучите ряд команд selinux. + +Выведите булевые переменные для модуля `httpd_` командами `getsebool -a` и `semanage boolean -l`. По принятому соглашению, глобальные переключатели правил начинаются с `allow_` и `use_`, переключатели модулей начинаются с их названия. + +Выполните поиск правил на которые повлияет переключатель `httpd_enable_ftp_server`. +``` +sesearch –b httpd_enable_ftp_server –A +``` + +Попробуйте также команды: +- `semanage fcontext -l` (информация о контекстах), +- `ls -Z` (SELinux настройки для файлов директории), +- `ps Zaux` (SELinux настройки для работающих процессов), +- `seinfo -t` (Вывести список контекстов). + + +### 4. +Хостинговые компании часто организуют для своих пользователей доступ к одной из папок в домашней директории пользователя по http по ссылке `http://site/~user/index.html`. Попробуем это повторить с политиками selinux, уменьшающими потенциальный ущерб для системы от взлома сервера. + +Создайте папку www в домашней директории. Добавьте пользователя в группу `www-data` и установите права на директорию `~/www` 0755. + +Установите nginx, если он ещё не установлен. Сконфигурируйте http веб-север со следующими настройками: +``` +location ~ ^/~(.+?)(/.*)?$ { + alias /home/$1/www$2; + autoindex on; +} +``` + +Обратитесь к сайту командой `curl`. При правильно работающей политике, доступ должен быть запрещён. + +Включите доступ к домашним директориям из контекста `httpd` +``` +setsebool –P httpd_enable_homedirs on + +Проверьте, что доступ появился. \ No newline at end of file