###### tags: `Linux basic` # Linux_Basic-Омаров_Джамалутин-Практика-2 *Выполнил Омаров Джамалутин* ## Практическая работа №2.1 Основы мониторинга OS Linux с помощью утилит df, du, free, iostat, mpstat, vmstat, w, htop ### Часть 1. DF df - утилита для проверки списока подключенных устройств, получания информации о занятом месте, а также показывает точку монтирования. 1.1 Отобразить все файловые системы; ![](https://i.imgur.com/qB0XlgL.png) 1.2 Кб -> Мб; ![](https://i.imgur.com/t98KIF9.png) 1.3 Реальная файловая систем на жестком диске; ![](https://i.imgur.com/A5sFbF5.png) 1.4 Объем доступного пространства в каталоге; ![](https://i.imgur.com/PGHXgqo.png) 1.5 Вывести данные блока в Мб; ![](https://i.imgur.com/buXx5jw.png) 1.6 Данные об иноде; ![](https://i.imgur.com/npz01JF.png) 1.7 Posix формат; ![](https://i.imgur.com/po8ULMa.png) 1.8 Вывод информации только про указанные файловые системы; ![](https://i.imgur.com/n96D2VC.png) ### Часть 2. DU du - отображение приблизительного объема дискового пространства, используемого данными файлами или каталогами. 2.1 Параметр -a указывает du сообщать об использовании дискового пространства каждым файлом в каталоге; ![](https://i.imgur.com/W4vSF2l.png) 2.2 Получить общий размер /var/lib и всех его подкаталогов; ![](https://i.imgur.com/stvLhtT.png) 2.3 Сообщить только общий размер указанного каталога; ![](https://i.imgur.com/PIBLswv.png) 2.4 Напечатать 5 самых больших каталогов внутри каталога /var; ![](https://i.imgur.com/tABNUtM.png) 2.5 Получить объединенный размер двух или более каталогов; ![](https://i.imgur.com/gOPBlt1.png) 2.6 Отобразить использование диска подкаталогами 1-уровня; ![](https://i.imgur.com/IUsWKtC.png) 2.7 Отобразить очевидный размер файла; ![](https://i.imgur.com/77x1DKi.png) 2.8 Получить размер всех каталогов, начинающихся с «Do» в нашем домашнем каталоге; ![](https://i.imgur.com/HEOd75c.png) ### Часть 3. FREE В системах Linux вы можете использовать команду free чтобы получить подробный отчет об использовании памяти системой. 3.1 Информация об оперативной памяти; ![](https://i.imgur.com/icY7cyN.png) 3.2 Чтобы постоянно отображать информацию о памяти на экране; ![](https://i.imgur.com/zPkuvyD.png) 3.3 Буферы и кеш отображаются в двух отдельных столбцах; ![](https://i.imgur.com/UuJGLT3.png) 3.4 Отображать вывод в байтах; ![](https://i.imgur.com/6HhFaSH.png) 3.5 Отображать вывод в килобайтах; ![](https://i.imgur.com/QrERYwt.png) 3.6 Отображать вывод в мегабайтах; ![](https://i.imgur.com/Ya4YjTH.png) 3.7 Показать вывод в гигабайтах; ![](https://i.imgur.com/GePNX67.png) 3.8 Показать вывод в терабайтах; ![](https://i.imgur.com/39R4wzb.png) 3.9 Отображение итоговых значений столбца; ![](https://i.imgur.com/LXXWC8d.png) 3.10 Вывод для команды free, но этот вывод будет изменяться через регулярные промежутки времени; ![](https://i.imgur.com/AsEmxVM.png) ![](https://i.imgur.com/yOxnt6s.png) ### Часть 4. IOSTAT Утилита iostat позволяет проанализировать загруженность системы. Она выводит основные параметры ввода и вывода данных на диск, скорость записи и чтения данных, а также количество записанных или прочитанных данных. Кроме того, утилита выводит параметры загруженности процессора. Её можно использовать для оптимизации работы системы. 4.1 Установим; ![](https://i.imgur.com/AklNWIu.png) 4.2 Использование без параметров; ![](https://i.imgur.com/6jRy064.png) 4.3 Посмотреть данные по нужному устройству; ![](https://i.imgur.com/q8na7MO.png) 4.4 Посмотреть статистику устройства каждую секунду; ![](https://i.imgur.com/d1qZfAC.png) 4.5 Отобразить только информацию об использовании процессора; ![](https://i.imgur.com/r1ziGCQ.png) 4.6 Отобразить только информацию об использовании устройств; ![](https://i.imgur.com/7mF9x0G.png) 4.7 Выводить данные в отчёте в удобном для чтения формате; ![](https://i.imgur.com/IrTiRei.png) 4.8 Выводить статистику в килобайтах; ![](https://i.imgur.com/IG2ySGS.png) 4.9 Выводить статистику в мегабайтах; ![](https://i.imgur.com/Lp2UsOB.png) 4.10 Выводить статистику в формате JSON; ![](https://i.imgur.com/40Ix8fE.png) 4.11 Вывести расширенную статистику; ![](https://i.imgur.com/qGJXPoA.png) 4.12 Отображать статистику с момента запуска утилиты, а не системы; ![](https://i.imgur.com/8IZZadY.png) 4.13 Спрятать информацию о дисках, у которых нет активности; ![](https://i.imgur.com/32MOmsH.png) 4.14 Строчка для получения лог файла; ![](https://i.imgur.com/xk1US1q.png) 4.15 Ввод нашего лога будет примерно таким; ![](https://i.imgur.com/fTyYvtU.png) Далее можно приступать к анализу. ### Часть 5. MPSTAT mpstat - мониторинг производительности Unix/Linux. 5.1 Отображение всей информации. ![](https://i.imgur.com/o74Gacp.png) 5.2 Статистика CPU индивидуального процессора; ![](https://i.imgur.com/Hh7kzMC.png) 5.3 Статистика о конкретном CPU; ![](https://i.imgur.com/tnDDQUp.png) 5.4 Версия; ![](https://i.imgur.com/KIOXe8U.png) 5.5 Дополнительные опции; ![](https://i.imgur.com/8QKImaP.png) ### Часть 6. VMSTAT vmstat предоставляет краткую информацию о различных ресурсах системы и связанных с ними неполадках, приводящих к снижению производительности. 6.1 Активная/неактивная память ![](https://i.imgur.com/QzSHiqk.png) 6.2 Количество вилок с момента загрузки; ![](https://i.imgur.com/V6QrJNI.png) 6.3 Статистика диска; ![](https://i.imgur.com/5TBhOV9.png) 6.4 Общая статистика диска; ![](https://i.imgur.com/5ONqhpf.png) 6.5 Информация; ![](https://i.imgur.com/3DLhpoq.png) ### Часть 7. Утилита/Команда W Выводит краткую сводку о работающих в системе в данный момент пользователях (залогиненных пользователях), а также о том, какие процессы у них запущены. 7.1 У меня один залогиненный пользователь; ![](https://i.imgur.com/6JNKIvK.png) 7.2 Не выводить заголовок у таблицы; ![](https://i.imgur.com/WKjkAUn.png) 7.3 Сокращенный формат; ![](https://i.imgur.com/8tcLHq3.png) 7.4 IP-адрес вместо имени хоста (hostname), если это возможно; ![](https://i.imgur.com/XASeuNC.png) У меня невозможно. 7.5 Игнорировать имена пользователей при определении времени текущего процесса и времени CPU; ![](https://i.imgur.com/zkaN9hD.png) 7.6 Включить или выключить вывод поля from, которое соответствует имени удаленного хоста; ![](https://i.imgur.com/uKBRpqr.png) 7.7 Выводить информацию в старом формате. Время, которое меньше 1 минуты, не выводится; ![](https://i.imgur.com/TGH9QKz.png) 7.8 Версия; ![](https://i.imgur.com/bUFOUTZ.png) ### Часть 8. HTOP htop - это инструмент Linux, который используется для управления процессами и мониторинга системы на основе терминалов. Он позволяет осуществлять мониторинг процессов в режиме реального времени и выполняет каждую задачу по мониторингу процесса в системе Linux. 8.1 Установим; ![](https://i.imgur.com/oyB9dVq.png) 8.2 Использование без параметров; ![](https://i.imgur.com/WLY7aKz.png) 8.3 Ускорить или замедлить частоту обновления htop; ![](https://i.imgur.com/jjU25R1.png) 8.4 Вывод процессов в виде дерева; ![](https://i.imgur.com/hitxc3q.png) ## Практическая работа №2.2 Установка и настройка сервера SSH в Linux Для начала установлю Debian. ![](https://i.imgur.com/z0ix4sS.png) ### Часть 1. Установка ssh 1.1 Установка ssh. sudo apt install ssh; ![](https://i.imgur.com/RJgn4qc.png) 1.2 Проверка активности ssh. systemctl status ssh; ![](https://i.imgur.com/wzajoEG.png) ### Часть 2. Настройка 2.1 Посмотрим параметры ssh в файле конфигурации. cat /etc/ssh/sshd_config; ![](https://i.imgur.com/z5KQ3NG.png) В первую очередь следует обратить внимание на следующие параметры: Port, AddressFamily, ListenAddress. Первый глобально задаёт номер порта, через который будет работать соединение и если оставить его стандартным, т. е. 22, то велика вероятность, что он будет слишком часто сканироваться роботами. 2.2 Поменял дефолтный порт, указал IPv4; ![](https://i.imgur.com/pm1HGQw.png) 2.3 Также данный параметр позволяет проводить авторизацию и шифрование трафика с помощью специальных SSH-ключей; ![](https://i.imgur.com/KXlzyWM.png) В таком случае серверу необходимо явно указывать, где хранятся открытые ключи пользователей. 2.4 Будем использовать общий файл хранения ключей; ![](https://i.imgur.com/QvUAYTc.png) 2.5 Также отлючим доступ по паролю и по пустому паролю; ![](https://i.imgur.com/RB8svuc.png) 2.6 Применим настройки; ![](https://i.imgur.com/OesUVXT.png) 2.7 Создание alias для ssh. Редактируем файл ~/.ssh/config; ![](https://i.imgur.com/TpVso6f.png) Подключение при помощи alias выглядит так: ![](https://i.imgur.com/agsxk8n.png) ### Часть 3. Подключение и использование 3.1 На данном этапе вход по ключю я отключил, поэтому возможно зайти при помощи логина и пароля от debian, указав лишь порт; ![](https://i.imgur.com/ZADPNdc.png) ### Часть 4. Генерация ключей SSH 4.1 Для генерации ключей использовал ssh-keygen. Генерируем ключ на пользователе. -t означает тип, -b разрядность ключа (бит); ![](https://i.imgur.com/Ce5QEHp.png) 4.2 Нахождение; ![](https://i.imgur.com/zBibpQs.png) 4.3 Вот так выглядит публичный ключ; ![](https://i.imgur.com/AONqrJ3.png) 4.4 А также приватный; ![](https://i.imgur.com/GFOIFFy.png) 4.5 Я перенес открытый ключ на сервер в /etc/.ssh/autorized_keys, приватный оставил на kali. А так же указал кодовую фразу при генерации, поэтому сейчас система ее потребовала; ![](https://i.imgur.com/w8rTR4I.png) 4.6 После ввода кодовой фразы я вошел; ![](https://i.imgur.com/z6s9SDq.png) 4.7 Хотелось бы заметить, что при попытке входа другого пользователя, система требует пароль; ![](https://i.imgur.com/ylLaGDB.png) В части 3 я отключил ранее настраиваемую конфигурацию, для детального просмотра процесса аутентификации. Сейчас вернем ранее выставленные настройки и попробуем войти снова. 4.8 Вот как выглядит сообщение при входе теперь; ![](https://i.imgur.com/qxojXDE.png) 4.9 Генерация ключей Puttygen.exe. Открываем приложение -> Generate; ![](https://i.imgur.com/zQ4hpWB.png) Сохранил; ![](https://i.imgur.com/jV3pbhN.png) Указал путь к приватному ключу; ![](https://i.imgur.com/eW5pm7d.png) Теперь сохраняем и осталось передать ключ; ![](https://i.imgur.com/xOLmUds.png) Вставим открытый ключ в ~/.ssh/authorized_keys; ![](https://i.imgur.com/Pk42Zfx.png) ![](https://i.imgur.com/5CNagTr.png) Теперь применим настройки входа только по ключу; ![](https://i.imgur.com/EoiWKhG.png) Входим при помощи ключа; ![](https://i.imgur.com/nJMNPCa.png) ## Практическая работа №2.3 Установка и настройка SSH-authorized_keys ### Часть 1. Создание ключей 1.1 ssh-keygen; ![](https://i.imgur.com/QQcd7Ci.png) ### Часть 2. Копирование приватного ключа на сервер 2.1 ssh-copy-id; ![](https://i.imgur.com/ZPNx8EM.png) 2.2 После ввода пароля вот результат; ![](https://i.imgur.com/WFzLoSS.png) Теперь наш ключ id_rsa.pub выгружен в удаленную учетную запись. ### Часть 3. Аутентификация с использованием ключей 3.1 Аутентификация без использования пароля, но с защитой ключа кодовой фразой, которую в я разрешил в конфиге; ![](https://i.imgur.com/U7XS09y.png) ### Часть 4. Отключение возможности входа по паролю 4.1 Раскомментировал и отредактировал; ![](https://i.imgur.com/5mLhxjz.png) ### Часть 5. Копирование открытого ключа с помощью SSH 5.1 Команда с использованием функционала командной строки; ![](https://i.imgur.com/FfSVRCA.png) 5.2 Ключ у меня уже был, поэтому он просто добавился в конец, так как мы использовали символ >> ; ![](https://i.imgur.com/fe9f7q9.png) ## Практическая работа №2.4 Сбор информации о Linux и WGET ### Часть 1. Базовый сбор информации 1.1 Информация о дистрибутиве. Kali; ![](https://i.imgur.com/VjjUgvL.png) Debian; ![](https://i.imgur.com/ftrlaaz.png) 1.2 Ядро. Debian; ![](https://i.imgur.com/fff0Sq7.png) Kali; ![](https://i.imgur.com/wGqd4xt.png) 1.3 Кто я? ![](https://i.imgur.com/08TjKfJ.png) 1.4 Когда и сколько система работала; ![](https://i.imgur.com/1S1TqxS.png) 1.5 Права директории /home; ![](https://i.imgur.com/52DwjdM.png) 1.6 После смены прав доступа, применив chmod, получаем следующее; ![](https://i.imgur.com/hPZJNsK.png) 1.7 С какими компьютерами происходит обмен данными; ![](https://i.imgur.com/4U0KwhH.png) 1.8 Какие сервисы и с какими портами запущены; ![](https://i.imgur.com/AqR0Xmb.png) 1.9 Что имеется на хосте и что может пользователь; ![](https://i.imgur.com/uAlCZMR.png) ### Часть 2. Суицидные файлы 2.1 В системе могут быть различные закладки; ![](https://i.imgur.com/doKCkwY.png) 2.2 Скачаем одну утилиту в директорию /tmp; ![](https://i.imgur.com/ITO76Ud.png) 2.3 Разархивируем; ![](https://i.imgur.com/N4Skoyz.png) 2.4 Теперь проверим контрольную сумму того, что мы скачали; ![](https://i.imgur.com/726aGu6.png) sha256sum lynis-3.0.8.tar.gz ![](https://i.imgur.com/wiVuWM1.png) 2.5 Далее переходим в директорию lynis и запускаем lunis. sudo ./lynis audit system ![](https://i.imgur.com/k4Z2MxU.png) sudo ./lunis show options ![](https://i.imgur.com/fZdhnPs.png) 2.6 Перенаправлять файлы лучше через стандартный report утилиты; ![](https://i.imgur.com/vpuhrB6.png) А также другие направления проверки. ### Часть 3. Проверка целостностей пакетов 3.1 Просмотр пакетов; ![](https://i.imgur.com/mhVOeGF.png) 3.2 Просмотра установленных утилит; ![](https://i.imgur.com/ySuQsIg.png) 3.3 Сымитируем подмену программы; ![](https://i.imgur.com/fydjNaA.png) Создали бэкап и подменили исполняемый файл. 3.4 Теперь dir не работает; ![](https://i.imgur.com/uZs4bN5.png) ![](https://i.imgur.com/GVmgPTm.png) 3.5 Воспользуемся debsums. debsums служит, в первую очередь, для нахождения изменённых администратором файлов установленных в системе пакетов или повреждённых файлов из-за некачественного носителя и в какой-то мере используется в качестве инструмента обеспечения безопасности. ![](https://i.imgur.com/HV4p1zf.png) debsums -a coreutils; ![](https://i.imgur.com/oe1vUsd.png) debsums -c coreutils; ![](https://i.imgur.com/iYezpHg.png) debsums -s coreutils; ![](https://i.imgur.com/Xn6avEF.png) debsums -ac coreutils; ![](https://i.imgur.com/jbuOPer.png) debsums -cs coreutils; ![](https://i.imgur.com/ZDbURLZ.png) Можно и так. ![](https://i.imgur.com/qh3pHSX.png) 3.6 Если нам надо рассмотреть какой либо инцидент; sudo find / -printf "%T@;%Tc;%p\\n" ![](https://i.imgur.com/KiaxrKr.png) 3.7 Посмотрим информацию по конкретному пользователю; ![](https://i.imgur.com/87NCfvi.png) 3.8 Отсортируем данный файл известной командой. sort -rn timeline.csv | less; ![](https://i.imgur.com/NL7t1ZB.png) Мы можем видеть, что менялось и в какое время, что позволит увидеть все изменения. 3.9 head; ![](https://i.imgur.com/AF0b6a4.png) ## Практическая работа №2.5 Переменные окружения в Linux .bashrc, .bash_profile и .bash_login ### Часть 1. Просмотр списка системных переменных окружения 1.1 Воспользуемся утилитой coreutils; ![](https://i.imgur.com/CiKGuC7.png) 1.2 Список основных системных и пользовательских переменных окружения: * DE. Полное название — Desktop Environment * PATH * SHELL — хранит в себе опцию активной командной оболочки * HOME * BROWSER — содержит в себе команду для открытия веб-обозревателя * PWD и OLDPWD * TERM. Программ-терминалов для Linux существует большое количество. Упомянутая переменная хранит в себе информацию о названии активной консоли * RANDOM * EDITOR — отвечает за открытие редактора текстовых файлов * HOSTNAME — имя компьютера * USER — имя текущей учетной записи ### Часть 2. Запуск команд с указанием нового значения переменной окружения 2.1 Можно самостоятельно на время изменить опцию любого параметра, чтобы запустить с ним определенную программу или выполнить любые другие действия; ![](https://i.imgur.com/N0LSsln.png) При следующем просмотре всех параметров через упомянутую выше команду printenv вы увидите, что указанное вами значение было изменено. Однако оно станет таким, как было по умолчанию, сразу же после следующего обращения к ней, а также функционирует только в пределах активного терминала. ![](https://i.imgur.com/XEQ0gb1.png) ### Часть 3. Установка и удаление локальных переменных окружения 3.1 Установка локальной переменной и просмотр; ![](https://i.imgur.com/gj5UmpI.png) 3.2 Удаление данной переменной; ![](https://i.imgur.com/vdypW9Z.png) ### Часть 4. Добавление и удаление пользовательских переменных Покажу на примере Debian. 4.1 Данный класс переменных хранится в конфигурационных файлах. Отредактируем один; ![](https://i.imgur.com/AgExNNo.png) 4.2 Обновим конфигурации; ![](https://i.imgur.com/OqobY0J.png) 4.3 Теперь у нас есть новая пользовательская переменная; ![](https://i.imgur.com/s1SndDa.png) 4.4 Удаление. Можно закомментировать; ![](https://i.imgur.com/JtjWbG2.png) ### Часть 5. Создание и удаление системных переменных окружения Редактироваться для этого будет файл /ETC/PROFILE 5.1 Откроем редактирование; ![](https://i.imgur.com/g3QBDR5.png) 5.2 Внесем изменения; ![](https://i.imgur.com/aTQj0ws.png) 5.3 Изменения вступают в силу после команды; ![](https://i.imgur.com/iPKMDCq.png) 5.4 Наблюдаем результат; ![](https://i.imgur.com/3Xf4ocy.png) Результат сохранится даже после перезагрузки системы.