Red Hat System Administration II 8.2

Упражнение под руководством преподавателя: Управление контекстом файлов SELinux

В этой лабораторной работе вы измените контекст SELinux для каталога и его содержимого.

Результаты

Вы сможете настроить HTTP-сервер Apache для публикации веб-содержимого из нестандартного корневого каталога документа.

Войдите на workstation как пользователь student с паролем student.

На workstation выполните команду lab selinux-filecontexts start. Эта команда запускает подготовительный сценарий, который проверяет доступность машины servera в сети. Сценарий также устанавливает службу httpd и разрешает HTTP-подключения в брандмауэре на servera.

[student@workstation ~]$ lab selinux-filecontexts start
  1. С помощью команды ssh войдите на машину servera как пользователь student. Системы настроены на использование ключей SSH для аутентификации, поэтому пароль не требуется.

    [student@workstation ~]$ ssh student@servera
    ...output omitted...
    [student@servera ~]$ 
  2. Выполните команду sudo -i, чтобы переключиться на пользователя root. Пароль для пользователя student — student.

    [student@servera ~]$ sudo -i
    [sudo] password for student: student
    [root@servera ~]# 
  3. Настройте Apache на использование нестандартной корневой папки документов.

    1. С помощью команды mkdir создайте новую корневую папку документов /custom.

      [root@servera ~]# mkdir /custom
    2. С помощью команды echo создайте файл index.html в корневой папке документов /custom.

      [root@servera ~]# echo 'This is SERVERA.' > /custom/index.html
    3. Настройте Apache на использование нового расположения корневой папки документов. Для этого отредактируйте файл конфигурации Apache /etc/httpd/conf/httpd.conf, заменив два экземпляра /var/www/html на /custom.

      ...output omitted...
      DocumentRoot "/custom"
      ...output omitted...
      <Directory "/custom">
      ...output omitted...
  4. Запустите и включите веб-службу Apache и убедитесь, что она работает.

    1. С помощью команды systemctl запустите и включите веб-службу Apache.

      [root@servera ~]# systemctl enable --now httpd
    2. Выполните команду systemctl, чтобы убедиться, что служба работает.

      [root@servera ~]# systemctl status httpdhttpd.service - The Apache HTTP Server
         Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
         Active: active (running) since Mon 2019-03-25 19:16:48 CET; 15h ago
           Docs: man:httpd.service(8)
       Main PID: 6565 (httpd)
         Status: "Total requests: 16; Idle/Busy workers 100/0;Requests/sec: 0.000285; Bytes served/sec:   0 B/sec"
         Tasks: 213 (limit: 11406)
         Memory: 37.3M
         CGroup: /system.slice/httpd.service
                 ├─6565 /usr/sbin/httpd -DFOREGROUND
                 ├─6566 /usr/sbin/httpd -DFOREGROUND
                 ├─6567 /usr/sbin/httpd -DFOREGROUND
                 ├─6568 /usr/sbin/httpd -DFOREGROUND
                 └─6569 /usr/sbin/httpd -DFOREGROUND
      
      Mar 25 19:16:48 servera.lab.example.com systemd[1]: Starting The Apache HTTP Server...
      Mar 25 19:16:48 servera.lab.example.com httpd[6565]: Server configured, listening on: port 80
      Mar 25 19:16:48 servera.lab.example.com systemd[1]: Started The Apache HTTP Server.
  5. В веб-браузере на workstation попробуйте открыть http://servera/index.html. Вы увидите сообщение о том, что у вас нет разрешения на доступ к файлу.

  6. Чтобы разрешить доступ к файлу index.html на servera, необходимо настроить SELinux. Создайте правило SELinux, которое задает тип контекста httpd_sys_content_t для каталога /custom и всех файлов в нем.

    [root@servera ~]# semanage fcontext -a \
    -t httpd_sys_content_t '/custom(/.*)?'
  7. Выполните команду restorecon, чтобы изменить контекст файлов.

    [root@servera ~]# restorecon -Rv /custom
    Relabeled /custom from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
    Relabeled /custom/index.html from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
  8. Снова попробуйте открыть http://servera/index.html. Вы увидите сообщение This is SERVERA.

  9. Выйдите с servera.

    [root@servera ~]# exit
    logout
    [student@servera ~]$ exit
    logout
    Connection to servera closed.
    [student@workstation ~]$ 

Конец

На workstation запустите сценарий lab selinux-filecontexts finish, чтобы закончить упражнение.

[student@workstation ~]$ lab selinux-filecontexts finish

Упражнение завершено.