---
# System prepended metadata

title: Linux_Basic-Остапенко_Владимир-Практика-2

---

# 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 