rhcsa_labs/rh199_(rapid)/labs_solutions.md

22 KiB
Raw Blame History

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


top

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

лабораторные работы начинаются с 3-й главы

  1. Управление локальными пользователями и группами.
  2. Управление доступом к файлам.
  3. Настройка SELinux.
  4. Настройка производительности системы.
  5. Установка и обновление программного обеспечения.

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
wget -P /home/student https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/h/htop-3.0.5-1.el8.x86_64.rpm

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 не может обслуживать веб-контент.
    как видно из предыдущего пункта, в новой папке web сервера невено установлен тип контекста SELinux. Необходимо его изменить.
[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

вверх


Chapter7

Установка и обновление программного обеспечения.

Все действия необходимо выполнять на server1

  1. Проверить, находится ли система в активированном состоянии. Если система активирована, необходимо отменить регистрацию и удалить системный репозиторий, который устанавливается при регистрации.
[root@server1 ~]# subscription-manager status

если окажется, что система находится в активированном состоянии, необходимо отменить регистрацию и удалить настроенные репозитории

[root@server1 ~]# subscription-manager unregister
[root@server1 ~]# ls /etc/yum.repos.d/
redhat.repo 
[root@server1 ~]# rm /etc/yum.repos.d/redhat.repo
  1. Используя полный установочный ISO образ, настроить локальный репозиторий с BaseOS и APPSteram. Проверку GPG не использовать. монтирование ISO в локальную директорию
[root@server1 ~]# echo '/dev/sr0    /iso    iso9660    ro    0 0' >> /etc/fstab

настройка локального репозитория

[root@server1 ~]# vim /etc/yum.repos.d/iso.repo
[BaseOS]
name = Red Hat Enterprise Linux 8 for x86_64 - BaseOS
baseurl = file:///iso/BaseOS
enabled = 1
gpgcheck = 0

[AppStream]
name = Red Hat Enterprise Linux 8 for x86_64 - AppStream
baseurl = file:///iso/AppStream
enabled = 1
gpgcheck = 0

проверка установленного репозитория

[root@server1 ~]# yum repolist 
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

repo id                                                             repo name
AppStream                                                           Red Hat Enterprise Linux 8 for x86_64 - AppStream
BaseOS                                                              Red Hat Enterprise Linux 8 for x86_64 - BaseOS
  1. Установить пакет xsane-gimp и модуль PostgreSQL client версии 12. установка xsane-gimp
[root@server1 ~]# yum install -y xsane-gimp

установка модуля PostgreSQL client версии 12

[root@server1 ~]# yum module list | grep postgres
postgresql           9.6             client, server [d]                    PostgreSQL server and client module

postgresql           10 [d]          client, server [d]                    PostgreSQL server and client module

postgresql           12              client, server [d]                    PostgreSQL server and client module

postgresql           13              client, server [d]                    PostgreSQL server and client module
[root@server1 ~]# yum module install -y postgresql:12/client
  1. Установить пакет htop-3.0.5-1.el8.x86_64.rpm из директории /home/student.
[root@server1 ~]# yum localinstall /home/student/htop-3.0.5-1.el8.x86_64.rpm 
  1. Выполнить проверку установленных пакетов и модулей.
[root@server1 ~]# yum list installed | grep xsane-gimp
xsane-gimp.x86_64                                  0.999-30.el8                                   @AppStream 
[root@server1 ~]# yum module list | grep postgresql
postgresql           9.6             client, server [d]                       PostgreSQL server and client module                                                                                                                                                                                              
postgresql           10 [d]          client, server [d]                       PostgreSQL server and client module                                                                                                                                                                                              
postgresql           12 [e]          client [i], server [d]                   PostgreSQL server and client module                                                                                                                                                                                              
postgresql           13              client, server [d]                       PostgreSQL server and client module  

в строке 12 версии отмечено [e]nabled, [i]nstalled

[root@server1 ~]# rpm -qa | grep htop
htop-3.0.5-1.el8.x86_64

вверх