# **Практическая работа №5**
```
Работу выполнил: Заварзин А.А.
Группа: БСБО-04-20
```
---
## **Выполнение**:
**Поменяем имя пользвателя** на Kali машинке на свою фамилию.
```
sudo usermod -l zavarzin user
```
В данный момент времени это **не получится сделать**. Значит вернёмся к этому позже.

### Настройка OpenVPN Server:
**Angristan** - скрипт, позволяющий вам настроить собственный защищенный VPN-сервер всего за несколько секунд.
**Во-первых**, получим скрипт и сделаем его исполняемым:
```
sudo apt update
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
sudo chmod +x openvpn-install.sh
```

Затем запустим его:
```
sudo ./openvpn-install.sh
```
Поменяем адрес клиента на **192.168.26.136.**

Все остальные настройки оставляем по умолчанию и укажем имя клиента **"client"**. Пароль не указываем.

Зайдем в **конфиги** и закомментируем 3 строчки:
```
sudo nano /etc/openvpn/server.conf
```

Чтобы все настройки применились делаем перезагрузку:
```
service openvpn restart
```
Посмотрим настройки на нашем клиенте и закомментируем 3 строчки.
```
sudo nano client.ovpn
```

### Настройка OpenVPN Client:
Узнаем какая **директория является домашней** для пользователя.
```
pwd
```

Перейдем к **Linux-VPN-client**(root, eve@123) и настроим сеть:
```
nano /etc/network/interfaces
```

Поменяем имя:
```
nano /etc/hosts
```

```
nano /etc/hostname
```

Воспользуемся утилитой **scp**. Это утилита командной строки Linux, которая позволяет безопасно копировать файлы и каталоги между двумя локациями.
Перейдем к **Linux-VPN-client** машинке и скопируем файл на **Linux-VPN-client** машинку:
```
scp user@192.168.26.136:/home/user/client.ovpn ./client.ovpn
```

Установим **OpenVPN** на **Linux-VPN-client** машинке. Обновим пакеты.
```
apt update -y
apt install openvpn
```
**Перекинем** наш конфиг в директорию /etc/openvpn.
```
mv client.ovpn /etc/openvpn/
```
Проверим устанавливается ли соединение, **запустим данный файл**.
```
openvpn /etc/openvpn/client.ovpn
```

Попробуем пропинговать **10.8.0.2** с **Kali**:

Попробуем подключиться к нему по **SSH**:

Попробуем пропинговать **фаервол с Kali**:

Пинг **не проходит**.
Чтобы пинг проходил надо добавить маршрут:
```
sudo ip route add 192.168.1.0/24 via 10.8.0.2
```
Но **пинг** все равно **не проходит**.

Посмотрим что прилетает на интерфейс **tun0**:
```
tcpdump -i tun0
```

Записи до **192.168.1.1** **не появляются** **хоть мы и прописали маршрут ранее**. **Это особенность** работы OpenVPN уровня **L3**. Чтобы всё заработало, нужно сказать OpenVPN что помимо маршрута должен быть еще свой собственный внутренний маршрут который будет перенаправлять трафик.
На **Kali** пропишем параметр, который говорит о том, что за vpn-клиентом есть сетка:
```
sudo nano /etc/openvpn/ccd/client
iroute 192.168.1.0 255.255.255.0
```

**Перезапуск** на **Kali**:
```
service openvpn restart
```
Маршрут на **Kali** пропал, **добавим** его снова:
```
sudo ip route add 192.168.1.0/24 via 10.8.0.2
```
Разрешим routing на **Linux-VPN-client**:
```
nano /etc/sysctl.conf
```

И настроим Nat:
```
iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
```
**Перезапуск** на **Linux-VPN-client**:
```
openvpn /etc/openvpn/client.ovpn
```
**Пинг проходит:**

Т.к. машинки на **Win7** и **Win10** лежат в сети 192.168.1.0/24, то их тоже можно **пингануть**.
Ip-адресс **Win7: 192.168.1.108**

Пинганём данную машинку **с Kali**:
