#### Лабораторные работы по курсу RH199 (RHCSA) *** ###### top [Подготовка виртуальных хостов для выполнения лабораторных работ.](#stand) *лабораторные работы начинаются с 3-й главы* 3. [Управление локальными пользователями и группами.](#chapter3) 4. [Управление доступом к файлам.](#chapter4) 5. [Настройка SELinux.](#chapter5) 6. [Настройка производительности системы.](#chapter6) 7. [Установка и обновление программного обеспечения.](#chapter7) 8. [Управление локальным хранилищем.](#chapter8) 9. [Настройка сервисов и управление загрузкой процессов.](#chapter9) 10. [Настройка сетевых интерфейсов.](#chapter10) 11. [Анализ и хранение логов.](#chapter11) 12. [Реализация расширенных функций хранилища.](#chapter12) 13. [Планирование будущих задач.](#chapter13) 14. [](#chapter14) 15. [](#chapter15) 16. [](#chapter16) 17. [](#chapter17) *** ###### stand **Подготовка виртуальных хостов для выполнения лабораторных работ.** *Для выполнения лабораторных работ потребуется настроить 2 виртуальных хоста* server1 - 192.168.10.10 user: student password: student root password: redhat ```bash [root@server1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 16G 0 disk ├─sda1 8:1 0 10G 0 part │ └─rhel_server1-root 253:0 0 10G 0 lvm / └─sda2 8:2 0 500M 0 part /boot sdb 8:16 0 5G 0 disk sdc 8:32 0 5G 0 disk sdd 8:48 0 5G 0 disk sr0 11:0 1 1024M 0 rom ``` server2 - 192.168.10.11 user: student password: student root password: redhat Дополнительно необходимо: *SERVER1* Перечень необходимых команд root (*стоит это оформить в виде скрипта*) ```bash 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 (*стоит это оформить в виде скрипта*) ```bash 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 ```bash da2001@Zenmint ~ $ ssh student@server1 ``` 2. У всех вновь создаваемых пользователей пароль необходимо изменять каждые 30 дней. ```bash [student@server1 ~]$ sudo -i [sudo] пароль для student: [root@server1 ~]# vim /etc/login.defs ``` *необходимо изменить строку* ```bash PASS_MAX_DAYS 30 ``` 3. Создать новую группу `consultants` с GID 35000. ```bash [root@server1 ~]# groupadd -g 35000 consultants ``` 4. Настроить административные права членов группы `consultants`, чтобы они могли выполнять любые команды от любых пользователей. *best practices RedHat не редактировать существующие системные файлы, а создавать свои в соответствующих директориях. Создадим файл vim `/etc/sudoers.d/consultants`* ```bash [root@server1 ~]# vim /etc/sudoers.d/consultants ``` *добавить строку* ```bash %consultants ALL=(ALL) ALL ``` 5. Создать пользователей `consultant1`, `consultant2`, и `consultant3` и задать им в качестве дополнительной группы `consultants`. ```bash [root@server1 ~]# useradd -G consultants consultant1 [root@server1 ~]# useradd -G consultants consultant2 [root@server1 ~]# useradd -G consultants consultant3 ``` 6. Учётные записи пользователей `consultant1`, `consultant2`, и `consultant3` настроить таким образом, чтобы срок их действия истекал через 90 дней с текущей даты. *узнать какая дата будет через 90 дней от текущей даты можно с помощью команды* ```bash [root@server1 ~]# date -d "+90 days" +%F ``` *ограничить срок действия пароля* ```bash [root@server1 ~]# chage -E 2022-01-06 consultant1 [root@server1 ~]# chage -E 2022-01-06 consultant2 [root@server1 ~]# chage -E 2022-01-06 consultant3 ``` 7. Изменить политику паролей для учетной записи `consultant2`, чтобы нужно было менять пароль каждые 15 дней. ```bash [root@server1 ~]# chage -M 15 consultant2 ``` 8. Пользователи `consultant1`, `consultant2`, и `consultant3` при первом входе в систему должны изменить свои пароли в принудительном порядке. ```bash [root@server1 ~]# chage -d 0 consultant1 [root@server1 ~]# chage -d 0 consultant2 [root@server1 ~]# chage -d 0 consultant3 ``` **Проверка** Наличие группы `consultants`, правильность её GID и члены группы ```bash [student@server1 ~]$ cat /etc/group | grep consultants consultants:x:35000:consultant1,consultant2,consultant3 ``` Срок действия паролей, учётной записи и требование изменить пароль при первом входе в систему ```bash [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` ```bash [root@server1 ~]# cat /etc/sudoers.d/consultants %consultants ALL=(ALL) ALL ``` [вверх](#top) *** ###### Chapter4 **Управление доступом к файлам.** 1. На server1 создать директорию `/home/techdocs`. ```bash [student@server1 ~]$ sudo -i [sudo] пароль для student: [root@server1 ~]# mkdir /home/techdocs ``` 2. Создать группу `techdocs`, изменить группу владельца директории `/home/techdocs` на группу `techdocs`. ```bash [root@server1 ~]# groupadd techdocs [root@server1 ~]# chgrp techdocs /home/techdocs/ ``` 3. Создать пользователей `tech1`, `tech2` и добавить их в группу `techdocs`. ```bash [root@server1 ~]# useradd -G techdocs tech1 [root@server1 ~]# useradd -G techdocs tech2 ``` 4. Убедиться, что пользователи `tech1`, `tech2` не могут создавать файлы в папке `/home/techdocs`. ```bash [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 ~]$ выход ``` 5. Для директории `/home/techdocs` установить следующие разрешения: setgid (2), чтение/запись/исполнение для владельца и группы (7), для остальных нет никаких прав (0). ```bash [root@server1 ~]# chmod 2770 /home/techdocs/ ``` 6. Проверить, что разрешения установлены корректно. ```bash [root@server1 ~]# ls -ld /home/techdocs/ drwxrws---. 2 root techdocs 6 окт 9 03:36 /home/techdocs/ ``` 7. Проверить, что члены группы `techdocs` (`tech1`, `tech2`) теперь могут создавать и редактировать файлы в директории `/home/techdocs`, а другие пользователи не могут. ```bash [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: Отказано в доступе ``` 8. Изменить глобальный скрипт загрузки. Обычные пользователи должны иметь umask при которой другие пользователи не смогут просматривать и изменять новые файлы и каталоги. *создадим новый файл `/etc/profile.d/local-umask.sh` и скопируем в него блок, который имеет отношение к umask из файла `/etc/profile`, значение umask в первом упоминании заменим на 007.* **Важно обратить внимание - название файла обязательно должно иметь расширение `.sh`, т.к. только такие файлы проверяются.** ```bash [root@server1 ~]# vim /etc/profile.d/local-umask.sh ``` ```bash if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 007 else umask 022 fi ``` **Проверка** *проверим только последний пункт, т.к. все предыдущие проверяются в процессе выполнения* *назначим пользователю `student` временную маску 007, создадим новый файл и проверим его разрешения.* ```bash [student@server1 ~]$ umask 007 [student@server1 ~]$ touch file1 [student@server1 ~]$ ls -l итого 0 -rw-rw----. 1 student student 0 окт 9 04:00 file1 ``` *остальные не имеют никаких разрешений на файл - то что было нужно в задании.* [вверх](#top) *** ###### Chapter5 **Настройка SELinux.** 1. На server1 запустите браузер и введите адрес `http://server2/lab.html`. Отобразится сообщение `Forbidden You don't have permission to access this resource.` 2. Изучите и определите проблему SELinux, которая не позволяет Apache обслуживать веб-контент. ```bash [root@server2 ~]# less /var/log/messages ``` *поиском найти уведомления SELinux `/sealert`* *скопировать и ввести первое упоминание вида `sealert -l 8dcf4fc2-54e6-448d-91c6-ac047615927f`* *в сообщении будет предложено решение проблемы* ```bash [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 ... дальнейший вывод отброшен ... ``` 3. Отобразите тип контекста SELinux для стандартной и запрашиваемой директории web сервера. ```bash [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/ ``` 4. Устраните проблему SELinux, из-за которой Apache не может обслуживать веб-контент. *как видно из предыдущего пункта, в новой папке web сервера невено установлен тип контекста SELinux. Необходимо его изменить.* ```bash [root@server2 ~]# semanage fcontext -a -t httpd_sys_content_t '/webserver(/.*)?' [root@server2 ~]# restorecon -vR /webserver ``` 5. Убедитесь, что проблема SELinux решена и Apache может обслуживать веб-контент. ```bash [root@server2 ~]# curl http://server2/lab.html This is the html file for the SELinux final lab on SERVER2. ``` [вверх](#top) *** ###### Chapter6 **Настройка производительности системы.** 1. Измените текущий профиль для server1 на `balanced`. ```bash [root@server1 ~]# tuned-adm profile balanced ``` 2. Два процесса на сервере сильно загружают процессор. Измените приоритет этих процессов на значение 10. *для запуска тестовых процессов можно использовать такие команды* ```bash cat /dev/zero >> /dev/null & cat /dev/zero >> /dev/null & ``` *отобразим процессы с сортировкой по загрузке процессора и выведем 2 последних* *убедимся, что это процессы, которые сформированы нами* ```bash [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 ``` *для изменения приоритета выполним* ```bash [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 ``` [вверх](#top) *** ###### Chapter7 **Установка и обновление программного обеспечения.** *Все действия необходимо выполнять на server1* 1. Проверить, находится ли система в активированном состоянии. Если система активирована, необходимо отменить регистрацию и удалить системный репозиторий, который устанавливается при регистрации. ```bash [root@server1 ~]# subscription-manager status ``` *если окажется, что система находится в активированном состоянии, необходимо отменить регистрацию и удалить настроенные репозитории* ```bash [root@server1 ~]# subscription-manager unregister [root@server1 ~]# ls /etc/yum.repos.d/ redhat.repo [root@server1 ~]# rm /etc/yum.repos.d/redhat.repo ``` 2. Используя полный установочный ISO образ, настроить локальный репозиторий с BaseOS и APPSteram. Проверку GPG не использовать. *монтирование ISO в локальную директорию* ```bash [root@server1 ~]# echo '/dev/sr0 /iso iso9660 ro 0 0' >> /etc/fstab ``` *настройка локального репозитория* ```bash [root@server1 ~]# vim /etc/yum.repos.d/iso.repo ``` ```bash [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 ``` *проверка установленного репозитория* ```bash [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 ``` 3. Установить пакет xsane-gimp и модуль PostgreSQL client версии 12. *установка xsane-gimp* ```bash [root@server1 ~]# yum install -y xsane-gimp ``` *установка модуля PostgreSQL client версии 12* ```bash [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 ``` 4. Установить пакет `htop-3.0.5-1.el8.x86_64.rpm` из директории `/home/student`. ```bash [root@server1 ~]# yum localinstall /home/student/htop-3.0.5-1.el8.x86_64.rpm ``` 5. Выполнить проверку установленных пакетов и модулей. ```bash [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* ```bash [root@server1 ~]# rpm -qa | grep htop htop-3.0.5-1.el8.x86_64 ``` [вверх](#top) *** ###### Chapter8 **Управление локальным хранилищем.** 1. На server1 доступны 2 новых диска. На первом диске создайте раздел GPT объемом 2 Гб с именем `backup`. ```bash [root@server1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 16G 0 disk ├─sda1 8:1 0 10G 0 part │ └─rhel_server1-root 253:0 0 10G 0 lvm / └─sda2 8:2 0 500M 0 part /boot sdb 8:16 0 5G 0 disk sdc 8:32 0 5G 0 disk sr0 11:0 1 1024M 0 rom [root@server1 ~]# parted /dev/sdb mklabel gpt mkpart backup xfs 2048s 2GiB ``` 2. Отформатируйте созданный раздел в XFS и создайте постоянную точку монтирования в директории `/backup`. ```bash [root@server1 ~]# mkdir /backup [root@server1 ~]# uuid=`lsblk -n -o uuid /dev/sdb1` [root@server1 ~]# echo "UUID=$uuid /backup xfs defaults 0 0" >> /etc/fstab ``` 3. На этом же диске создайте два дополнительных раздела по 512 Мб с именами `swap1` и `swap2` соответственно. Укажите корректную метку для этих разделов. ```bash [root@server1 ~]# parted /dev/sdb print Модель: QEMU QEMU HARDDISK (scsi) Диск /dev/sdb: 5369MB Размер сектора (логич./физич.): 512B/512B Таблица разделов: gpt Флаги диска: Номер Начало Конец Размер Файловая система Имя Флаги 1 1049kB 2147MB 2146MB xfs backup [root@server1 ~]# parted /dev/sdb mkpart swap1 linux-swap 2147M 2659M Информация: Не забудьте обновить /etc/fstab. [root@server1 ~]# parted /dev/sdb print Модель: QEMU QEMU HARDDISK (scsi) Диск /dev/sdb: 5369MB Размер сектора (логич./физич.): 512B/512B Таблица разделов: gpt Флаги диска: Номер Начало Конец Размер Файловая система Имя Флаги 1 1049kB 2147MB 2146MB xfs backup 2 2147MB 2659MB 512MB swap1 подкачка [root@server1 ~]# parted /dev/sdb mkpart swap2 linux-swap 2659M 3171M Информация: Не забудьте обновить /etc/fstab. [root@server1 ~]# parted /dev/sdb print Модель: QEMU QEMU HARDDISK (scsi) Диск /dev/sdb: 5369MB Размер сектора (логич./физич.): 512B/512B Таблица разделов: gpt Флаги диска: Номер Начало Конец Размер Файловая система Имя Флаги 1 1049kB 2147MB 2146MB xfs backup 2 2147MB 2659MB 512MB swap1 подкачка 3 2659MB 3171MB 512MB swap2 подкачка ``` 4. Инициализируйте разделы в качестве разделов подкачки, они должны быть активны при загрузке системы. Предусмотрите более высокий приоритет использования раздела `swap2` перед `swap1`. ```bash [root@server1 ~]# mkswap /dev/sdb2 Setting up swapspace version 1, size = 488 MiB (511700992 bytes) без метки, UUID=a905e327-802c-41c0-89ca-500d542c9650 [root@server1 ~]# mkswap /dev/sdb3 Setting up swapspace version 1, size = 488 MiB (511700992 bytes) без метки, UUID=0c267fd8-c8f3-4cc3-9c2c-54fdefc13f2f [root@server1 ~]# vim /etc/fstab ``` *добавить строки* ```bash UUID=a905e327-802c-41c0-89ca-500d542c9650 swap swap pri=2 0 0 UUID=0c267fd8-c8f3-4cc3-9c2c-54fdefc13f2f swap swap pri=1 0 0 ``` *активировать разделы подкачки* ```bash [root@server1 ~]# swapon -a [root@server1 ~]# free -h total used free shared buff/cache available Mem: 1,8Gi 1,2Gi 106Mi 17Mi 501Mi 442Mi Swap: 975Mi 0B 975Mi ``` 5. Проверьте свою работу: перезагрузите `server1`, в директории `/backup` должен быть смонтирован XFS раздел размером 2 Гб, а также 2 раздела подкачки общим объемом 1 Гб с более высоким приоритетом использования у раздела `swap2`. ```bash [root@server1 ~]# reboot Connection to server1 closed by remote host. Connection to server1 closed. ``` *смонтированный раздел `/backup`* ```bash [student@server1 ~]$ mount | grep backup /dev/sdc1 on /backup type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota) ``` *подкачка* ```bash [student@server1 ~]$ free -h total used free shared buff/cache available Mem: 1,8Gi 484Mi 807Mi 10Mi 525Mi 1,1Gi Swap: 975Mi 0B 975Mi [student@server1 ~]$ swapon -s Имя файла Тип Размер Исп-но Приоритет /dev/sdc2 partition 499708 0 2 /dev/sdc3 partition 499708 0 1 ``` [вверх](#top) *** ###### Chapter9 **Настройка сервисов и управление загрузкой процессов.** 1. На server1 запустить сервис `psacct`. ```bash [root@server1 ~]# systemctl start psacct [root@server1 ~]# systemctl status psacct ● psacct.service - Kernel process accounting Loaded: loaded (/usr/lib/systemd/system/psacct.service; disabled; vendor preset: disabled) Active: active (exited) since Tue 2021-10-12 08:11:45 MSK; 13s ago Process: 6272 ExecStart=/usr/sbin/accton /var/account/pacct (code=exited, status=0/SUCCESS) Process: 6270 ExecStartPre=/usr/libexec/psacct/accton-create (code=exited, status=0/SUCCESS) Main PID: 6272 (code=exited, status=0/SUCCESS) окт 12 08:11:45 server1 systemd[1]: Starting Kernel process accounting... окт 12 08:11:45 server1 accton[6272]: Turning on process accounting, file set to '/var/account/pacct'. окт 12 08:11:45 server1 systemd[1]: Started Kernel process accounting. ``` 2. Настроить автозагрузку сервиса `psacct`. ```bash [root@server1 ~]# systemctl enable psacct Created symlink /etc/systemd/system/multi-user.target.wants/psacct.service → /usr/lib/systemd/system/psacct.service. ``` 3. Остановить сервис `rsyslog` и удалить его из автозагрузки. ```bash [root@server1 ~]# systemctl disable rsyslog.service Removed /etc/systemd/system/syslog.service. Removed /etc/systemd/system/multi-user.target.wants/rsyslog.service. [root@server1 ~]# systemctl stop rsyslog.service ``` 4. Перезагрузить server1 и проверить результат: - сервис `psacct` должен быть загружен и активен - сервис `rsyslog` не должен быть активен. ```bash [root@server1 ~]# reboot Connection to server1 closed by remote host. Connection to server1 closed. ``` ```bash [student@server1 ~]$ systemctl status psacct ● psacct.service - Kernel process accounting Loaded: loaded (/usr/lib/systemd/system/psacct.service; enabled; vendor preset: disabled) Active: active (exited) since Tue 2021-10-12 08:20:06 MSK; 8min ago Process: 754 ExecStart=/usr/sbin/accton /var/account/pacct (code=exited, status=0/SUCCESS) Process: 743 ExecStartPre=/usr/libexec/psacct/accton-create (code=exited, status=0/SUCCESS) Main PID: 754 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 11252) Memory: 0B CGroup: /system.slice/psacct.service окт 12 08:20:01 server1 systemd[1]: Starting Kernel process accounting... окт 12 08:20:02 server1 accton[754]: Turning on process accounting, file set to '/var/account/pacct'. окт 12 08:20:06 server1 systemd[1]: Started Kernel process accounting. [student@server1 ~]$ systemctl status rsyslog ● rsyslog.service - System Logging Service Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:rsyslogd(8) https://www.rsyslog.com/doc/ ``` [вверх](#top) *** ###### Chapter10 **Настройка сетевых интерфейсов.** 1. На server1 создать новое сетевое подключение с данными из таблицы: Параметр | Значение :------ | :------ Имя соединения | lab IP адрес | 192.168.10.110/24 Gateway | 192.168.10.9 DNS | 192.168.10.9 Настроить соединение на автоматическое подключение к сети. *настройку сети необходимо выполнять в локальной консоли server1* **важно не забыть указать ethernet ipv4.method manual, иначе соединение не активируется** ```bash [root@server1 ~]# nmcli connection add con-name lab type ethernet ipv4.method manual ipv4.address 192.168.10.110/24 ipv4.gateway 192.168.10.9 ipv4.dns 192.168.10.9 autoconnect yes Соединение «lab» (2cdf6ccb-42a8-4176-8af1-65b220b6a95c) добавлено. [root@server1 ~]# nmcli connection up lab Соединение успешно активировано (адрес действующего D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/10) ``` 2. На server2 создать новое сетевое подключение с данными из таблицы: Параметр | Значение :------ | :------ Имя соединения | lab IP адрес | 192.168.10.111/24 Gateway | 192.168.10.9 DNS | 192.168.10.9 Настроить соединение на автоматическое подключение к сети. *настройку сети необходимо выполнять в локальной консоли server1* **важно не забыть указать ethernet ipv4.method manual, иначе соединение не активируется** ```bash [root@server2 ~]# nmcli connection add con-name lab type ethernet ipv4.method manual ipv4.addresses 192.168.10.111/24 ipv4.gateway 192.168.10.9 ipv4.dns 192.168.10.9 autoconnect yes Соединение «lab» (d665308b-458b-4e04-8553-36299e5aac30) добавлено. [root@server2 ~]# nmcli connection up lab Соединение успешно активировано (адрес действующего D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/4) ``` 3. Перезагрузить server1 и server2 ```bash [root@server1 ~]# reboot ``` ```bash [root@server2 ~]# reboot ``` 4. Проверить доступность обоих хостов с новыми адресами. *server1* ```bash [student@server1 ~]$ ping -c 3 192.168.10.111 PING 192.168.10.111 (192.168.10.111) 56(84) bytes of data. 64 bytes from 192.168.10.111: icmp_seq=1 ttl=64 time=0.526 ms 64 bytes from 192.168.10.111: icmp_seq=2 ttl=64 time=0.463 ms 64 bytes from 192.168.10.111: icmp_seq=3 ttl=64 time=0.233 ms --- 192.168.10.111 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2054ms rtt min/avg/max/mdev = 0.233/0.407/0.526/0.127 ms ``` *server2* ```bash [student@server2 ~]$ ping -c 3 192.168.10.110 PING 192.168.10.110 (192.168.10.110) 56(84) bytes of data. 64 bytes from 192.168.10.110: icmp_seq=1 ttl=64 time=0.252 ms 64 bytes from 192.168.10.110: icmp_seq=2 ttl=64 time=0.268 ms 64 bytes from 192.168.10.110: icmp_seq=3 ttl=64 time=0.326 ms --- 192.168.10.110 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2041ms rtt min/avg/max/mdev = 0.252/0.282/0.326/0.031 ms ``` [вверх](#top) *** ###### Chapter11 **Анализ и хранение логов.** 1. На server1 изменить часовой пояс на соответствующий городу Новосибирск. ```bash [root@server1 ~]# timedatectl set-timezone Asia/Novosibirsk [root@server1 ~]# timedatectl show Timezone=Asia/Novosibirsk LocalRTC=no CanNTP=yes NTP=no NTPSynchronized=no TimeUSec=Thu 2021-10-07 16:33:57 +07 RTCTimeUSec=Tue 2021-10-12 16:12:45 +07 ``` 2. Показать логи записанные за последние 30 минут. ```bash [root@server1 ~]# journalctl --since -30min ``` 3. Создать файл `/etc/rsyslog.d/auth-errors.conf`, с соответствующей конфигурацией rsyslog, при которой в файл `/var/log/auth-errors` будут записываться все события связанные с проблемами аутентификации и безопасности. Используйте категорию `authpriv` и приоритет `alert`. ```bash [root@server1 ~]# vim /etc/rsyslog.d/auth-errors.conf ``` ```bash authpriv.alert /var/log/auth-errors ``` ```bash [root@server1 ~]# systemctl restart rsyslog.service ``` *для проверки правильности настройки rsyslog, сформируем соответствующее сообщение* ```bash [student@server1 ~]$ logger -p authpriv.alert "TEST MESSAGE" [student@server1 ~]$ sudo tail /var/log/auth-errors Oct 7 16:44:19 server1 student[18929]: TEST MESSAGE ``` [вверх](#top) *** ###### Chapter12 **Реализация расширенных функций хранилища.** 1. На server1 установите пакеты `stratisd` и `stratis-cli`. ```bash [root@server1 ~]# yum install -y stratisd stratis-cli ``` 2. С помощью `systemctl` активируйте и запустите сервис `stratisd`. ```bash [root@server1 ~]# systemctl enable --now stratisd [root@server1 ~]# systemctl status stratisd.service ● stratisd.service - Stratis daemon Loaded: loaded (/usr/lib/systemd/system/stratisd.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2021-10-07 11:25:23 MSK; 10s ago Docs: man:stratisd(8) Main PID: 48237 (stratisd) Tasks: 1 (limit: 11252) Memory: 1.2M CGroup: /system.slice/stratisd.service └─48237 /usr/libexec/stratisd --log-level debug окт 07 11:25:23 server1 systemd[1]: Starting Stratis daemon... окт 07 11:25:23 server1 stratisd[48237]: [2021-10-07T08:25:23Z INFO libstratis::stratis::run] stratis daemon version 2> окт 07 11:25:23 server1 stratisd[48237]: [2021-10-07T08:25:23Z INFO libstratis::stratis::run] Using StratEngine окт 07 11:25:23 server1 stratisd[48237]: [2021-10-07T08:25:23Z INFO libstratis::engine::strat_engine::liminal::identif> окт 07 11:25:23 server1 stratisd[48237]: [2021-10-07T08:25:23Z INFO libstratis::stratis::dbus_support] D-Bus API is av> окт 07 11:25:23 server1 systemd[1]: Started Stratis daemon. ``` 3. Создайте пул Stratis `labpool` состоящий из устройства `/dev/sdb`. ```bash [root@server1 ~]# stratis pool create labpool /dev/sdb ``` 4. Увеличьте объем пула используя доступный в системе диск `/dev/sdc`. ```bash [root@server1 ~]# stratis pool add-data labpool /dev/sdc ``` 5. Создайте на пуле файловую систему `labfs`. Смонтируйте её в директорию `/labstratisvol`. Не забудьте включить `x-systemd.requires=stratisd.service` в параметры монтирования в `/etc/fstab`. ```bash [root@server1 ~]# stratis filesystem create labpool labfs [root@server1 ~]# mkdir /labstratisvol [root@server1 ~]# vim /etc/fstab ``` ```bash /dev/stratis/labpool/labfs /labstratisvol xfs defaults,x-systemd.requires=stratisd.service 0 0 ``` ```bash [root@server1 ~]# systemctl daemon-reload [root@server1 ~]# mount -a [root@server1 ~]# mount | tail -1 /dev/mapper/stratis-1-87c72f38b1b543c0a86c885528170cee-thin-fs-1d58170dae514b62ba42afa6affbbb8e on /labstratisvol type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,sunit=2048,swidth=2048,noquota,x-systemd.requires=stratisd.service) ``` 6. Создайте снапшот `labfs-snap` файловой системы `labfs`. ```bash [root@server1 ~]# stratis filesystem snapshot labpool labfs labfs-snap ``` 7. Создайте VDO раздел `labvdo` с файловой системой XFS, используя устройство `/dev/sdd`. Установите логический размер 50 Гб. ```bash [root@server1 ~]# vdo create --name labvdo --device /dev/sdd --vdoLogicalSize 50G Creating VDO labvdo The VDO volume can address 2 GB in 1 data slab. It can grow to address at most 16 TB of physical storage in 8192 slabs. If a larger maximum size might be needed, use bigger slabs. Starting VDO labvdo Starting compression on VDO labvdo VDO instance 0 volume is ready at /dev/mapper/labvdo [root@server1 ~]# mkfs.xfs -K /dev/mapper/labvdo meta-data=/dev/mapper/labvdo isize=512 agcount=4, agsize=3276800 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=13107200, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=6400, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 Discarding blocks...Done. ``` 8. Смонтируйте `labvdo` в директорию `/labvdovol`. Не забудьте включить `x-systemd.requires=vdo.service` в параметры монтирования в `/etc/fstab`. ```bash [root@server1 ~]# mkdir /labvdovol [root@server1 ~]# lsblk -n -o uuid /dev/mapper/labvdo >> /etc/fstab [root@server1 ~]# vim /etc/fstab ``` ```bash UUID=f377ff48-09ea-4726-8748-d6c75adf08f3 /labvdovol xfs defaults,x-systemd.requires=vdo.service 0 0 ``` ```bash [root@server1 ~]# mount -a [root@server1 ~]# mount | tail -1 /dev/mapper/labvdo on /labvdovol type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota,x-systemd.requires=vdo.service) ``` 9. Перезагрузите server1 и убедитесь, что все созданные разделы корректно смонтированы. *смонтированные разделы* ```bash [student@server1 ~]$ mount | grep /labstratisvol /dev/mapper/stratis-1-87c72f38b1b543c0a86c885528170cee-thin-fs-1d58170dae514b62ba42afa6affbbb8e on /labstratisvol type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,sunit=2048,swidth=2048,noquota,x-systemd.requires=stratisd.service) [student@server1 ~]$ mount | grep /labvdo /dev/mapper/labvdo on /labvdovol type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota,x-systemd.requires=vdo.service) ``` *детали stratis* ```bash [root@server1 ~]# stratis pool list Name Total Physical Properties labpool 10 GiB / 41.63 MiB / 9.96 GiB ~Ca,~Cr [root@server1 ~]# stratis blockdev list labpool Pool Name Device Node Physical Size Tier labpool /dev/sdb 5 GiB Data labpool /dev/sdc 5 GiB Data [root@server1 ~]# stratis filesystem list labpool Pool Name Name Used Created Device UUID labpool labfs 546 MiB Oct 07 2021 11:49 /dev/stratis/labpool/labfs 1d58170dae514b62ba42afa6affbbb8e labpool labfs-snap 546 MiB Oct 07 2021 12:17 /dev/stratis/labpool/labfs-snap cacb462cbc034b0582381d687ef53fcf ``` *детали VDO - размер раздела 50 Гб* ```bash [student@server1 ~]$ lsblk /dev/mapper/labvdo NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT labvdo 253:8 0 50G 0 vdo /labvdovol ``` [вверх](#top) ***