<h1>OS Linux basic. Практическая работа №2 </h1>
<h2>Часть 1 - Основы мониторинга OS Linux с помощью утилит df, du, free, iostat, mpstat, vmstat, w, htop.</h2>
`df`

`df -h`

`df -a`

`df -x tmpfs`

`df -x devtmpfs -x tmpfs`

`df -t ext4`

`df -h /dev/sda5`

`df -hi /dev/sda5`

`df -h /home`

### Команда du
`du`

`du ~/Documents`

`du ~/Documents ~/Pictures ~/.zshrc`

`du -a ~/Documents`

`sudo du -h /var`

`sudo du -sh /var`

```
sudo du -csh /var/log /var/lib
```

```
sudo du -h --max-depth=1 /var/lib
```

```
sudo du -sh --apparent-size /var/lib
```

```
sudo du -csh ~/Do*
```

**Использование du с другими командами**
```
sudo du -h /var/ | sort -rh | head -5
```

### 3 Команда free
`free`

`free -w`

`free -h`

`free -h -t`

`free --mega`

free -s 5

`free -h --si -s 5 -c 4`

`watch free -h`

### 4. iostat
apt install sysstat

`sudo iostat`

`sudo iostat -h`

`sudo iostat /dev/nvme0n1`

`sudo iostat -p /dev/nvme0n1`

`sudo iostat -p /dev/nvme0n1 1`

### 4 Профилирование нагрузки на файловую систему с помощью iostat
df -hl

**Строчка для получения лог файла:**
`iostat -xk -t 10 | awk '// {print strftime("%Y-%m-%d %H:%M:%S"),$0}' >> iostat.log &`
`iostat -xk -t 10 | awk '// {print strftime("%Y-%m-%d %H:%M:%S"),$0}`'

### 5. mpstat
`mpstat -A`

`mpstat -P ALL`

`mpstat -P 0`

`mpstat -V`

`mpstat --help`

### 6. vmstat
vmstat

vmstat -a

vmstat -f

vmstat -d

vmstat -D

vmstat --help

vmstat 1

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

- h

- u

- s

- f

- i

- o

- V

### 8. Утилита htop
**Как просмотреть все процессы в Linux**
` htop`

`sudo htop`

`htop -d 1`

`htop -d 50`

`htop -t`

<h2>Часть 2 - Установка и настройка сервера SSH в Linux</h2>
установим ssh
apt install ssh

проверим статус systemctl status ssh service sshd status

Настроим ssh


Проверим подключение linux

Проверим подключение windows после смены порта

Создаем ключи

<h2>Часть 3 - Практическая работа "Установка и настройка SSH-authorized_keys"</h2>
Генерируем ключи

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

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

отправляем его на сервер

и подключаемся по ключу без парольной фразы

<h2>Часть 4 - Практическая работа "Сбор информации о Linux и WGET"</h2>
### 1.Базовый сбор информации
Начнём со сбора информации о дистрибутивах
*cat /etc/release - информация о дистрибутиве и какая версия его*

**uname -a**

**whoami**

**uptime**

**ls - la /home**

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

**ip neigh**

**sudo ss -tlnp **

**sudo -l **

### 2.Суидные файлы
`wget https://downloads.cisofy.com/lynis/lynis-3.0.6.tar.gz`

tar xfv lynis-3.0.3.tar.gz

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

`sha256sum lynis-3.0.6.tar.gz`

**далее переходим в директорию lynis**
```
cd lynis
ls
```

**далее запускаем утилиту lynis**
`sudo ./lynis audit system`


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

**Перенаправлять файлы лучше через стандартный report утилиты:**
`nano /var/log/lynis-report.dat`

### 3. Проверка целостностей пакетов
Для просмотра пакетов в системе
```
dpkg -l
```

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

сделаем backup sudo mv /bin/dir /bin/dir.bak

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

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

соответственно, чтобы нам быстро проверить этот пакет мы можем выполнить команду
`debsums -ac coreutils`
`debsums -cs coreutils`

можно также проверить утилитой
```
dpkg --verify coreutils
```

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

Далее если надо сделать по одному конкретному пользователю необходиму следующие:
`sudo find /home/kali/ -printf "%T@;%Tc;%p\\n" > timeline.csv`

Но давайте отсортируем данный файл с помощью команды:
`sort -rn timeline.csv | less`

где флаг `-r` как раз будет указывать, что последнее изменение будет первым

<h2>Часть 5 - Практическая работа "Переменные окружения в Linux .bashrc, .bash_profile и .bash_login"</h2>
### Просмотр списка системных переменных окружения
Воспользуемся командой `printenv`, чтобы раскрыть список всех переменных окружения.

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

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

Проверим ее значение

Теперь удалим ее и проверим удаление

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

И запишем в конец новую переменную

Обновим конфигурацию `source .bashrc.` и проверим значение переменной

### Создание и удаление системных переменных окружения
Откроем`nano /etc/profile`
Внесём `TESTKALI2=/home/kali12345`
Сохраняем и выходим.
Пишем команду `source /etc/profile` - чтобы изменения вступили в силу.
Проверяем:
`echo $TESTKALI2=/home/kali12345`

Создадим 2 файла .bash_profile и .bash_login

пропишем вот таку команду

а в файлы положим /usr/games/fortune
при подключении по ssh видим надпись

удалим .bash_profile

и все равно увидим надпись потому что отработал файл .bash_login
