16 KiB
Лабораторные работы по курсу 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
Управление локальными пользователями и группами.
- Подключиться по 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 не может обслуживать веб-контент.
[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