# Linux_Basic-Остапенко_Владимир-Практика-2 ## Практическая работа №2.1 Основы мониторинга OS Linux с помощью утилит df, du, free, iostat, mpstat, vmstat, w, htop. ### **Цель работы:** - Изучить работу утилит df, du, free, iostat, mpstat, vmstat, w, htop. ### **Задача:** - Изучить работу всех утилит. - Использовать при работе исключительно терминал. - Необходимо включить в отчёт скриншоты всех указанных команд и опций в практической работе. ### 1. Команда df в linux Рассмотрим варианты использовния команды df ```bash df ``` ![](https://i.imgur.com/mkmUxHT.png) ```bash df -h ``` > где "h – выводить размеры в читаемом виде, в мегабайтах или гигабайтах" ![](https://i.imgur.com/O9K2rGp.png) ```bash df -a ``` > где "a, –all – отобразить все файловые системы, в том числе виртуальные, псевдо и недоступные" ![](https://i.imgur.com/msgX9BL.png) ```bash df -x tmpfs ``` > где "x – выводить информацию обо всех, кроме указанных файловых систем" ![](https://i.imgur.com/JatcNjk.png) ![](https://i.imgur.com/RMpo2eH.png) ```bash df -t ext4 ``` > где "t, –type – выводить информацию только про указанные файловые системы" ![](https://i.imgur.com/dgx7J1D.png) ```bash df -h /dev/sda1 ``` ![](https://i.imgur.com/AeVmeG6.png) ```bash df -hi /dev/sda1 ``` > где "i – выводить информацию об inode;" ![](https://i.imgur.com/pbaisus.png) Вывести объем доступного пространства в каталоге: ```bash df -h /home ``` ![](https://i.imgur.com/HVOZG1Z.png) ### 2. Команда du в Linux Рассмотрим варианты использовния команды du ```bash du ~/Downloads du ~/Downloads ~/Pictures ``` > При выполнении без какой-либо опции du отображает использование диска для данного файла или каталога и каждого из его подкаталогов в байтах. ![](https://i.imgur.com/KzUJEkX.png) ![](https://i.imgur.com/sVCgiyr.png) ```bash du -a ~/Downloads ``` >Параметр -a указывает du сообщать об использовании дискового пространства каждым файлом в каталоге. ![](https://i.imgur.com/gg88DP7.png) Если запустить du для файла или каталога, для которого нет прав, получим слуедующий ответ: ![](https://i.imgur.com/g3C2bfk.png) Чтобы это исправить нужно будет добавить к команде sudo ![](https://i.imgur.com/gthYQqR.png) Чтобы получить общий размер /var/lib и всех его подкаталогов использую следующию команду ```bash sudo du -h /var ``` ![](https://i.imgur.com/uNeFLBB.png) Чтобы сообщить только общий размер указанного каталога, а не подкаталогов, использую параметр -s: ```bash sudo du -sh /var ``` ![](https://i.imgur.com/f7TTdG7.png) Параметр -c указывает du сообщать общую сумму. ```bash sudo du -csh /var/log /var/lib ``` ![](https://i.imgur.com/7ZoyhOM.png) Если надо отобразить использование диска подкаталогами n-уровня, ввожу параметр --max-depth и указываю уровень подкаталогов. Например, чтобы получить отчет о каталогах первого уровня, вы должны использовать: ```bash sudo du -h --max-depth=1 /var/lib ``` ![](https://i.imgur.com/jRTx7je.png) По умолчанию утилита du повторно использует дисковое пространство, используемое каталогом или файлом. Чтобы узнать очевидный размер файла, используйю переключатель --apparent-size . «Видимый размер» файла — это фактический объем данных в файле. ```bash sudo du -sh --apparent-size /var/lib ``` ![](https://i.imgur.com/CtbH6Bw.png) du также позволяет использовать шаблон оболочки ```bash sudo du -csh ~/Do* ``` ![](https://i.imgur.com/eO09yae.png) > Использование du с другими командами > > ```bash >sudo du -h /var/ | sort -rh | head -5 >``` > >![](https://i.imgur.com/vvlYe9L.png) ### 3. Команда free в Linux Рассмотрим варианты использовния команды free ```bash free ``` ![](https://i.imgur.com/qUz69dD.png) > Результат в мегабайтах ```bash free --mega ``` ![](https://i.imgur.com/rcxlgM6.png) По умолчанию команда free показывает информацию о памяти в килобайтах. Чтобы просмотреть информацию в удобочитаемом формате (обычно в мегабайтах и гигабайтах), использую параметр -h ```bash free -h ``` ![](https://i.imgur.com/GVBoAxH.png) Чтобы отобразить строку, показывающую итоги столбца, используйте параметр -t ```bash free -ht ``` ![](https://i.imgur.com/g7rQkTU.png) Чтобы постоянно отображать информацию о памяти на экране, вызову free с параметром -s ( --seconds ), за которым следует число, определяющее задержку. ```bash free -hs 5 ``` ![](https://i.imgur.com/92y9k0Q.png) Чтобы отображать результат определенное количество раз, использую параметр -c ( --count ). ```bash free -hs 5 -с 3 ``` ![](https://i.imgur.com/6mR1G3x.png) **Примеры:** Сбор данных 4 раза с промежутком в 5 секунд, в удобном, человекочитабельном формате: ```bash free -h --si -s 5 -c 4 ``` ![](https://i.imgur.com/Hz45XJ1.png) Использование комнды watch позволит использовать уже имеющиеся поля, вместо того чтобы каждую итерацию перезаписывать таблицу ```bash watch free -h ``` ![](https://i.imgur.com/POjloMc.png) ![](https://i.imgur.com/We5GKl7.png) ### 4. iostat Установка: ![](https://i.imgur.com/0GddMOI.png) > Утилита была предустановлена (kali 2022.3) Запуск: ![](https://i.imgur.com/k9ki3Hg.png) Для просмотра данных в удобном формате: ```bash sudo iostat -h ``` ![](https://i.imgur.com/SNJpSKd.png) Чтобы посмотреть данные по нужному устройству просто указать его: ```bash sudo iostat /dev/sda ``` ![](https://i.imgur.com/nXICqve.png) Можно посмотреть статистику по каждому разделу устройства, тогда надо воспользоваться опцией -p: ```bash sudo iostat -p /dev/sda ``` ![](https://i.imgur.com/zaF44tu.png) Чтобы утилита автоматически обновляла данные каждую секунду надо добавить интервал. ```bash sudo iostat -p /dev/sda 1 ``` ![](https://i.imgur.com/t1wABy4.png) Если необходимо чтобы утилита не суммировала все данные с момента запуска операционной системы, то можно использовать опцию -y. Но работает она только если задан интервал: ```bash sudo iostat -p /dev/sda 1 ``` ![](https://i.imgur.com/vRRhKhL.png) 4.1 Профилирование нагрузки на файловую систему с помощью iostat Подготовка ![](https://i.imgur.com/JuaQX4k.png) Наблюдение: ```bash iostat -xk -t 10 | awk '// {print strftime("%Y-%m-%d %H:%M:%S"),$0}' >> iostat.log ``` ![](https://i.imgur.com/GZmHmUG.png) ```bash iostat -xk -t 10 | awk '// {print strftime("%Y-%m-%d %H:%M:%S"),$0}' ``` ![](https://i.imgur.com/Vo32pYm.png) Анализ: Судя по близким или раным нулю значениям, система не нагружена ### 5. mpstat Опция «-А», показывает всю информацию, которая может быть отображена с помощью команды mpstat, как показано ниже. Это действительно эквивалентно команде «-I ALL -u -P mpstat ALL» команды: ```bash mpstat -A ``` ![](https://i.imgur.com/BamW1Yd.png) Параметр «-P ALL», покажет все индивидуальные процессоры или ядра вместе со статистикой: ```bash mpstat -P ALL ``` ![](https://i.imgur.com/gUTsfXV.png) Для отображения статистически о конкретном CPU или ядре, использую опцию «-P», как показано ниже: ```bash mpstat -P 0 ``` ![](https://i.imgur.com/TPgQRjl.png) Можно выполнить «mpstat -V» чтобы показать версию утилиты: ```bash mpstat -V ``` ![](https://i.imgur.com/fHd8uPw.png) Дополнительные опции ```bash mpstat --help ``` ![](https://i.imgur.com/xpjFfu6.png) ### 6. vmstat Вызов программы: ```bash vmstat ``` ![](https://i.imgur.com/fhm2ca7.png) Применение vmstat для обнаружения программ, которые потребляют слишком много ресурсов CPU: > (active/inactive memory) - активная/неактивная память ```bash vmstat -a ``` ![](https://i.imgur.com/tDyVALg.png) ```bash vmstat -f ``` > (number of forks since boot) - количество вилок с момента загрузки ![](https://i.imgur.com/GlBv01A.png) ```bash vmstat -d ``` > (disk statistics) - статистика диска ![](https://i.imgur.com/Cs5dAkR.png) ```bash vmstat -D ``` (summarize disk statistics) - (общая статистика диска) ![](https://i.imgur.com/wDgRp8n.png) Помощь по использованию команды ```bash vmstat --help ``` ![](https://i.imgur.com/D9xMHRb.png) vmstat 1 - 60 - через какое количество секунд выводить информацию ```bash vmstat 2 ``` ![](https://i.imgur.com/MP4OnWV.png) ### 7. Утилита/команда " w " " w " - выводит краткую сводку о работающих в системе в данный момент пользователях (залогиненных пользователях), а также о том, какие процессы у них запущены ```bash w ``` ![](https://i.imgur.com/Lcgh2MY.png) Посмотрим параметры команды: h - Не выводить заголовок у таблицы ```bash w -h ``` ![](https://i.imgur.com/vBDg9LH.png) u - Игнорировать имена пользователей при определении времени текущего процесса и времени CPU. ```bash w -u ``` ![](https://i.imgur.com/55DH3iM.png) s - Использовать сокращенный формат вывода. Не выводить колонки JCPU и PCPU. ![](https://i.imgur.com/r7mtJ1P.png) f - Включить или выключить вывод поля from, которое соответствует имени удаленного хоста (remote hostname). В зависимости от дистрибутива Linux (версии утилиты w), поле from может выводиться или не выводиться по умолчанию. ![](https://i.imgur.com/IJpRCpu.png) i - Выводить в поле from IP-адрес вместо имени хоста (hostname), если это возможно. ![](https://i.imgur.com/dTFqBZg.png) o - Выводить информацию в старом формате. Время, которое меньше 1 минуты, не выводится ![](https://i.imgur.com/Rr0rFcW.png) V - Вывести версию утилиты w. ![](https://i.imgur.com/wwfj2z8.png) ### 8. Утилита htop Установка: ```bash sudo apt install htop ``` ![](https://i.imgur.com/BsfYpwa.png) Просмотреть все процессы в Linux ```bash htop sudo htop ``` ![](https://i.imgur.com/LC6Jjxt.png) Для установки времени обновления htop есть опцию -d после которой указывется время обновления в десятой части секунд. ```bash sudo htop -d 50 ``` > раз в 5 секунд ![](https://i.imgur.com/dMFI9Bp.png) ![](https://i.imgur.com/x81rmdv.png) ![](https://i.imgur.com/WIR6GP8.png) Вывод процессов в виде дерева ```bash sudo htop -t ``` ![](https://i.imgur.com/5vsa7fd.png) ![](https://i.imgur.com/bKBGZHd.png) --- ## Практическая работа №2.2 Установка и настройка сервера SSH в Linux ### **Цель работы:** - Научиться настраивать SSH-сервер, клиент. ### **Задача:** - Установить, настроить SSH-сервер, клиент. - Отключить доступ по root-пользователю. - Сменить порт по умолчанию на любой другой. - Подключиться к серверу linux c хостовой операционной системы через Putty**.** ### 1. Установка пакетов SSH Установка: ```bash sudo apt-get install ssh ``` ![](https://i.imgur.com/NIWyZdb.png) Проверим был ли запущен ssh server ```bash systemctl status sshd ``` ![](https://i.imgur.com/E4ZL3yL.png) ### 2. Настройка SSH Настройки демона хранятся в файле /etc/ssh/sshd_config. Посмотреть его можно командой: ```bash cat /etc/ssh/sshd_config ``` ![](https://i.imgur.com/dOQGXSY.png) Теперь, задам порты и адреса прослушки, настрою использование ключей, а так же отключу использование паролей, доступ для root и установлю алиасы. ![](https://i.imgur.com/S7QWSzp.png) 1) только адреса IPv4 - AddressFamily inet 2) авторизация и шифрование трафика с помощью специальных SSH-ключей - PubkeyAuthentication yes 3) ключи в профиле пользователя - etc/.ssh/authorized_keys 4) отключу аутентификацию по паролю - PasswordAuthentication no 5) запрет на пустые пароли - PermitEmptyPasswords no 6) отключение доступа руту - PermitRootLogin no ![](https://i.imgur.com/XpipDql.png) ![](https://i.imgur.com/rDVKJ2c.png) ![](https://i.imgur.com/korBwyc.png) Применим настройки перезапустив сервер ```bash systemctl restart sshd ``` ![](https://i.imgur.com/Yz6jskb.png) ### 3. Настройка и использование клиента SSH Настройки были применены верно. ![](https://i.imgur.com/yx5Y0UG.png) Генерим SSH ключ ![](https://i.imgur.com/JFKpIcm.png) Сохраняю открытый ключ id_rsa.pub в файл authorized_keys ![](https://i.imgur.com/jQcwTPp.png) Передаю его в хостовую систему. С помощью PuTTYgen конвертирую имеющийся openSSH-ключ в формат PPK ![](https://i.imgur.com/p90EUw7.png) Загружаю приватный ключ в Putty и подключаюсь к серверу: ![](https://i.imgur.com/y2D825g.png) ![](https://i.imgur.com/6o0C0tZ.png) ![](https://i.imgur.com/lnYPquT.png) :::success Успех! ::: --- ## Практическая работа №2.3 "Установка и настройка SSH-authorized_keys" ### **Цель работы:** - научиться настраивать SSH-authorized_keys. - научиться работать с ключами SSH. ### **Задача:** - Разобраться как работает доступ по ключам. - Организовать аутентификацию к серверу linux через ключи. - Организовать аутентификацию к серверу linux через ключи без пароля. ### Решение Отключение аутентификации с помощью пароля ```bash sudo nano /etc/ssh/sshd_config ``` **PasswordAuthentication no** ![](https://i.imgur.com/94TyqxX.png) Перезагрузим сервер ```bash sysemctl restart sshd ``` ![](https://i.imgur.com/zx9rDyz.png) Аналогично с действиями практики 2.2 генерирую ключи, импортирую их и подключаюсь по ssh ![](https://i.imgur.com/upV8MyH.png) Всё работает правильно. --- ## Практическая работа №2.4 Практическая работа "Сбор информации о Linux и WGET" ### **Цель работы:** - Научиться базовому сбору информации о Linux системах. ### **Задача:** - Научитесь скачивать файлы с помощью утилиты wget. - Научиться проверять пакеты на целостность. ### Решение #### 1.Базовый сбор информации Cбор информации о дистрибутиве ```bash cat /etc/*release ``` ![](https://i.imgur.com/H9EKHoX.png) По ядру linux можно понять следующее ```bash uname -a ``` ![](https://i.imgur.com/UcbokxG.png) Команда whoami выводит имя пользователя ```bash whoami ``` ![](https://i.imgur.com/FXVMArS.png) Команда uptime покажет, когда и сколько система работала ```bash uptime ``` ![](https://i.imgur.com/rvq2U8e.png) Посмотри права директории /home ```bash ls -la /home ``` ![](https://i.imgur.com/8W07yDT.png) Чтобы ограничить права другим пользователям делаем следующее ```bash sudo chmod o-rx /home/kali ``` ![](https://i.imgur.com/W8tXYUp.png) ip neigh - показывает с какими компьютерами происходит обмен данными ```bash ip neigh ``` ![](https://i.imgur.com/ab1Jf2D.png) sudo ss -tlnp - показывает какие сервисы и с какими портами запущены ```bash sudo ss -tlnp ``` ![](https://i.imgur.com/9FkS4Pz.png) sudo -l - позволяет нам понять, что есть в этом машинки и что пользователь может ```bash sudo -l ``` ![](https://i.imgur.com/WAONQQm.png) #### 2.Суидные файлы Закладки: ```bash sudo find / -user root -perm -4000 -exec ls -ldb {} \\; 2> /dev/null ``` ![](https://i.imgur.com/J5Smh5w.png) Автоматический сбор информации: Скачиваем утилиту ```bash wget https://downloads.cisofy.com/lynis/lynis-3.0.6.tar.gz ``` ![](https://i.imgur.com/AGiosW5.png) Далее разаархивирую скачаный архив ```bash tar xfv lynis-3.0.6.tar.gz ``` ![](https://i.imgur.com/RYBM0ed.png) >Проверю контрольную сумму > >![](https://i.imgur.com/YMno3av.png) > >![](https://i.imgur.com/RQELC8L.png) > >Совпадает! Далее перехожу в директорию lynis ```bash cd lynis ls ``` ![](https://i.imgur.com/bs1PrGm.png) запускаем утилиту lynis ```bash sudo ./lynis audit system ``` ![](https://i.imgur.com/OzXRRBV.png) ![](https://i.imgur.com/xp99jKq.png) ![](https://i.imgur.com/D5eWvN4.png) Что просмотреть возможные опции утилиты: ```bash ./lynis show options ``` ![](https://i.imgur.com/VRzvJLk.png) report утилиты (/var/log/lynis-report.dat): ![](https://i.imgur.com/Ccc8St9.png) ### 3. Проверка целостностей пакетов Просмотр пакетов в системе ```bash dpkg -l ``` ![](https://i.imgur.com/Is423yZ.png) Просмотра установленных утилит ```bash dpkg -L coreutils ``` ![](https://i.imgur.com/amD6S4U.png) например, рассмотрим утилиту /bin/dir которая позволяет нам работать по сути как ls ```bash /bin/dir --help ``` ![](https://i.imgur.com/5qTRCvm.png) Сымитирую подмену ![](https://i.imgur.com/ISFfiJY.png) Установка debsums >**debsums** служит, в первую очередь, для нахождения изменённых администратором файлов установленных в системе пакетов или повреждённых файлов из-за некачественного носителя и в какой-то мере используется в качестве инструмента обеспечения безопасности. ![](https://i.imgur.com/C9k51DU.png) debsums -ac coreutils - запуск проверки debsums -cs coreutils - запуск проверки ![](https://i.imgur.com/K6BZNId.png) можно также проверить утилитой dpkg ```bash dpkg --verify coreutils ``` ![](https://i.imgur.com/m0L2stn.png) Если кто-то смог проникнуть в систему и что-то деал в ней нам поможет команда find Например, если нам надо рассмотреть какой либо инцидент: ```bash sudo find / -printf "%T@;%Tc;%p\\n" ``` ![](https://i.imgur.com/aPMpGqr.png) Далее если надо сделать по одному конкретному пользователю необходиму следующие: ```bash sudo find /home/kali/ -printf "%T@;%Tc;%p\\n" > timeline.csv ``` Затем желательно это отсортировать, например: `head timeline.csv` сейчас никак не отсортированно ![](https://i.imgur.com/tlNk73q.png) отсортируем данный файл с помощью команды: ```bash sort -rn timeline.csv | less ``` ![](https://i.imgur.com/I10YHXD.png) Мы можем видеть, что менялось и в какое время, что позволит увидеть все изменения. --- ## Практическая работа №2.5 Переменные окружения в Linux .bashrc, .bash_profile и .bash_login" ### **Цель работы:** - Научиться работать с переменным окружением в linux. ### **Задача:** - Научиться работать c .bashrc, .bash_profile и .bash_login. ### Решение #### 0. "Теория" Конфигурационные файлы для пользовательских и системных переменных: * /etc/profile * /etc/environment * /etc/bash.bashc * .bashrc * .bash_profile #### 1. Просмотр списка системных переменных окружения Установка coreutils ```bash sudo apt-get install coreutils ``` ![](https://i.imgur.com/uZs8xTd.png) Теперь воспользуемся командой **Coreutils** чтобы раскрыть список всех переменных окружения: ```bash printenv ``` ![](https://i.imgur.com/wRfRZZA.png) #### 2. Запуск команд с указанием нового значения переменной окружения ```bash env HOME=/home/kali ``` ![](https://i.imgur.com/uTEh1Md.png) #### 2.1 Установка и удаление локальных переменных окружения Установка: ```bash TESTKALI=/home/kali echo $TESTKALI ``` ![](https://i.imgur.com/1NUMdyg.png) Удаление: ```bash unset TESTKALI echo $TESTKALI ``` ![](https://i.imgur.com/7gRzyI8.png) #### 2.2 Добавление и удаление пользовательских переменных Рассмотрим классы переменных, которые хранятся в конфигурационных файлах: ```bash sudo nano .bashrc ``` ![](https://i.imgur.com/Plh7cYZ.png) ![](https://i.imgur.com/QvLP6UA.png) Обновление конфигурации произойдет после повторного старта файла, а делается это через source .bashrc. ```bash source .bashrc. echo $TESTKALI ``` ![](https://i.imgur.com/Mc3NgAG.png) #### 2.3 Создание и удаление системных переменных окружения ```bash nano /etc/profile ``` ![](https://i.imgur.com/21eWL9d.png) Внесу **`TESTKALI2=/home/kali12345`** Сохраняю и выхожу. ![](https://i.imgur.com/1oGfKH9.png) ![](https://i.imgur.com/jNR68dH.png) --- Итог: Были успешно выполнены работы 2.1-2.5