21 KiB
Лабораторные работы по курсу RH199 (RHCSA)
top
Подготовка виртуальных хостов для выполнения лабораторных работ.
лабораторные работы начинаются с 3-й главы
- Управление локальными пользователями и группами.
- Управление доступом к файлам.
- Настройка SELinux.
- Настройка производительности системы.
- Установка и обновление программного обеспечения.
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
Управление локальными пользователями и группами.
- Подключиться по ssh к server1
da2001@Zenmint ~ $ ssh student@server1
- У всех вновь создаваемых пользователей пароль необходимо изменять каждые 30 дней.
[student@server1 ~]$ sudo -i
[sudo] пароль для student:
[root@server1 ~]# vim /etc/login.defs
необходимо изменить строку
PASS_MAX_DAYS 30
- Создать новую группу
consultants
с GID 35000.
[root@server1 ~]# groupadd -g 35000 consultants
- Настроить административные права членов группы
consultants
, чтобы они могли выполнять любые команды от любых пользователей. best practices RedHat не редактировать существующие системные файлы, а создавать свои в соответствующих директориях. Создадим файл vim/etc/sudoers.d/consultants
[root@server1 ~]# vim /etc/sudoers.d/consultants
добавить строку
%consultants ALL=(ALL) ALL
- Создать пользователей
consultant1
,consultant2
, иconsultant3
и задать им в качестве дополнительной группыconsultants
.
[root@server1 ~]# useradd -G consultants consultant1
[root@server1 ~]# useradd -G consultants consultant2
[root@server1 ~]# useradd -G consultants consultant3
- Учётные записи пользователей
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
- Изменить политику паролей для учетной записи
consultant2
, чтобы нужно было менять пароль каждые 15 дней.
[root@server1 ~]# chage -M 15 consultant2
- Пользователи
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
Управление доступом к файлам.
- На server1 создать директорию
/home/techdocs
.
[student@server1 ~]$ sudo -i
[sudo] пароль для student:
[root@server1 ~]# mkdir /home/techdocs
- Создать группу
techdocs
, изменить группу владельца директории/home/techdocs
на группуtechdocs
.
[root@server1 ~]# groupadd techdocs
[root@server1 ~]# chgrp techdocs /home/techdocs/
- Создать пользователей
tech1
,tech2
и добавить их в группуtechdocs
.
[root@server1 ~]# useradd -G techdocs tech1
[root@server1 ~]# useradd -G techdocs tech2
- Убедиться, что пользователи
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 ~]$ выход
- Для директории
/home/techdocs
установить следующие разрешения: setgid (2), чтение/запись/исполнение для владельца и группы (7), для остальных нет никаких прав (0).
[root@server1 ~]# chmod 2770 /home/techdocs/
- Проверить, что разрешения установлены корректно.
[root@server1 ~]# ls -ld /home/techdocs/
drwxrws---. 2 root techdocs 6 окт 9 03:36 /home/techdocs/
- Проверить, что члены группы
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: Отказано в доступе
- Изменить глобальный скрипт загрузки. Обычные пользователи должны иметь 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.
- На server1 запустите браузер и введите адрес
http://server2/lab.html
. Отобразится сообщениеForbidden You don't have permission to access this resource.
- Изучите и определите проблему 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
... дальнейший вывод отброшен ...
- Отобразите тип контекста 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/
- Устраните проблему SELinux, из-за которой Apache не может обслуживать веб-контент.
как видно из предыдущего пункта, в новой папке web сервера невено установлен тип контекста SELinux. Необходимо его изменить.
[root@server2 ~]# semanage fcontext -a -t httpd_sys_content_t '/webserver(/.*)?'
[root@server2 ~]# restorecon -vR /webserver
- Убедитесь, что проблема SELinux решена и Apache может обслуживать веб-контент.
[root@server2 ~]# curl http://server2/lab.html
This is the html file for the SELinux final lab on SERVER2.
Chapter6
Настройка производительности системы.
- Измените текущий профиль для server1 на
balanced
.
[root@server1 ~]# tuned-adm profile balanced
- Два процесса на сервере сильно загружают процессор. Измените приоритет этих процессов на значение 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
- Проверить, находится ли система в активированном состоянии. Если система активирована, необходимо отменить регистрацию и удалить системный репозиторий, который устанавливается при регистрации.
[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
- Используя полный установочный 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
- Установить пакет 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
- Установить пакет
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
- Выполнить проверку установленных пакетов и модулей.
[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