---
# System prepended metadata

title: Занятие 2

---

# Занятие 2

## Практическая работа №2.1

**1. Команда df в linux**

Чтобы посмотреть доступное пространство на всех примонтированных разделах и информацию о них достаточно набрать:

![](https://i.imgur.com/T2ZiASR.png)

Теперь давайте попросим утилиту выводить данные в более читаемом формате:

![](https://i.imgur.com/DTm5raK.png)

Если задать опцию -a, вы можете получить информацию обо всех файловых системах известных ядру, которые были смонтированы:

![](https://i.imgur.com/hELLaHY.png)

Также можно отфильтровать две файловые системы:

![](https://i.imgur.com/fhwJST6.png)

Или же указать файловую систему, которую нужно отображать:

![](https://i.imgur.com/2bgSYzJ.png)

Также можно указать интересующий вас раздел, как вы видели в синтаксисе команды:

![](https://i.imgur.com/DR9DJrU.png)

С помощью опции -i вы можете посмотреть информацию про состояние inode в вашей файловой системе:

![](https://i.imgur.com/zym1Zbu.png)

Вывести объем доступного пространства в каталоге:

![](https://i.imgur.com/BCRJCvP.png)

**2. Команда du в Linux**

При выполнении без какой-либо опции du отображает использование диска для данного файла или каталога и каждого из его подкаталогов в байтах.

![](https://i.imgur.com/07SRbqL.png)

Вы также можете передать команде du несколько файлов и каталогов в качестве аргументов:

![](https://i.imgur.com/sEHQ50B.png)

Параметр -a указывает du сообщать об использовании дискового пространства каждым файлом в каталоге.

![](https://i.imgur.com/jmTw3T1.png)

Например, чтобы получить общий размер /var/lib и всех его подкаталогов, вы должны выполнить следующую команду:

![](https://i.imgur.com/XwbP4sj.png)

Чтобы сообщить только общий размер указанного каталога, а не подкаталогов, используйте параметр -s : 

![](https://i.imgur.com/Ldl1Q54.png)

Параметр *-c* указывает *du* сообщать общую сумму. Это полезно, когда вы хотите получить объединенный размер двух или более каталогов.

![](https://i.imgur.com/tR1yU2M.png)

Параметр *-c* указывает *du* сообщать общую сумму. Это полезно, когда вы хотите получить объединенный размер двух или более каталогов.

![](https://i.imgur.com/zS4pRvG.png)

По умолчанию утилита du повторно использует дисковое пространство, используемое каталогом или файлом. Чтобы узнать очевидный размер файла, используйте переключатель *--apparent-size* . «Видимый размер» файла — это фактический объем данных в файле.

![](https://i.imgur.com/TSjPZZf.png)

du также позволяет использовать шаблон оболочки. Например, чтобы получить размер всех каталогов, начинающихся с «Do» в вашем домашнем каталоге, вы должны запустить:

![](https://i.imgur.com/6qwpegr.png)

**Использование du с другими командами**

Команду du можно комбинировать с другими командами с конвейерами.
Например, чтобы напечатать 5 самых больших каталогов внутри каталога */var* вы должны передать вывод du в команду sort чтобы отсортировать каталоги по их размеру, а затем передать результат в команду head которая распечатает только 5 верхних каталогов:

![](https://i.imgur.com/85rSR4r.png)

**3. Команда free в Linux**

Вывод будет включать три строки, заголовок, одну строку для памяти и одну для свопа:

![](https://i.imgur.com/yLsGW9t.png)

По умолчанию команда free показывает информацию о памяти в килобайтах. Чтобы просмотреть информацию в удобочитаемом формате (обычно в мегабайтах и гигабайтах), используйте параметр -h: 

![](https://i.imgur.com/FPylWPm.png)

**Например, чтобы отобразить результат в мегабайтах, введите:**

![](https://i.imgur.com/LWKmOd1.png)

**Отображение итоговых значений столбца**

![](https://i.imgur.com/gURo5Ug.png)

**Непрерывно печатать результат**

Например, чтобы распечатывать информацию о памяти каждые пять секунд, вы должны выполнить:

![](https://i.imgur.com/jMUocwi.png)

Чтобы отображать результат определенное количество раз, используйте параметр -c ( --count ). В примере ниже команда выведет результат десять раз:

![](https://i.imgur.com/SUHwENN.png)

**3.1 Команда free в Linux с примерами**

![](https://i.imgur.com/24dn3RC.png)

Это покажет вам только один вывод для команды free, но этот вывод будет изменяться через регулярные промежутки времени.

![](https://i.imgur.com/MFDqv4Q.png)

**4. iostat**

Установка iostat

![](https://i.imgur.com/co1B1nD.png)

Запуск IOSTAT

![](https://i.imgur.com/pCSDfaU.png)

Синтаксис iostat очень простой. Вам достаточно выполнить:

![](https://i.imgur.com/UHFjaAc.png)

Самый простой пример использования утилиты, это запустить её без параметров. Она выведет отчёт с со средней статистикой с момента включения системы до момента запуска программы:

![](https://i.imgur.com/7SslpaL.png)

Рассмотрим ещё несколько примеров. Для просмотра данных в удобном формате выполните:

![](https://i.imgur.com/qIGaJpl.png)

Чтобы посмотреть данные по нужному устройству просто укажите это устройство:

![](https://i.imgur.com/uYTiXdC.png)

Можно посмотреть статистику по каждому разделу устройства, тогда надо воспользоваться опцией -p:

![](https://i.imgur.com/wS8vcEC.png)

Если вы не хотите чтобы утилита суммировала все данные с момента запуска операционной системы, то можно использовать опцию -y. Но работает она только если задан интервал:

![](https://i.imgur.com/nYXlVOt.png)

**4.1 Профилирование нагрузки на файловую систему с помощью iostat**

**Измерения**

**Подготовка**

Для начала разумно сохранить df -hl для того чтобы понимать о каких разделах идет речь.

![](https://i.imgur.com/eZVitdZ.png)

**Строчка для получения лог файла:**

![](https://i.imgur.com/GPUPcq7.png)

**Ввод нашего лога будет примерно таким**:

![](https://i.imgur.com/1r4B8DO.png)

**5. mpstat**

**5.1 Отображение всей информации**

![](https://i.imgur.com/QaOB1Gp.png)

**5.2 Показать статистику CPU индивидуального процессора (или) ядра**

![](https://i.imgur.com/5uFjFR7.png)

**5.3 Для отображения статистически о конкретном CPU или ядре, используйте опцию «-P», как показано ниже:**

![](https://i.imgur.com/mlbqhMY.png)

**5.4 Можно выполнить «mpstat -V» чтобы показать версию утилиты:**

![](https://i.imgur.com/tNw978j.png)

**5.5 Дополнительные опции**

![](https://i.imgur.com/6Y79I4M.png)

**6. vmstat**

![](https://i.imgur.com/yLqIaoH.png)

**vmstat -a**

![](https://i.imgur.com/LCK4pKj.png)

**vmstat -f**

![](https://i.imgur.com/EUWQ3X5.png)

**vmstat -d**

![](https://i.imgur.com/HTCZx7i.png)

**vmstat -D**

![](https://i.imgur.com/lgJImsk.png)

**vmstat --help**

![](https://i.imgur.com/0CemmFg.png)

**7. Утилита/команда " w "**

![](https://i.imgur.com/KflJEPU.png)

* h

![](https://i.imgur.com/x8cLEji.png)

* u

![](https://i.imgur.com/47914yH.png)

* s

![](https://i.imgur.com/dju0to3.png)

* f

![](https://i.imgur.com/E3bVAZb.png)

* i

![](https://i.imgur.com/49igxRr.png)

* o

![](https://i.imgur.com/FzAW71a.png)

* V

![](https://i.imgur.com/WCMtZ3U.png)

**8. Утилита htop**

Как установить htop

![](https://i.imgur.com/5huSXP8.png)

**Как просмотреть все процессы в Linux**

![](https://i.imgur.com/yroWt4U.png)

**Как ускорить или замедлить частоту обновления htop**

Например, чтобы программа обновляла окно каждую 1/10 секунды: sudo htop -d 1

![](https://i.imgur.com/gmhtgKw.png)

Чтобы программа выводила новые данные раз в 5 секунд: sudo htop -d 50

![](https://i.imgur.com/3dwuRB3.png)

**Как вывести процессы в виде дерева**

Для вывода процессов в виде дерева используйте опцию -t: sudo htop -t

![](https://i.imgur.com/3QOKFjw.png)

## Практическая работа №2.2

**1. Установка пакетов SSH**

![](https://i.imgur.com/tfvesc0.png)

$ systemctl status sshd и  service sshd status

![](https://i.imgur.com/RPceV2v.png)

**2. Настройка SSH**

- AddressFamily значение inet:
- AddressFamily inet
- Для адресов семейства IPv6 используется значение inet6.

**Параметр ListenAddress позволяет задавать порты для отдельных сетевых интерфейсов:**

- ListenAddress 10.24.205.75:2123
- ListenAddress 10.24.205.76:2124

![](https://i.imgur.com/YWkVBuc.png)

Очень полезным является параметр, позволяющий проводить авторизацию и шифрование трафика с помощью специальных SSH-ключей:

![](https://i.imgur.com/la7EtGg.png)

Следует заметить, что в таком случае серверу необходимо явно указывать, где хранятся открытые ключи пользователей:

![](https://i.imgur.com/uvCWKhg.png)

**Важно также отключать парольный доступ:**

![](https://i.imgur.com/7DOOdGn.png)

Для указания разрешённых или запрещённых пользователей и групп служат директивы DenyUsers, AllowUsers, DenyGroups, и AllowGroups. Значениями для них являются списки имён, разделяемых пробелами, например:

![](https://i.imgur.com/4BDP39w.png)

Следует также отключать root-доступ:

![](https://i.imgur.com/Z5YJsot.png)

Настройки для алиасов хранятся либо глобально в /etc/ssh/ssh_config, либо раздельно для пользователей в ~/.ssh/config. Здесь нужно не спутать с ssh_config! Пример:

![](https://i.imgur.com/96apsPj.png)

![](https://i.imgur.com/8yKpk1p.png)


**3. Настройка и использование клиента SSH**

![](https://i.imgur.com/ioByQwL.png)

**4. Для генерации ключей используется утилита ssh-keygen:**

![](https://i.imgur.com/mZheK02.png)

Утилита предложит выбрать расположение ключей (лучше всё оставить по-умолчанию), обычно это каталог `~/.ssh/,` ввести парольную фразу для закрытого ключа. После чего будут сгенерированы открытый ключ `id_rsa.pub` и закрытый `— id_rsa`. Теперь нужно скопировать открытый ключ, т. е. «слепок» закрытого на сервер. Проще всего этого можно добиться командой:

![](https://i.imgur.com/AOt5ZzS.png)

Теперь можно выполнить подключение командой ssh и запустить защищённый сеанс удалённого управления.

![](https://i.imgur.com/eJaFvJj.png)

Важно заметить, что использование сгенерированных `openSSH`-ключей несовместимо с PPK-форматом, используемым по-умолчанию в таких комплексах как PuTTY. Поэтому необходимо конвертировать имеющиеся `openSSH`-ключи в формат PPK. Удобнее всего это делать с помощью утилиты PuTTY – puttygen.exe.

**Указываем необходимые параметры:**

![](https://i.imgur.com/d2zm22A.png)

**Не забываем указать путь до приватного ключа:**

![](https://i.imgur.com/C95IniY.png)

**Подключаемся:**

![](https://i.imgur.com/Tqkg3XS.png)

![](https://i.imgur.com/gioAWEc.png)

## Практическая работа №2.3

**1. Как работают ключи SSH?**

--

**2. Создание ключей SSH**

Если ранее вы сгенерировали пару ключей SSH, вы можете увидеть следующий диалог:

![](https://i.imgur.com/q7HgVlF.png)

**3. Как скопировать открытый ключ на ваш сервер**

![](https://i.imgur.com/KyrgAgs.png)

**4. Аутентификация на сервере с использованием ключей SSH**

![](https://i.imgur.com/iXo2hBl.png)

**5. Отключение аутентификации с помощью пароля на сервере**

![](https://i.imgur.com/8XPtSko.png)

**6. Копирование открытого ключа с помощью SSH**

![](https://i.imgur.com/eRUjXjt.png)

## Практическая работа №2.4

**1.Базовый сбор информации**

![](https://i.imgur.com/xkBkRHA.png)

**По ядру linux можно понять следующее:**

uname -a

![](https://i.imgur.com/8Rm0M9F.png)

whoami

![](https://i.imgur.com/s4jI2cP.png)

Команда uptime покажет, когда и сколько система работала и соответственно, если она работала без перерыва 3 года, то злоумышлинник может воспользоваться старыми уязвимостями для получения доступа или внедрения кода.

![](https://i.imgur.com/jBN03Yj.png)

Давайте посмотри права директории /home

![](https://i.imgur.com/NmQLgM5.png)

Чтобы ограничить права другим пользователям делаем следующее
sudo chmod o-rx /home/kali

![](https://i.imgur.com/3X9zL89.png)

ip neigh - показывает с какими компьютерами происходит обмен данными

![](https://i.imgur.com/HT578eU.png)

sudo ss -tlnp - показывает какие сервисы и с какими портами запущены

![](https://i.imgur.com/CONyvcw.png)

sudo -l - позволяет нам понять, что есть в этом машинки и что пользователь может

![](https://i.imgur.com/fbfQedX.png)

**2. Суидные файлы**

В системе могут быть различные закладки

![](https://i.imgur.com/0EzZnFp.png)

Базовый сбор информации может происходить не только вручную, давайте разберемся

wget https://downloads.cisofy.com/lynis/lynis-3.0.6.tar.gz

![](https://i.imgur.com/qajibWF.png)

Далее необходимо разаархивировать вводим следующее:

![](https://i.imgur.com/L0HNaDB.png)

затем давайте проверим контрольную сумму с сайта и то, что мы скачали

![](https://i.imgur.com/dUDsQzr.png)

далее переходим в директорию lynis

![](https://i.imgur.com/7yo1RgM.png)

далее запускаем утилиту lynis

sudo ./lynis audit system

![](https://i.imgur.com/Y9G8Xji.png)

нажимаем Enter

![](https://i.imgur.com/7cFRNjL.png)

Это вывод report-отчёт

![](https://i.imgur.com/XL69EkD.png)

ещё можно набрать команду `./lynis show options`

![](https://i.imgur.com/bteT5oS.png)

Перенаправлять файлы лучше через стандартный report утилиты:

/var/log/lynis-report.dat

![](https://i.imgur.com/tDpVXzw.png)

![](https://i.imgur.com/cpEoFzT.png)

**3. Проверка целостностей пакетов**

dpkg -l

![](https://i.imgur.com/ktfaZU6.png)

для просмотра установленных утилит необходимо набрать следующую команду

```
dpkg -L coreutils
```

![](https://i.imgur.com/Kns6xBd.png)

например рассмотрим утилиту /bin/dir
/bin/dir --help
которая позволяет нам работать по сути как ls

![](https://i.imgur.com/yIyUko8.png)

что будет если мы поменяем /bin/false на /bin/dir тем самым с имитируем подмену или правку кода программы
сделаем backup sudo mv /bin/dir /bin/dir.bak

![](https://i.imgur.com/Uym8WnE.png)

вводим команду sudo cp /bin/false /bin/dir

![](https://i.imgur.com/nsUfzcw.png)

теперь при запуске dir мы можем уыидеть, что ничего не будет происходить, кроме как если посмотреть логическую ложь, то будет ошибка

echo $?

![](https://i.imgur.com/prh1pWz.png)

соответственно, чтобы нам быстро проверить этот пакет мы можем выполнить команду

```
debsums
```

и если она не установленна, то необходимо её установить через команду

```sudo apt install debsums```

![](https://i.imgur.com/8ZBL1R3.png)

- `debsums -ac coreutils` - запуск проверки
- `debsums -cs coreutils` - запуск проверки

![](https://i.imgur.com/oolKN9n.png)

можно также проверить утилитой

![](https://i.imgur.com/MVCwpK7.png)

Если кто-то смог проникнуть в систему и что-то деал в ней нам поможет команда find
Например, если нам надо рассмотреть какой либо инцидент:
sudo find / -printf "%T@;%Tc;%p\\n"

![](https://i.imgur.com/xvnmq8w.png)

можно указать через пробел, но тогда будет сложно работать с выводом данных:
`sudo find / -printf "%T@ %Tc %p\\n"`

![](https://i.imgur.com/qNaM9sp.png)

Далее если надо сделать по одному конкретному пользователю необходиму следующие:

`sudo find /home/kali/ -printf "%T@;%Tc;%p\\n" > timeline.csv`

![](https://i.imgur.com/qt3zp0P.png)

Затем желательно это отсортировать, например:

`head timeline.csv` сейчас никак не отсортированно

![](https://i.imgur.com/GqjaoIq.png)

Но давайте отсортируем данный файл с помощью команды:

sort -rn timeline.csv | less

![](https://i.imgur.com/7mgAmet.png)

## Практическая работа №2.5

**1. Просмотр списка системных переменных окружения**

Пропишем команду sudo `apt-get install coreutils`, чтобы проверить наличие данной утилиты у вас в системе и сразу же установить ее при надобности.

![](https://i.imgur.com/pwVLOXo.png)

Теперь воспользуемся командой

```
Coreutils
```

чтобы раскрыть список всех переменных окружения.

![](https://i.imgur.com/Ukt8GFQ.png)

1.1 Список основных системных и пользовательских переменных окружения.

--

**2. Запуск команд с указанием нового значения переменной окружения**

Можно самостоятельно на время изменить опцию любого параметра, чтобы запустить с ним определенную программу или выполнить любые другие действия. В таком случае в консоли вам будет достаточно прописать env VAR=VALUE, где VAR — название переменной, а VALUE — ее значение, например, путь к папке /home/kali.

![](https://i.imgur.com/f1EJPOz.png)

**2.1 Установка и удаление локальных переменных окружения**

Запустите «Терминал» и напишите команду `VAR=VALUE`, после чего нажмите на клавишу `Enter`. Как обычно, VAR — любое удобное название переменной одним словом, а `VALUE` — значение.

![](https://i.imgur.com/0W6aeNG.png)

Проверьте действенность произведенных действий, введя `echo $TESTKALI`. Строчкой ниже вы должны получить опцию переменной.

![](https://i.imgur.com/NkORzZW.png)

Удаляется любой параметр командой `unset TESTKALI`.

![](https://i.imgur.com/dZ2ArXE.png)

Проверить удаление можно также через

```
echo $TESTKALI
```

![](https://i.imgur.com/xKhyxNi.png)

**2.2 Добавление и удаление пользовательских переменных**

*Пользовательскую конфигурацию можно редактировать через* `sudo nano .bashrc.`

![](https://i.imgur.com/qrTktZR.png)

*Обновление конфигурации произойдет после повторного старта файла, а делается это через* `source .bashrc.`

![](https://i.imgur.com/wFXfLyy.png)

Проверить активность переменной можно через ту же опцию `echo $TESTKALI`.

![](https://i.imgur.com/504glJs.png)

**2.3 Создание и удаление системных переменных окружения**

**Осталось только затронуть третий класс переменных — системные.**
Редактироваться для этого будет файл /ETC/PROFILE, который остается активным даже при удаленном подключении, например, через известный многим менеджер SSH. Открытие конфигурационного элемента осуществляется примерно так же, как и в предыдущем варианте:

введите `nano /etc/profile`

![](https://i.imgur.com/4e3Xod9.png)

Внесём `TESTKALI2=/home/kali12345`

Сохраняем и выходим.

Пишем команду `source /etc/profile` - чтобы изменения вступили в силу.

![](https://i.imgur.com/etfsHNG.png)

Проверяем:

`echo $TESTKALI2=/home/kali12345`

![](https://i.imgur.com/jd0W17r.png)