You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4.7 KiB

Задания

0. Инициализация SELinux

Источник: https://wiki.debian.org/SELinux/Setup

Запустите следующие команды, чтобы инициализировать 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

Проверьте, что доступ появился.