№2. Администрирование Linux === ## **Практическая работа №2.1.** Основы мониторинга OS Linux с помощью утилит df, du, free, iostat, mpstat, vmstat, w, htop. - Изучить работу утилит df, du, free, iostat, mpstat, vmstat, w, htop. ## df `df -h` отображает стандартный набор колонок в более читаемом формате ![](https://i.imgur.com/URNOfid.png) `df -h ...` можно указать определенный отдел ![](https://i.imgur.com/hPxcr5f.png) `df -a` информация обо всех файловых системах известных ядру ![](https://i.imgur.com/KqvXnfP.png) `df -x ...` выводит информацию обо всех, кроме указанных файловых систем ![](https://i.imgur.com/Hysiae7.png) `df -x ... -x ...` фильтруем несколько файловых систем ![](https://i.imgur.com/KCdxFAu.png) `df -t ...` выводит информацию только о заданной файловой системе ![](https://i.imgur.com/r3AuAqF.png) `df -hi ...` информацию про состояние inode ![](https://i.imgur.com/ceMU8gZ.png) ## du Отображает использование диска для данного файла или каталога : ![](https://i.imgur.com/gWTkkJX.png) Общий размер каталога и его подкаталогов: ![](https://i.imgur.com/7m3w6j5.png) Выводим только общий размер указанного каталога: ![](https://i.imgur.com/BTTptnE.png) Отобразить использование диска подкаталогами n-уровня: ![](https://i.imgur.com/kQlVAke.png) Видимый размер файла: ![](https://i.imgur.com/22Wv6OG.png) Выводим размер всех каталогов: ![](https://i.imgur.com/b5pIHrK.png) `du` можно комбинировать с другими командами с конвейерами: ![](https://i.imgur.com/55APc7L.png) ## free ![](https://i.imgur.com/MAkUBBj.png) `free -h` информация в удобочитаемом формате: ![](https://i.imgur.com/0eIM6vM.png) Отображение использования памяти в других показателях: ![](https://i.imgur.com/luAItnJ.png) `-t` параметр отображает итоги: ![](https://i.imgur.com/5G55Yw1.png) `free -s <number>` непрерывная печать с задержкой: ![](https://i.imgur.com/UDBHUPu.png) `free -s <number> -c <number>` -с определяет количество повторений: ![](https://i.imgur.com/sAaX6oH.png) Команда free в Linux с примерами: ![](https://i.imgur.com/RFrSn3n.png) ## iostat Утилита, предназначенная для мониторинга использования дисковых разделов, входящая в набор sysstat ![](https://i.imgur.com/xn2nGui.png) Просмотр в удобном формате: ![](https://i.imgur.com/egbYqd8.png) Посмотр данных по нужному устройству: ![](https://i.imgur.com/2VVffIi.png) Посмотреть статистику по каждому разделу устройства можно с помощью параметра `-р`: ![](https://i.imgur.com/SxKNuEV.png) Автоматическое обновление данных с интервалом в 1 секунду: ![](https://i.imgur.com/ENSxKXQ.png) Суммирование всех данных с момента запуска операционной системы с помощью опции `-y`: ![](https://i.imgur.com/S4hKdB2.png) Профилирование нагрузки на файловую систему с помощью iostat: ![](https://i.imgur.com/692NPcA.png) ![](https://i.imgur.com/aQeWu5N.png) ![](https://i.imgur.com/LWD4b8O.png) ## mpstat Отображение всей информации: ![](https://i.imgur.com/1y5Ly2M.png) Показать статистику CPU индивидуального процессора (или) ядра: ![](https://i.imgur.com/6gu5Sp5.png) Для отображения статистически о конкретном CPU или ядре, используйте опцию `-P`: ![](https://i.imgur.com/GjyAgA4.png) `mpstat -V` чтобы показать версию утилиты: ![](https://i.imgur.com/Nap8p70.png) Дополнительные опции: ![](https://i.imgur.com/MGnN1mu.png) ## vmstat Утилита `vmstat` предоставляет краткую информацию о различных ресурсах системы и связанных с ними неполадках ![](https://i.imgur.com/oFPW06m.png) `vmstat -a` (active/inactive memory) - активная/неактивная память: ![](https://i.imgur.com/hN0UVTE.png) `vmstat -f` (number of forks since boot) - количество вилок с момента загрузки: ![](https://i.imgur.com/FHIWfbg.png) `vmstat -d` (disk statistics) - статистика диска: ![](https://i.imgur.com/zh3vtJo.png) `vmstat -D` (summarize disk statistics) - общая статистика диска: ![](https://i.imgur.com/ZYPs0EE.png) `vmstat --help` ![](https://i.imgur.com/vQFU7Yl.png) ## Утилита/команда " w " Выводит краткую сводку о работающих в системе в данный момент пользователях (залогиненных пользователях), а также о том, какие процессы у них запущены ![](https://i.imgur.com/vOzbbvg.png) `-h` не выводит заголовок у таблицы: ![](https://i.imgur.com/EZsNMTp.png) `-u` игнорирует имена пользователей при определении времени текущего процесса и времени CPU: ![](https://i.imgur.com/mkczuzT.png) `-s` использует сокращенный формат вывода без колонок JCPU и PCPU: ![](https://i.imgur.com/inlsgxK.png) `-f` включает или выключает вывод поля from, которое соответствует имени удаленного хоста (remote hostname): ![](https://i.imgur.com/eLjsJai.png) `-i` выводит в поле from IP-адрес вместо имени хоста (hostname), если это возможно: ![](https://i.imgur.com/bWeYQKz.png) `-o` выводит информацию в старом формате. Время, которое меньше 1 минуты, не выводится: ![](https://i.imgur.com/VG5We3d.png) `-V` вывесодит версию утилиты w. ![](https://i.imgur.com/5EqoTJV.png) ## Утилита htop Утилита, предназначенная для вывода на терминал списка запущенных процессов и информации о них. ![](https://i.imgur.com/m30SW57.png) `htop --help` ![](https://i.imgur.com/4QYOZHZ.png) `htop -t` выводит дерево процессов ![](https://i.imgur.com/5HE0u7j.png) ## **Практическая работа №2.2.** Установка и настройка сервера SSH в Linux ### **Цель работы:** - Научиться настраивать SSH-сервер, клиент. ## 1. Установим пакеты SSH 1.1 Установим ssh ![](https://i.imgur.com/lZyRK5P.png) 1.2 Проверим статус shh ![](https://i.imgur.com/ZXY90BL.png) ## 2. Настроим SSH 2.1 Откроем файл конфигурации ![](https://i.imgur.com/5Nh1aGg.png) ![](https://i.imgur.com/JuP9Ofe.png) 2.2 Создадим Alias ![](https://i.imgur.com/OKPqOkZ.png) 2.3 Сохраним изменения и перезапустим sshd ![](https://i.imgur.com/Mv5jV6e.png) ## 3. Генерация ключей с использованием утилиты ssh-keygen 3.1 Создаем ключ ![](https://i.imgur.com/QFZrH4A.png) ## **Практическая работа №2.3.** Установка и настройка SSH-authorized_keys - Научиться настраивать SSH-authorized_keys. - Научиться работать с ключами SSH. 1. Создание ключей SSH 2. Скопируем открытый ключ на ваш сервер 3. Аутентификация на сервере с использованием ключей SSH 4. Отключение аутентификации с помощью пароля на сервере 5. Копирование открытого ключа с помощью SSH ### 1. Копирование ключа ![](https://i.imgur.com/78pWgwV.png) ### 2. Аутентификация на сервере с использованием ключей SSH ![](https://i.imgur.com/OKdTFe7.png) ### 3. Отключение аутентификации с помощью пароля на сервере ![](https://i.imgur.com/SJ0sLVp.png) ### 4. Копирование открытого ключа с помощью SSH ![](https://i.imgur.com/3nBBUjo.png) Подключаемся к Debian по ключу ![](https://i.imgur.com/SmEhMoC.png) На Debian также генерируем ключ ![](https://i.imgur.com/Z5KOpX2.png) Копируем ключ на kali ![](https://i.imgur.com/4uUYIpd.png) Проверяем подключение по ключу ![](https://i.imgur.com/rUYOJrU.png) Теперь мы можем подключаться на debian и kali по ключам. Конфигурация ssh на debian ![](https://i.imgur.com/onH7EjS.png) Подключение к kali по putty ![](https://i.imgur.com/C2YpO3n.png) ![](https://i.imgur.com/7TUwW8D.png) ## **Практическая работа №2.4.** Сбор информации о Linux и WGET - Научиться базовому сбору информации о Linux системах. ### 1. Базовый сбор информации 1.1 Информация о дистрибутиве ![](https://i.imgur.com/njEiYX8.png) 1.2 По ядру linux можно понять следующее: `uname -a` ![](https://i.imgur.com/Z1EcLVk.png) `whoami` ![](https://i.imgur.com/vnCr6aH.png) `uptime` ![](https://i.imgur.com/sxzoLTO.png) права директории `/home` ![](https://i.imgur.com/tiudBRX.png) ограничить права другим пользователям ![](https://i.imgur.com/WIkvWpb.png) `ip neigh` ![](https://i.imgur.com/cwXivjQ.png) `sudo ss -tlnp` ![](https://i.imgur.com/gLac0DQ.png) `sudo -l` ![](https://i.imgur.com/6k7U2PY.png) ### 2. Суидные файлы 2.1 `sudo find / -user root -perm -4000 -exec ls -ldb {} \; 2> /dev/null` - пример ручного сбора информации ![](https://i.imgur.com/Qexp8mp.png) 2.2 Скачиваем утилиту ![](https://i.imgur.com/pK4mbxN.png) 2.3 Разархивируем файл ![](https://i.imgur.com/NrEebAR.png) 2.4 Сверим контрольные суммы ![](https://i.imgur.com/L5WtzNC.png) 2.5 Переходим в директорию утилиты ![](https://i.imgur.com/7SRh1og.png) 2.6 Запускаем `./lynis audit system` ![](https://i.imgur.com/wQIBI1Z.png) 2.7 нажимаем Enter ![](https://i.imgur.com/Ow2BBpC.png) 2.8 Report-отчёт ![](https://i.imgur.com/RVyeVHq.png) 2.9 Выводим содержимое `/var/log/lynis-report.dat` ![](https://i.imgur.com/undbxgN.png) ### 3. Проверка целостностей пакетов 3.1 Просмотрим пакеты в системе с помощью `dpkg -l` ![](https://i.imgur.com/6sRVhFm.png) 3.2 `dpkg -L coreutils` - просмотр установленных утилит ![](https://i.imgur.com/BGnnhM5.png) 3.3 `/bin/dir --help` пример утилиты /bin/dir, которая схожа с ls ![](https://i.imgur.com/r1ImckY.png) 3.4 `sudo mv /bin/dir /bin/dir.bak` - поменяем `/bin/false` на `/bin/dir` ![](https://i.imgur.com/Y0sHpg9.png) 3.5 `sudo cp /bin/false /bin/dir` ![](https://i.imgur.com/BhrwiqW.png) 3.6 `echo $?` теперь при запуске `dir` ничего не будет происходить, кроме вывода логической ошибки ![](https://i.imgur.com/Cw3aAWL.png) 3.7 **debsums** служит, в первую очередь, для нахождения изменённых администратором файлов установленных в системе пакетов или повреждённых файлов из-за некачественного носителя и в какой-то мере используется в качестве инструмента обеспечения безопасности. ![](https://i.imgur.com/8hNzO0D.png) 3.8 `debsums <название программного пакета>` - Отображает пакеты, которые необходимо проверить с помощью `debsums` ![](https://i.imgur.com/59rCunh.png) 3.9 можно также проверить утилитой `dpkg --verify coreutils` ![](https://i.imgur.com/Klu7xzF.png) 3.10 если нам надо рассмотреть какой либо инцидент необходимо выполнить `sudo find / -printf "%T@;%Tc;%p\\n"` ![](https://i.imgur.com/z7JFR83.png) 3.11 если надо сделать по одному конкретному пользователю необходиму следующие: `sudo find /home/kali/ -printf "%T@;%Tc;%p\\n" > timeline.csv` ![](https://i.imgur.com/sOsCits.png) 3.12 отсортируем данный файл с помощью команды `sort -rn timeline.csv | less` ![](https://i.imgur.com/wV2fkEM.png) ## **Практическая работа №2.5.** Переменные окружения в Linux .bashrc, .bash_profile и .bash_login - Научиться работать с переменным окружением в linux. ### 1. Просмотр списка системных переменных окружения 1.1 Проверим наличие утилиты `coreutils` ![](https://i.imgur.com/WhqWq4r.png) 1.2 Запустим `Coreutils`, чтобы раскрыть список всех переменных окружения. ![](https://i.imgur.com/AAIudno.png) ### 2. Запуск команд с указанием нового значения переменной окружения 2.1 Установка и удаление локальных переменных окружения Установим и запустим локальную переменную ![](https://i.imgur.com/GvN25ud.png) Удалим и снова запустим ее ![](https://i.imgur.com/EeOOcqt.png) 2.2 Добавление и удаление пользовательских переменных Отредактируем `.bashrc ` ![](https://i.imgur.com/6hcu0fC.png) ![](https://i.imgur.com/ijR6QVL.png) Обновим конфигурацию ![](https://i.imgur.com/JkJ7I8m.png) Проверим активность переменной ![](https://i.imgur.com/fUArx8s.png) 2.3 Создание и удаление системных переменных окружения Отредактируем `/etc/profile` ![](https://i.imgur.com/SwB5No2.png) Обновим конфигурацию ![](https://i.imgur.com/iIY0AUn.png) Запустим переменную ![](https://i.imgur.com/3cnBMDu.png)