rhcsa_labs/rh199_(rapid)/labs_solutions.md

16 KiB
Raw Blame History

Лабораторные работы по курсу RH199 (RHCSA)


top

Подготовка виртуальных хостов для выполнения лабораторных работ. лабораторные работы начинаются с 3-й главы 3. Управление локальными пользователями и группами. 4. Управление доступом к файлам. 5. Настройка SELinux. 6. Настройка производительности системы. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.


stand

Подготовка виртуальных хостов для выполнения лабораторных работ.

Для выполнения лабораторных работ потребуется настроить 2 виртуальных хоста

server1 - 192.168.10.10
user: student
password: student
root password: redhat

server2 - 192.168.10.11
user: student
password: student
root password: redhat

Дополнительно необходимо:
SERVER1
Перечень необходимых команд root (стоит это оформить в виде скрипта)

useradd student -G wheel
echo student | passwd student --stdin
echo '192.168.10.11    server2' >> /etc/hosts

SERVER2
Перечень необходимых команд root (стоит это оформить в виде скрипта)

useradd student -G wheel
echo student | passwd student --stdin
echo '192.168.10.10    server1' >> /etc/hosts
yum install httpd -y
mkdir /webserver
sed -i 's/\/var\/www\/html/\/webserver/g' /etc/httpd/conf/httpd.conf
systemctl enable --now httpd
echo "This is the html file for the SELinux final lab on SERVER2." > /webserver/lab.html
firewall-cmd --add-service=http
firewall-cmd --add-service=http --permanent


Chapter3

Управление локальными пользователями и группами.

  1. Подключиться по ssh к server1
da2001@Zenmint ~ $ ssh student@server1
  1. У всех вновь создаваемых пользователей пароль необходимо изменять каждые 30 дней.
[student@server1 ~]$ sudo -i
[sudo] пароль для student: 
[root@server1 ~]# vim /etc/login.defs 

необходимо изменить строку

PASS_MAX_DAYS	30
  1. Создать новую группу consultants с GID 35000.
[root@server1 ~]# groupadd -g 35000 consultants
  1. Настроить административные права членов группы consultants, чтобы они могли выполнять любые команды от любых пользователей.
    best practices RedHat не редактировать существующие системные файлы, а создавать свои в соответствующих директориях. Создадим файл vim /etc/sudoers.d/consultants
[root@server1 ~]# vim /etc/sudoers.d/consultants

добавить строку

%consultants    ALL=(ALL)       ALL
  1. Создать пользователей consultant1, consultant2, и consultant3 и задать им в качестве дополнительной группы consultants.
[root@server1 ~]# useradd -G consultants consultant1
[root@server1 ~]# useradd -G consultants consultant2
[root@server1 ~]# useradd -G consultants consultant3
  1. Учётные записи пользователей consultant1, consultant2, и consultant3 настроить таким образом, чтобы срок их действия истекал через 90 дней с текущей даты.
    узнать какая дата будет через 90 дней от текущей даты можно с помощью команды
[root@server1 ~]# date -d "+90 days" +%F

ограничить срок действия пароля

[root@server1 ~]# chage -E 2022-01-06 consultant1
[root@server1 ~]# chage -E 2022-01-06 consultant2
[root@server1 ~]# chage -E 2022-01-06 consultant3
  1. Изменить политику паролей для учетной записи consultant2, чтобы нужно было менять пароль каждые 15 дней.
[root@server1 ~]# chage -M 15 consultant2
  1. Пользователи consultant1, consultant2, и consultant3 при первом входе в систему должны изменить свои пароли в принудительном порядке.
[root@server1 ~]# chage -d 0 consultant1
[root@server1 ~]# chage -d 0 consultant2
[root@server1 ~]# chage -d 0 consultant3

Проверка корректности выполнения заданий
Наличие группы consultants, правильность её GID и члены группы

[student@server1 ~]$ cat /etc/group | grep consultants
consultants:x:35000:consultant1,consultant2,consultant3

Срок действия паролей, учётной записи и требование изменить пароль при первом входе в систему

[root@server1 ~]# chage -l consultant1
Последний раз пароль был изменён				: пароль должен быть изменён
Срок действия пароля истекает					: пароль должен быть изменён
Пароль будет деактивирован через				: пароль должен быть изменён
Срок действия учётной записи истекает				: янв 06, 2022
Минимальное количество дней между сменой пароля			: 0
Максимальное количество дней между сменой пароля		: 30
Количество дней с предупреждением перед деактивацией пароля	: 7
[root@server1 ~]# chage -l consultant2
Последний раз пароль был изменён				: пароль должен быть изменён
Срок действия пароля истекает					: пароль должен быть изменён
Пароль будет деактивирован через				: пароль должен быть изменён
Срок действия учётной записи истекает				: янв 06, 2022
Минимальное количество дней между сменой пароля			: 0
Максимальное количество дней между сменой пароля		: 15
Количество дней с предупреждением перед деактивацией пароля	: 7
[root@server1 ~]# chage -l consultant3
Последний раз пароль был изменён				: пароль должен быть изменён
Срок действия пароля истекает					: пароль должен быть изменён
Пароль будет деактивирован через				: пароль должен быть изменён
Срок действия учётной записи истекает				: янв 06, 2022
Минимальное количество дней между сменой пароля			: 0
Максимальное количество дней между сменой пароля		: 30
Количество дней с предупреждением перед деактивацией пароля	: 7

Наличие административных прав у членов группы consultants

[root@server1 ~]# cat /etc/sudoers.d/consultants 
%consultants    ALL=(ALL)       ALL

вверх


Chapter4

Управление доступом к файлам.

  1. На server1 создать директорию /home/techdocs.
[student@server1 ~]$ sudo -i
[sudo] пароль для student: 
[root@server1 ~]# mkdir /home/techdocs
  1. Создать группу techdocs, изменить группу владельца директории /home/techdocs на группу techdocs.
[root@server1 ~]# groupadd techdocs
[root@server1 ~]# chgrp techdocs /home/techdocs/
  1. Создать пользователей tech1, tech2 и добавить их в группу techdocs.
[root@server1 ~]# useradd -G techdocs tech1
[root@server1 ~]# useradd -G techdocs tech2
  1. Убедиться, что пользователи tech1, tech2 не могут создавать файлы в папке /home/techdocs.
[root@server1 ~]# su - tech1
[tech1@server1 ~]$ touch /home/techdocs/testfile
touch: невозможно выполнить touch для '/home/techdocs/testfile': Отказано в доступе
[tech1@server1 ~]$ выход
[root@server1 ~]# su - tech2
[tech2@server1 ~]$ touch /home/techdocs/
touch: установка временных отметок '/home/techdocs/': Отказано в доступе
[tech2@server1 ~]$ выход
  1. Для директории /home/techdocs установить следующие разрешения: setgid (2), чтение/запись/исполнение для владельца и группы (7), для остальных нет никаких прав (0).
[root@server1 ~]# chmod 2770 /home/techdocs/
  1. Проверить, что разрешения установлены корректно.
[root@server1 ~]# ls -ld /home/techdocs/
drwxrws---. 2 root techdocs 6 окт  9 03:36 /home/techdocs/
  1. Проверить, что члены группы techdocs (tech1, tech2) теперь могут создавать и редактировать файлы в директории /home/techdocs, а другие пользователи не могут.
[root@server1 ~]# su - tech1
[tech1@server1 ~]$ touch /home/techdocs/file1
[tech1@server1 ~]$ выход
[root@server1 ~]# su - tech2
[tech2@server1 ~]$ touch /home/techdocs/file2
[tech2@server1 ~]$ echo "Test" >> /home/techdocs/file1
[tech2@server1 ~]$ cat /home/techdocs/file1
Test
[tech2@server1 ~]$ выход
[root@server1 ~]# su - student
[student@server1 ~]$ touch /home/techdocs/file3
touch: невозможно выполнить touch для '/home/techdocs/file3': Отказано в доступе
[student@server1 ~]$ echo "Student test" >> /home/techdocs/file1
-bash: /home/techdocs/file1: Отказано в доступе
  1. Изменить глобальный скрипт загрузки. Обычные пользователи должны иметь umask при которой другие пользователи не смогут просматривать и изменять новые файлы и каталоги.
    создадим новый файл /etc/profile.d/local-umask.sh и скопируем в него блок, который имеет отношение к umask из файла /etc/profile, значение umask в первом упоминании заменим на 007.
    Важно обратить внимание - название файла обязательно должно иметь расширение .sh, т.к. только такие файлы проверяются.
[root@server1 ~]# vim /etc/profile.d/local-umask.sh
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 007
else
    umask 022
fi

Проверка корректности выполнения заданий.
проверим только последний пункт, т.к. все предыдущие проверяются в процессе выполнения назначим пользователю student временную маску 007, создадим новый файл и проверим его разрешения.

[student@server1 ~]$ umask 007
[student@server1 ~]$ touch file1
[student@server1 ~]$ ls -l
итого 0
-rw-rw----. 1 student student 0 окт  9 04:00 file1

остальные не имеют никаких разрешений на файл - то что было нужно в задании.

вверх


Chapter5

Настройка SELinux.

  1. На server1 запустите браузер и введите адрес http://server2/lab.html. Отобразится сообщение Forbidden You don't have permission to access this resource.
  2. Изучите и определите проблему SELinux, которая не позволяет Apache обслуживать веб-контент.
[root@server2 ~]# less /var/log/messages

поиском найти уведомления SELinux /sealert
скопировать и ввести первое упоминание вида sealert -l 8dcf4fc2-54e6-448d-91c6-ac047615927f
в сообщении будет предложение решение проблемы

[root@server2 ~]# sealert -l 8dcf4fc2-54e6-448d-91c6-ac047615927f
SELinux запрещает /usr/sbin/httpd доступ getattr к файл /webserver/lab.html.

*****  Модуль restorecon предлагает (точность 94.8)  *************************

Если вы хотите исправить метку.$TARGETЗнак _PATH по умолчанию должен быть httpd_sys_content_t
То вы можете запустить restorecon. Возможно, попытка доступа была остановлена ​​из-за недостаточных разрешений для доступа к родительскому каталогу, и в этом случае попытайтесь соответствующим образом изменить следующую команду.
Сделать
# /sbin/restorecon -v /webserver/lab.html

... дальнейший вывод отброшен ...
  1. Отобразите тип контекста SELinux для стандартной и запрашиваемой директории web сервера.
[root@server2 ~]# ls -ldZ /var/www/html/ /webserver/
drwxr-xr-x. 2 root root system_u:object_r:httpd_sys_content_t:s0  6 окт  7 16:06 /var/www/html/
drwxr-xr-x. 2 root root unconfined_u:object_r:default_t:s0       40 окт  7 16:13 /webserver/
  1. Устраните проблему SELinux, из-за которой Apache не может обслуживать веб-контент.
[root@server2 ~]# semanage fcontext -a -t httpd_sys_content_t '/webserver(/.*)?'
[root@server2 ~]# restorecon -vR /webserver
  1. Убедитесь, что проблема SELinux решена и Apache может обслуживать веб-контент.
[root@server2 ~]# curl http://server2/lab.html
This is the html file for the SELinux final lab on SERVER2.

вверх


Chapter6

Настройка производительности системы.

  1. Измените текущий профиль для server1 на balanced.
[root@server1 ~]# tuned-adm profile balanced 
  1. Два процесса на сервере сильно загружают процессор. Измените приоритет этих процессов на значение 10. для запуска тестовых процессов можно использовать такие команды
cat /dev/zero >> /dev/null &
cat /dev/zero >> /dev/null &

отобразим процессы с сортировкой по загрузке процессора и выведем 2 последних
убедимся, что это процессы, которые сформированы нами

[root@server1 ~]# ps -aux --sort=pcpu | tail -2
root       17216 49.6  0.0   7448   908 pts/2    R    10:21   1:07 cat /dev/zero
root       17217 49.6  0.0   7448   940 pts/2    R    10:21   1:07 cat /dev/zero

для изменения приоритета выполним

[root@server1 ~]# renice -n 10 17216 17217
17216 (process ID) old priority 0, new priority 10
17217 (process ID) old priority 0, new priority 10

вверх