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.

80 lines
4.7 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Задания
### 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
```
Проверьте, что доступ появился.