# Практика №5-6. Проникновение за периметр инфраструктуры. OpenVPN L3, L2 Tunneling
## Инфраструктура
- Kali-2022 - Linux Kali 2021 (2CPU, 2GB RAM)
- FW-pfsense - PfSense Firewall 2.5.2, default config (Qemu version 4.1.0, 2CPU, 2GB RAM)
- Switch - Cisco IOL-L2 (2 port-groups)
- Debian - Linux Debian 10 (1CPU, 1GB RAM)
- Debian(OClient) - Linux Debian 10 (1CPU, 1GB RAM)
- Win-10 - Windows 10 (full) (2CPU, 2GB RAM)
- Win-7 - Windows 7 (full) (QEMU 2.12, 4CPU, 4GB RAM)
- Network:
- Pfsense Default config (WAN-DHCP, LAN - static IP)
- Internet - Cloud-1

## Просмотр IP конфигураций устройств
Kali22 -

FW-pfsense -

Debian -

Debian(OClient) -

Win10 -

## OpenVPN L3 Tunneling
### Установка и запуск OpenVPN на Kali22 и Debian(OClient)
**Kali22:**
```
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
./openvpn-install.sh
```

Видим что openvpn работает:

Далее зайдем в конфиг openvpn сервера и сделаем так, чтобы он не применял DNS к устройству и не делал Kali22 дефолтным роутером:
`sudo nano /etc/openvpn/server.conf`

Теперь изменим файл client.ovpn, сделаем так, чтобы не блочились DNS:
`sudo nano client.ovpn`

Так же включим SSH сервис, если он выключен:
`sudo systemctl start ssh.service`

Еще у нас появился новый tun0 интерфейс:

Теперь добавим маршрут для клиента в самом openvpn:
```
cd /etc/openvpn/ccd
nano client
```
В файле добавляем маршрут:
iroute 192.168.1.0 255.255.255.0
После перезагружаем openvpn сервис:
`service openvpn restart`
Так же необходимо добавить маршрут до внутренней сети Debian:
`ip route add 192.168.1.0/24 via 10.8.0.2`

**Debian(OClient):**
Для начала установим openvpn:
`sudo apt install openvpn`
Скачаем файл client.conf с Kali22 с помощью протокола scp и переместим его в /etc/openvpn/
`sudo scp user@172.68.25.134:/home/user/client.ovpn /etc/openvpn/client.conf`

И видим, что файл передался:

Далее включим роутинг:
Расскоментируем строчку net.ipv4.ip_forward=1 в файле sysctl.conf
`sudo nano /etc/sysctl.conf`

Теперь можем подключиться, используя наш файл конфигурации client.conf:
`sudo openvpn /etc/openvpn/client.conf`

Еще сделам так, чтобы с интерфейса ens3 трафик NAT-ился:
`iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE`
Видим, что у нас появился новый tun0 интерфейс:

### Проверка пинга до фаервола от Kali22
**Debian(OClient):**
Установим tcpdum для анализа трафика на нашей tun0 интерфейсе:
`sudo apt install tcpdump`
Запустим tcpdump на tun0 интерфейс:
`sudo tcpdump -i tun0`
**Kali22:**
Сначала пропингуем 10.8.0.2, затем 192.168.1.1:
`ping <IP>`

Видим что все пингуется!
На Debian(OClient) можем увидеть вывод tcpdump:

Теперь мы можем подключиться к фаерволу:

## OpenVPN L2 Tunneling
**Kali22**
Для начала скопируем файл конфигурации server.conf и переименуем его в server.conf.l3, для того чтобы не потерять старую конфигурацию:
```
cd /etc/openvpn
cp server.conf server.conf.l3
```
Настроим файл server.conf так, чтобы внутри тоннеля передавались не IP пакеты, а Ethernet фреймы:
sudo nano /etc/openvpn/server.conf
Заккоментируем строчку dev tun, после добавим строчку dev tan:

И перезапускаем openvpn:
`service openvpn restart`
И видим tap0 интерфейс:

**Debian**
Как и с OpenVPN L3, скачиваем openvpn, и через scp протокол получаем конфиг client.conf
Далее неободимо отредактировать этот конфиг:
sudo nano /etc/openvpn/client.conf

После этого перезапустим openvpn:
`sudo service openvpn restart`
Подключаемся по openvpn:
`sudo openvpn /etc/openvpn/client.conf`
В идим tap0 интерфейс:

Так же необходимо добавить этот tap0 интерфейс к нашему бриджу, для этого отредактируем файл /etc/network/interfaces:

Теперь перезапустим сеть:
`service networking restart`
Увидим что нас tap0 интерфейс находится в бридже:

Теперь зайдя на Kali22, включив tcpdump на tap0 интерфейсе, мы увидим уже не IP пакеты, а фреймы:
`tcpdump -i tap0 -e vlan`

Так же мы можем получить dhcp адрес для tap0:
`dhclient tap0`

Теперь мы можем пропинговать фаервол(192.168.1.1):
