# Linux. Практическая работа № 2
## 2.1 Основы мониторинга
### 2.1.1 Утилита df
Команда df удобный инструмент опредeления использования дискового пространства. Запустим его с различными параметрами.
```bash=
df --output=source,itotal,iused,iavail,ipcent,size,used,avail,pcent,file,target
df --total
```
Результат

---
```bash=
df -a
```
Результат

---
```bash=
df -BM
```
Результат

---
```bash=
df -H
```
Результат

---
```bash=
df -i
```
Результат

---
```bash=
df -k
```
Результат

---
```bash=
df -P
```
Результат

---
```bash=
df
```
Результат

---
```bash=
df -h
```
Результат

---
```bash=
sudo df -a
```
Результат

---
```bash=
df -x tmpfs
```
Результат

---
```bash=
df -x devtmpfs -x tmpfs
```
Результат

---
```bash=
df -t ext4
```
Результат

---
```bash=
df -h /dev/sdb2
```
Результат

---
```bash=
df -hi /dev/sdb2
```
Результат

---
```bash=
df -h /home
```
Результат

---
### 2.1.2 Утилита du
```bash=
du /home
```
Результат

---
```bash=
sudo du /etc /usr /var/log
```
Результат

---
```bash=
du -a /home
```
Результат

---
```bash=
sudo du -h /var
```
Результат

---
```bash=
sudo du -sh /var
```
Результат

---
```bash=
sudo du -csh /var/log /var/lib
```
Результат

---
```bash=
sudo du -h --max-depth=1 /var/lib
```
Результат

---
```bash=
sudo du -sh --apparent-size /var/lib
```
Результат

---
```bash=
du -csh ~/Vi*
```
Результат

---
```bash=
sudo du -h /var/ | sort -rh | head -5
```
Результат

---
### 2.1.3 Утилита free
```bash=
free
```
Результат

---
```bash=
free -w
```
Результат

---
```bash=
free -h
```
Результат

---
```bash=
free --mega
```
Результат

---
```bash=
free -h -t
```
Результат

---
```bash=
free -s 5
```
Результат

---
```bash=
free -s 5 -c 10
```
Результат

---
```bash=
free -h --si -s 5 -c 4
```
Результат

---
```bash=
watch free -h
```
Результат


---
### 2.1.4 Утилита iostat
yum install sysstat

```bash=
iostat
```
Результат

---
```bash=
sudo iostat
```
Результат

---
```bash=
sudo iostat -h
```
Результат

---
```bash=
sudo iostat -c
```
Результат

---
```bash=
sudo iostat -d
```
Результат

---
```bash=
sudo iostat -h
```
Результат

---
```bash=
sudo iostat -k
```
Результат

---
```bash=
sudo iostat -m
```
Результат

---
```bash=
sudo iostat -o JSON
```
Результат

---
```bash=
sudo iostat -p
```
Результат

---
```bash=
sudo iostat -x
```
Результат

---
```bash=
sudo iostat -y
```
Результат

---
```bash=
sudo iostat -z
```
Результат

---
```bash=
sudo iostat /dev/sdb2
```
Результат

---
```bash=
sudo iostat -p /dev/sdb2
```
Результат

---
```bash=
sudo iostat -p /dev/sdb2 1
```
Результат

---
```bash=
sudo iostat -y -p /dev/sdb2
```
Результат

---
```bash=
sudo iostat -y -p /dev/sda1 1
```
Результат

---
```bash=
df -hl
```
Результат

---
```bash=
sudo iostat -xk -t 10 | awk '// {print strftime("%Y-%m-%d %H:%M:%S"),$0}' >> iostat.log &
```
Результат

---
```bash=
sudo iostat -xk -t 10 | awk '// {print srtftime("%Y-%m-%d %H:%M:%S"),$0}'
```
Результат

---
```bash=
cat iostat.log
```
Результат

---
### 2.1.5 Утилита mpstat
```bash=
mpstat -A
```
Результат

---
```bash=
mpstat -P ALL
```
Результат

---
```bash=
mpstat -P 0
```
Результат

---
```bash=
mpstat -V
```
Результат

---
```bash=
mpstat --help
```
Результат

---
### 2.1.6 Утилита vmstat
```bash=
vmstat
```
Результат

---
```bash=
sudo vmstat 3
```
Результат

---
```bash=
vmstat -a
```
Результат

---
```bash=
vmstat -f
```
Результат

---
```bash=
vmstat -d
```
Результат

---
```bash=
vmstat -D
```
Результат

---
```bash=
vmstat --help
```
Результат

---
### 2.1.7 Утилита w
```bash=
w
```
Результат

---
```bash=
w -h
```
Результат

---
```bash=
w -u
```
Результат

---
```bash=
w -s
```
Результат

---
```bash=
w -f
```
Результат

---
```bash=
w -i
```
Результат

---
```bash=
w -o
```
Результат

---
```bash=
w -V
```
Результат

---
### 2.1.8 Утилита htop
yum install htop

```bash=
htop
```
Результат


---
```bash=
sudo htop
```
Результат


```bash=
sudo htop -d 1
```
Результат


```bash=
sudo htop -d 50
```
Результат


```bash=
sudo htop -t
```
Результат


## 2.2 Установка и настройка сервера SSH в Linux
### 2.2.1 Установка SSH
Установим клиент и сервер
```bash=
yum install openssh-server openssh-client
```
Результат

Проверим запуск демона
```bash=
service sshd status
```
Результат

### 2.2.2 Настройка SSH
Посмотрим конфиг сервера
```bash=
cat /etc/ssh/sshd_config
```
Результат

Зададим порты и адреса прослушки, настроим использование ключей, отключим использование паролей, доступ для root и установим алиасы.
```bash=
# включим только IPv4
AddressFamily inet
# будем прослушивать только на петле
ListenAddress 127.127.127.127:1271
# включим ассиметричную аутентификацию
PubkeyAuthentication yes
# ключи в профиле пользователя
AuthorizedKeysFile %h/.ssh/authorized_keys
# отключим аутентификацию по паролю
PasswordAuthentication no
# дополнительно запретим пустые пароли
PermitEmptyPasswords no
# отключим доступ руту
PermitRootLogin no
```


Стартуем сервис
```bash=
sudo service sshd start
```
Однако есть проблемы


Проверим умолчания для ssh на selinux
```bash=
sudo semanage port -l | grep ssh
```

Добавим дополнительно еще и наш порт 1271
```bash=
sudo semanage port -a -t ssh_port_t -p tcp 1271
```

Проверим, что порт 1271 добавлен

Стартуем sshd
```bash=
sudo service sshd start
```
sshd стартовал

Для применения настроек выполняется следующая команда
```bash=
sudo service sshd restart
```
Результат

### 2.2.3 Настройка и использование клиента SSH
Подключение к серверу. В зависимости от настроек сервера будет запрош либо пароль, либо ключ.
```bash=
ssh user@192.168.1.75:1271
```
Результат подключения по паролю

---
Но мы будем подключаться по-другому.
Создадим алиас, в профиле пользователя
```bash=
nano ~/.ssh/config
```


Подключимся командой
```bash=
ssh localsshserver
```
Результат

Нас не пускает, так как нет ключей

Сгенегируем
### 2.2.4 Генерация ключей используя ssh-keygen
Запуск утилиты
```bash=
ssh-keygen
```
Результат

Расположение ключей оставим по-умолчанию

Введем парольную фразу

Ключи готовы

Скопируем открытый ключ на сервер
```bash=
ssh-copy-id -i ~/.ssh/id_rsa.pub localsshserver
```
Результат

Еще один вариат как скопировать открытый ключ на сервер
```bash=
cat ~/.ssh/id_rsa.pub | ssh localsshserver "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
```
Результат

## 2.3 Установка и настройка SSH-authorized_keys
Отключение аутентификации с помощью пароля
```bash=
sudo nano /etc/ssh/sshd_config
```
```bash
PasswordAuthentication no
```
Результат

Перезагрузим сервер
```bash=
sysemctl restart sshd
```
Результат

Аутентификация на сервере с помощью ключей
```bash=
ssh localsshserver
```
Результат

## 2.4 Сбор информации о Linux и WGET
Выполнять будем на Kali Linux
### 2.4.1 Сбор информации
```bash=
cat /etc/os-release
```
Результат

---
```bash=
uname -a
```
Результат

---
```bash=
whoami
```
Результат

---
```bash=
uptime
```
Результат

---
```bash=
ls -la /home
```
Результат

---
```bash=
sudo chmod o-rx /home/kali
```
Результат

---
```bash=
ip neigh
```
Результат

---
```bash=
sudo ss -tlnp
```
Результат

```bash=
sudo -l
```
Результат

---
### 2.4.2 SUID
```bash=
sudo find / -user root -perm -4000 -exec ls -ldb {} \; 2> /dev/null
```
Результат

---
```bash=
sudo apt install wget
```
Результат

---
```bash=
wget https://downloads.cisofy.com/lynis/lynis-3.0.8.tar.gz
```
Результат

---
```bash=
tar xfv lynis-3.0.8.tar.gz
```
Результат

---
Проверим контрольную сумму
Посмотрим ее на сайте

Контрольная сумма
```bash=
98373a4cc9d0471ab9bebb249e442fcf94b6bf6d4e9c6fc0b22bca1506646c63
```
---
Установим hashalot
```bash=
sudo apt install hashalot
```
Результат

---
Проверим хэш
```bash=
sha256sum lynis-3.0.8.tar.gz
```
Результат

Хэши совпадают
---
```bash=
cd lynus
ls
sudo ./lynus audit system
```
Результат


---
```bash=
sudo ./lynis show options
```
Результат

---
```bash=
sudo nano /val/log/lynis-report.dat
```
Результат

---
### 2.4.3 Проверка целостности пакетов
```bash=
dpkg -l
```
Результат

---
```bash=
dpkg -L coreutils
```
Результат

---
```bash=
/bin/dir --help
```
Результат

---
```bash=
sudo mv /bin/dir /bin/dir.back
```
Результат

---
```bash=
sudo cp /bin/false /bin/dir
```
Результат

---
```bash=
dir
echo $?
```
Результат

---
```bash=
apt install debsums
```
Результат

---
```bash=
debsums
```
Результат

---
```bash=
debsums -ac coreutils
```
Результат

---
```bash=
debsums -cs coreutils
```
Результат

---
```bash=
dpkg --verify coreutils
```
Результат

---
```bash=
sudo find / -printf "%T@;%Tc;%p\\n"
```
Результат

---
```bash=
sudo find /home/kali/ -printf "%T@;%Tc;%p\\n" > timeline.csv
```
Результат

---
```bash=
sudo find /home/kali/ -printf "%T@ %Tc %p\\n" > timeline.csv
```
Результат

---
```bash=
head timeline_spaces.csv
```
Результат

```bash=
sort -rn timeline_spaces.csv | less
```
Результат


---
## 2.5 Переменные окружения в Linux
### 2.5.0 Краткое описание
- /etc/profile
- /etc/environment
- /etc/bash.bashc
- .bashrc
- .bash_profile
Установим coreutils
apt install coreutils

```bash=
printenv
```
Результат

---
### 2.5.1 Запуск команды с указанием нового значения переменной окружения
```bash=
env HOME=/home/kali
```
Результат

---
### 2.5.2 Установка и удаление локальных переменных окружения
```bash=
TESTKALI=/home/kali
echo $TESTKALI
```
Результат

---
```bash=
echo $TESTKALI
unset TESTKALI
echo $TESTKALI
```
Результат

---
### 2.5.3 Добавление и удаление пользовательских переменных
Добавим TESTKALI export TESTKALI="/home/kali"
```bash=
sudo nano .bashrc
```
Результат


---
```bash=
echo $TESTKALI
source .bashrc
echo $TESTKALI
```
Результат

---
### 2.5.4 Создание и удаление системных переменных окружения
Внесем TESTKALI2=/home/kali12345
```bash=
sudo nano /etc/profile
```
Результат


```bash=
echo $TESTKALI2
source /etc/profile
echo $TESTKALI2
```
Результат

---
На этом данная работа завершена