# Занятие 2. Администрирование Linux # # Часть 1. Основы мониторинга OS Linu # ## 1. Команда df в linux ## ### Чтобы посмотреть доступное пространство на всех примонтированных разделах и информацию о них достаточно набрать ### ![](https://i.imgur.com/IBG51Pl.png) ### Посмотрим, что говорит справка. Результат выполнения df –help ### ![](https://i.imgur.com/MqHEa8N.png) ### Чтобы посмотреть доступное пространство на всех примонтированных разделах и информацию о них достаточно набрать: ### ![](https://i.imgur.com/1FhWxaL.png) ### Ключ -h позволяят вывести данные в более удобном формате ### ![](https://i.imgur.com/jSuGTWr.png) ### С ключом -a, утилита выводит информацию о всех системах известных ядру, которые были смонтированы ### ![](https://i.imgur.com/lNCd68I.png) ### Если вы хотите вывести только информацию про реальные файловые системы на жестком диске можно использовать опцию -x чтобы отфильтровать все tmpfs ### ![](https://i.imgur.com/EZ0xp6u.png) ### Также можно отфильтровать две файловые системы ### ![](https://i.imgur.com/WGt9lMn.png) ### Или же указать файловую систему, которую нужно отображать ### ![](https://i.imgur.com/72QyFPr.png) ### Также можно указать интересующий вас раздел, как вы видели в синтаксисе команды ### ![](https://i.imgur.com/os8Eotq.png) ### С помощью опции -i вы можете посмотреть информацию про состояние inode в вашей файловой системе ### ![](https://i.imgur.com/NaYrBjt.png) ### Вывести объем доступного пространства в каталоге ### ![](https://i.imgur.com/OkM26zd.png) ## 2. Команда du в Linux ## ### При выполнении без какой-либо опции du отображает использование диска для данного файла или каталога и каждого из его подкаталогов в байтах ### ![](https://i.imgur.com/FeLTZ0Y.png) ### Вы также можете передать команде du несколько файлов и каталогов в качестве аргументов ### ![](https://i.imgur.com/wGjHjXg.png) ### Параметр -a указывает du сообщать об использовании дискового пространства каждым файлом в каталоге ### ![](https://i.imgur.com/Bu8GKso.png) ### Например, чтобы получить общий размер */var/lib* и всех его подкаталогов, вы должны выполнить следующую команду ### ![](https://i.imgur.com/osPvQsX.png) ### Чтобы сообщить только общий размер указанного каталога, а не подкаталогов, используйте параметр -s ### ![](https://i.imgur.com/PGCgmHF.png) ### Параметр -c указывает du сообщать общую сумму. Это полезно, когда вы хотите получить объединенный размер двух или более каталогов ### ![](https://i.imgur.com/v8AYSWs.png) ### Если вы хотите отобразить использование диска подкаталогами n-уровня, используйте параметр --max-depth и укажите уровень подкаталогов. Например, чтобы получить отчет о каталогах первого уровня, вы должны использовать ### ![](https://i.imgur.com/S0DRmuH.png) ### По умолчанию утилита du повторно использует дисковое пространство, используемое каталогом или файлом. Чтобы узнать очевидный размер файла, используйте переключатель --apparent-size . «Видимый размер» файла — это фактический объем данных в файле ### ![](https://i.imgur.com/G4qc45k.png) ### du также позволяет использовать шаблон оболочки. Например, чтобы получить размер всех каталогов, начинающихся с «Do» в вашем домашнем каталоге, вы должны запустить ### ![](https://i.imgur.com/4nhefIq.png) ### Например, чтобы напечатать 5 самых больших каталогов внутри каталога */var* вы должны передать вывод du в команду sort чтобы отсортировать каталоги по их размеру, а затем передать результат в команду head которая распечатает только 5 верхних каталогов ### ![](https://i.imgur.com/yIzkfV8.png) ## 3. Команда free в Linux ## ### Команда free предоставляет информацию об общем объеме физической памяти и памяти подкачки, а также о свободной и используемой памяти ### ![](https://i.imgur.com/UwA4O6N.png) ### Чтобы просмотреть информацию в удобочитаемом формате (обычно в мегабайтах и гигабайтах), используйте параметр -h ### ![](https://i.imgur.com/9x7HGz2.png) ### Например, чтобы отобразить результат в мегабайтах, введите ### ![](https://i.imgur.com/xKXLpUB.png) ### Чтобы отобразить строку, показывающую итоги столбца, используйте параметр -t . Это дает вам сумму памяти и свопа в столбцах total, used и free ### ![](https://i.imgur.com/owO6red.png) ### Например, чтобы распечатывать информацию о памяти каждые пять секунды, вы должны выполнить ### ![](https://i.imgur.com/WuoNPIX.png) ### Чтобы отображать результат определенное количество раз, используйте параметр -c ( --count ). В примере ниже команда выведет результат десять раз ### ![](https://i.imgur.com/Y6MV83m.png) ### Допустим, вы хотите открыть серию приложений и посмотреть, как влияет ваша память. Для тестового вывода мы будем использовать читаемый человеком формат, используя степени 1000 (Gb) вместо 1024 (GiB). Мы собираемся записать в течение 20 секунд, чтобы проанализировать воздействие. Мы собираем данные каждые 5 секунд, и будем делать это за 4 цикла. Вот этот пример, отформатированный для командной строки и ее вывода ### ![](https://i.imgur.com/X68JPFI.png) ### Мы подождали несколько секунд, а затем открыли несколько вкладок браузера и получил доступ к некоторым закладкам. Стресс этих видов деятельности отмечен колебаниями объема производства. Обратите внимание, что эффект будет более выраженным при использовании выходного формата с меньшим округлением. В наших чисто демонстрационных целях это не нужно ### ![](https://i.imgur.com/KK6Rl0Q.png) ### Это покажет вам только один вывод для команды free, но этот вывод будет изменяться через регулярные промежутки времени ### ![](https://i.imgur.com/4cO2XaW.png) ![](https://i.imgur.com/BzXzWVA.png) ![](https://i.imgur.com/E6FYZwi.png) ![](https://i.imgur.com/5xSfHu3.png) ## 4. Iostat ## ### Установим ### ![](https://i.imgur.com/dZMRUhf.png) ### IOSTAT инструмент, который доступен через команду iostat. Введите эту команду, чтобы увидеть, как она работает: Самый простой пример использования утилиты, это запустить её без параметров. Она выведет отчёт с со средней статистикой с момента включения системы до момента запуска программы ### ![](https://i.imgur.com/VJKnawi.png) ### Для просмотра данных в удобном формате выполните ### ![](https://i.imgur.com/fxDLaAb.png) ### Чтобы посмотреть данные по нужному устройству просто укажите это устройство ### ![](https://i.imgur.com/rgchha7.png) ### Можно посмотреть статистику по каждому разделу устройства, тогда надо воспользоваться опцией -p ### ![](https://i.imgur.com/ZNOqCIP.png) ### Чтобы утилита автоматически обновляла данные каждую секунду просто добавьте интервал. Например ### ![](https://i.imgur.com/IYyTh6h.png) ### Если вы не хотите, чтобы утилита суммировала все данные с момента запуска операционной системы, то можно использовать опцию -y. Но работает она только если задан интервал ### ![](https://i.imgur.com/KkU0OEx.png) ## Профилирование нагрузки на файловую систему с помощью iostat ## ### Сначала нужно понять какие разделы имеются в системе ### ![](https://i.imgur.com/vQ8qbtp.png) ### Раздел на котором расположен swap ### ![](https://i.imgur.com/d8HyYSQ.png) ### Пример получение лог файлы ### ![](https://i.imgur.com/uHLrwFT.png) ### Содержание лог файла ### ![](https://i.imgur.com/hyYzFjt.png) ## 5. mpstat ## ### Отчёт об использовании процессора ### ![](https://i.imgur.com/aMv9ass.png) ### Параметр «-P ALL», покажет все индивидуальные процессоры или ядра вместе со статистикой ### ![](https://i.imgur.com/M6ZiyR4.png) ### Для отображения статистически о конкретном CPU или ядре, используйте опцию «-P», как показано ниже: ![](https://i.imgur.com/nQevm9V.png) ### Можно посмотреть версию утилиты ### ![](https://i.imgur.com/g0afCYk.png) ### Справочная инфомрация ### ![](https://i.imgur.com/Be1l9Dp.png) ### vmstat предоставляет краткую информацию о различных ресурсах системы ### ![](https://i.imgur.com/HPkmipy.png) ### Приведенный ниже пример иллюстрирует применение vmstat для обнаружения программ, которые потребляют слишком много ресурсов CPU ### ![](https://i.imgur.com/sMaoSuG.png) ### Количество вилок с момента загрузки ### ![](https://i.imgur.com/WzYLXvB.png) ### Статистика диска ### ![](https://i.imgur.com/KACZMaO.png) ### Общая статистика диска ### ![](https://i.imgur.com/NFqRKU6.png) ![](https://i.imgur.com/wBBxPbJ.png) ### vmstat --help ### ![](https://i.imgur.com/Qq92eTR.png) ## 6. Утилита/команда "w" ## ### Выводит краткую сводку о работающих в системе в данный момент пользователях (залогиненных пользователях), а также о том, какие процессы у них запущены ### ![](https://i.imgur.com/C7M6SWc.png) ### Не выводить заголовок у таблицы ### ![](https://i.imgur.com/vk7pedu.png) ### Игнорировать имена пользователей при определении времени текущего процесса и времени CPU ### ![](https://i.imgur.com/43gd4wk.png) ### Использовать сокращенный формат вывода. Не выводить колонки JCPU и PCPU ### ![](https://i.imgur.com/Oa1cRnN.png) ### Включить или выключить вывод поля from ### ![](https://i.imgur.com/ruyCyfR.png) ### Выводить в поле from IP-адрес вместо имени хоста (hostname), если это возможно ### ![](https://i.imgur.com/SLW83mp.png) ### Выводить информацию в старом формате. Время, которое меньше 1 минуты, не выводится ### ![](https://i.imgur.com/p97At8r.png) ### Вывести версию утилиты w ### ![](https://i.imgur.com/nXQlCde.png) ## 7. Утилита htop ## ### Установка ### ![](https://i.imgur.com/gmg3SMP.png) ### Запуск утилиты ### ![](https://i.imgur.com/ALvEwRd.png) ### Для установки времени обновления htop используйте опцию -d после которой укажите время обновления в десятой части секунд ### ![](https://i.imgur.com/2m7Mtg0.png) ### Чтобы программа выводила новые данные раз в 5 секунд ### ![](https://i.imgur.com/3n6gx5L.png) ### Для вывода процессов в виде дерева используйте опцию -t ### ![](https://i.imgur.com/6pjmqHQ.png) # Часть 2. Установка и настройка сервера SSH в Linux # ## Скачаем ssh ## ![](https://i.imgur.com/MPnExoA.png) ## После установки ssh сервер автоматически запустится. service sshd status ## ![](https://i.imgur.com/5RbwJAP.png) ## Настройки хранятся в файле /etc/ssh/sshd_config ## ![](https://i.imgur.com/pSUdPK3.png) ## Для адресов семейства IPv6 используется значение inet6 ## ![](https://i.imgur.com/IbHf72e.png) ## Параметр ListenAddress позволяет задавать порты для отдельных сетевых интерфейсов ## ![](https://i.imgur.com/sJJNUFZ.png) ## Отключение вазможности испольования ssh1 ## ![](https://i.imgur.com/2kryYUl.png) ## Очень полезным является параметр, позволяющий проводить авторизацию и шифрование трафика с помощью специальных SSH-ключей ## ![](https://i.imgur.com/ABNDWlu.png) в таком случае серверу необходимо явно указывать, где хранятся открытые ключи пользователей. Это может быть как один общий файл для хранения ключей всех пользователей (обычно это файл etc/.ssh/authorized_keys), так и отдельные для каждого пользователя ключи. Второй вариант предпочтительнее в силу удобства администрирования и повышения безопасности. Благодаря шаблону автоподстановки с маской «%h» будет использоваться домашний каталог пользователя. ![](https://i.imgur.com/BqYHRKE.png) ## Важно также отключать парольный доступ ## ![](https://i.imgur.com/kgwfg9I.png) ## Или же в случае, если всё-таки необходимо использовать доступ по паролю, то обязательно нужно отключать авторизацию по пустому паролю ## ![](https://i.imgur.com/LrMWhdG.png) ## Для указания разрешённых или запрещённых пользователей и групп служат директивы DenyUsers, AllowUsers, DenyGroups, и AllowGroups. Значениями для них являются списки имён, разделяемых пробелами ## ![](https://i.imgur.com/NXGUn95.png) ## Следует также отключать root-доступ ## ![](https://i.imgur.com/uUu3Lbc.png) Иногда, когда следует задавать мультисерверную конфигурацию, очень удобно использовать алиасы (Aliases), что позволяет настроить сразу несколько режимов доступа (с разными хостами, портами и т. д.) и использовать их, указывая при этом конкретный алиас. Настройки для алиасов хранятся либо глобально в /etc/ssh/ssh_config, либо раздельно для пользователей в ~/.ssh/config ![](https://i.imgur.com/BdVsrEx.png) ![](https://i.imgur.com/j541ZWE.png) ## Для применения сделанных настроек необходим перезапуск SSH-сервера: systemctl restart sshd или service sshd restart ## ![](https://i.imgur.com/OE3Lp5F.png) ## Подключение по ssh с debian ## ![](https://i.imgur.com/wBjO8Lj.png) ![](https://i.imgur.com/m0SoFGB.png) ## Для генерации ключей используется утилита ssh-keygen ## ![](https://i.imgur.com/QnEDwFK.png) ![](https://i.imgur.com/EfZSbVs.png) ## Подключение с рабочего хоста windows через putty ## ![](https://i.imgur.com/qk5tUNZ.png) ![](https://i.imgur.com/YQYyGMH.png) ![](https://i.imgur.com/TfRwjcF.png) ## Подключение с рабочего хоста windows через putty по ключу доступа ## ### Генерируем ключь с помощью PuTTYkeygen ### ![](https://i.imgur.com/tnLITqp.png) ### Исправляем сгенерированный публичный клчю. Приводим его к виду ### ![](https://i.imgur.com/jbjEgx5.png) ### Передаём публичный ключь на сервер ### ![](https://i.imgur.com/LFriVlc.png) ### В меню аутентификации нужно выбрать файл приватного ключа ### ![](https://i.imgur.com/NEsyv8s.png) ### Заполняем поля ### ![](https://i.imgur.com/CfiNoXj.png) ### Установленное соединение ### ![](https://i.imgur.com/xGuxg3R.png) # Часть 3. Установка и настройка SSH-authorized_keys # ## Сгенерируйте на локальном компьютере пару ключей SSH ## ![](https://i.imgur.com/YOxfrhx.png) ![](https://i.imgur.com/eL1kIf4.png) ## Копирование открытого ключа с использованием SSH-Copy-ID ## ![](https://i.imgur.com/iYcn50N.png) ## Публичный слепок ключа появился на сервере debian ## ![](https://i.imgur.com/CPEQOgl.png) ## Вход без пароля ## ![](https://i.imgur.com/fXylFiy.png) ## На debian добавлю пользователя в группу sudo ## ![](https://i.imgur.com/t1ALqJC.png) ![](https://i.imgur.com/QIR12Ya.png) ## В файле конфигурации ssh запретим вход в систему через SSH с использованием паролей учётной записи ## ![](https://i.imgur.com/Pz6Jhbm.png) ## Перезапустим службу ssh ## ![](https://i.imgur.com/pgnBZJR.png) ## Ключ был удалён чтобы продеманстрировать добавление ключа на сервер другим способом ## Загрузка публичного с помощью стандартного метода SSH ![](https://i.imgur.com/2zmvIpj.png) ## После ввода пароля содержимое ключа id_rsa.pub будет скопировано в конец файла authorized_keys учетной записи удаленного пользователя ## ![](https://i.imgur.com/oy8spuv.png) # Часть 4. Сбор информации о Linux и WGET # ## Информация о версии дистрибутива ## ![](https://i.imgur.com/mfKmflG.png) ## Информация о ядре ## ![](https://i.imgur.com/DElXQzx.png) ## Отображение текущего вошедшего в систему пользователя ## ![](https://i.imgur.com/XoNtCrK.png) ## Время работы системы ## ![](https://i.imgur.com/wYqAKHx.png) ## Посмотрим права деррик тории home ## ![](https://i.imgur.com/zpxlv9a.png) ## Ограничиваем права других пользователей ## Чтобы они не смогли открывать директорию. ![](https://i.imgur.com/8Hcp6vP.png) ## Отображение с какими компьютерами происходит обмен данными ## ![](https://i.imgur.com/aKuxBaP.png) ## Отображение запущенных сервисов с потоками ## ![](https://i.imgur.com/Jx8VW7s.png) ## sudo -l - позволяет нам понять, что есть в этом машинки и что пользователь может ## ![](https://i.imgur.com/r0htPpn.png) ## В системе могут быть различные закладки ## ![](https://i.imgur.com/sUOPgl6.png) ![](https://i.imgur.com/3qDSr4n.png) ![](https://i.imgur.com/yFEixMz.png) ## Скачаем с помощью wget утилиту lynis ## ![](https://i.imgur.com/xza1tdI.png) ## Разархивируем ## ![](https://i.imgur.com/whXvEUQ.png) ## Проверим контрольную сумму файла ## ![](https://i.imgur.com/x1qzDpD.png) ## Контрольная сумма соответствует скаченной версии файла. ## Запускаем утилиту lynis ![](https://i.imgur.com/wb32tN2.png) ![](https://i.imgur.com/aWbKIx8.png) ## Вывод report-отчёт ## ![](https://i.imgur.com/wNnIxcY.png) ## Выполним команду sudo ./lynis show options ## ![](https://i.imgur.com/qdxxTc9.png) ## Перенаправлять файлы лучше через стандартный report утилиты ## ![](https://i.imgur.com/ixtoWRM.png) ## Проверим файлы логов ## ![](https://i.imgur.com/NTpisvi.png) ![](https://i.imgur.com/0tDZmvY.png) ## Посмотрим имеющиеся пакеты в системе ## ![](https://i.imgur.com/MivUywU.png) ## Просмотрим установленые утилиты ## ![](https://i.imgur.com/eMg17j8.png) ## Например рассмотрим утилиту /bin/dir /bin/dir --help которая позволяет нам работать по сути как ls ## ![](https://i.imgur.com/t977nc7.png) С имитируем подмену или правку када программы ## Сначаала сделаем backup sudo mv /bin/dir /bin/dir.bak ## ![](https://i.imgur.com/rJhAYF9.png) ## Водим команду sudo cp /bin/false /bin/dir ## ![](https://i.imgur.com/5xv6Hc1.png) ## Теперь при запуске dir мы можем уыидеть, что ничего не будет происходить, кроме как если посмотреть логическую ложь, то будет ошибка ## ![](https://i.imgur.com/wa7tTNN.png) ## соответственно, чтобы нам быстро проверить этот пакет мы можем выполнить команду debsums ## ![](https://i.imgur.com/Hi3UBjp.png) ## debsums <название программного пакета> - Отображает пакеты, которые необходимо проверить с помощью debsums ## ![](https://i.imgur.com/dS2QWfN.png) ![](https://i.imgur.com/zagl3Br.png) ## Можно также проверить утилитой ## ![](https://i.imgur.com/D1FWJvP.png) ## Если кто-то смог проникнуть в систему и что-то деал в ней нам поможет команда find. Например, если нам надо рассмотреть какой-либо инцидент ## ![](https://i.imgur.com/yemsz67.png) ## Если надо сделать по одному конкретному пользователю необходиму следующие ## ![](https://i.imgur.com/Ffja8nr.png) ![](https://i.imgur.com/8e7imci.png) ## Данный файл можно отсортировать ## ![](https://i.imgur.com/90mSE7v.png) Можно увидеть, что менялось и в какое время, что позволит увидеть все изменения. # Часть 5. Переменные окружения в Linux .bashrc, .bash_profile и .bash_login # ## Установим утилиту coreutils ## ![](https://i.imgur.com/9mBOroJ.png) ## Теперь воспользуемся командой чтобы раскрыть список всех переменных окружения ## ![](https://i.imgur.com/w2I0dJk.png) ## Изменим на вермя значение параметра ## ![](https://i.imgur.com/2kDKUp4.png) Значение переменной сохранится в пределах активного терминала ## Создадим локальную переменную ## ![](https://i.imgur.com/tGArkCt.png) ## Удалим локальную переменную ## ![](https://i.imgur.com/5nFDayu.png) ## Пользовательскую конфигурацию можно редактировать через sudo nano .bashrc ## ![](https://i.imgur.com/1YkQOdF.png) ## Чтобы добавить переменную нужно написать export имя=значение ## ![](https://i.imgur.com/L0tFMdr.png) ## Обновление конфигурации произойдет после повторного старта файла, а делается это через source ## ![](https://i.imgur.com/TwM1TYG.png) ## Проверим значение наличие переменной ## ![](https://i.imgur.com/8c6chGU.png) ## Системные переменные нужно прописать в /etc/profile ## ![](https://i.imgur.com/5Q3eIU6.png) ## Аналагичным образом применем изменения (source) и проверим значение переменной ## ![](https://i.imgur.com/HJaI1pV.png) .bash_profile заимствует свое имя из файла ksh оболочки profile, в то время .bash_login заимствует свое имя из файла csh оболочки login. Если оба ~/.bash_profileи ~/.bash_login существуют, то ~/.bash_login файл будет проигнорирован.