# Практика №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 ![](https://i.imgur.com/CrVWApY.png) ## Просмотр IP конфигураций устройств Kali22 - ![](https://i.imgur.com/FUvYXRP.png) FW-pfsense - ![](https://i.imgur.com/qKUnnvM.png) Debian - ![](https://i.imgur.com/d3WZnXs.png) Debian(OClient) - ![](https://i.imgur.com/ImOqPzN.png) Win10 - ![](https://i.imgur.com/CbnGxN4.png) ## 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 ``` ![](https://i.imgur.com/xkDID9a.png) Видим что openvpn работает: ![](https://i.imgur.com/iis20px.png) Далее зайдем в конфиг openvpn сервера и сделаем так, чтобы он не применял DNS к устройству и не делал Kali22 дефолтным роутером: `sudo nano /etc/openvpn/server.conf` ![](https://i.imgur.com/2vMOeYi.png) Теперь изменим файл client.ovpn, сделаем так, чтобы не блочились DNS: `sudo nano client.ovpn` ![](https://i.imgur.com/oPaWTVx.png) Так же включим SSH сервис, если он выключен: `sudo systemctl start ssh.service` ![](https://i.imgur.com/kNSfua9.png) Еще у нас появился новый tun0 интерфейс: ![](https://i.imgur.com/gb3uosT.png) Теперь добавим маршрут для клиента в самом 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` ![](https://i.imgur.com/qYgskWK.png) **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` ![](https://i.imgur.com/Ecdamg5.png) И видим, что файл передался: ![](https://i.imgur.com/ZPCnvNC.png) Далее включим роутинг: Расскоментируем строчку net.ipv4.ip_forward=1 в файле sysctl.conf `sudo nano /etc/sysctl.conf` ![](https://i.imgur.com/cbVIhxK.png) Теперь можем подключиться, используя наш файл конфигурации client.conf: `sudo openvpn /etc/openvpn/client.conf` ![](https://i.imgur.com/YEt8oHs.png) Еще сделам так, чтобы с интерфейса ens3 трафик NAT-ился: `iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE` Видим, что у нас появился новый tun0 интерфейс: ![](https://i.imgur.com/MCuT3r6.png) ### Проверка пинга до фаервола от 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>` ![](https://i.imgur.com/sksLPog.png) Видим что все пингуется! На Debian(OClient) можем увидеть вывод tcpdump: ![](https://i.imgur.com/saXZodp.png) Теперь мы можем подключиться к фаерволу: ![](https://i.imgur.com/BDeW5d2.png) ## 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: ![](https://i.imgur.com/i24UAes.png) И перезапускаем openvpn: `service openvpn restart` И видим tap0 интерфейс: ![](https://i.imgur.com/UVdjRKp.png) **Debian** Как и с OpenVPN L3, скачиваем openvpn, и через scp протокол получаем конфиг client.conf Далее неободимо отредактировать этот конфиг: sudo nano /etc/openvpn/client.conf ![](https://i.imgur.com/hguzWNH.png) После этого перезапустим openvpn: `sudo service openvpn restart` Подключаемся по openvpn: `sudo openvpn /etc/openvpn/client.conf` В идим tap0 интерфейс: ![](https://i.imgur.com/l17DlGl.png) Так же необходимо добавить этот tap0 интерфейс к нашему бриджу, для этого отредактируем файл /etc/network/interfaces: ![](https://i.imgur.com/mBbFDuK.png) Теперь перезапустим сеть: `service networking restart` Увидим что нас tap0 интерфейс находится в бридже: ![](https://i.imgur.com/VFN0oEQ.png) Теперь зайдя на Kali22, включив tcpdump на tap0 интерфейсе, мы увидим уже не IP пакеты, а фреймы: `tcpdump -i tap0 -e vlan` ![](https://hackmd.io/_uploads/B198yqrNh.png) Так же мы можем получить dhcp адрес для tap0: `dhclient tap0` ![](https://i.imgur.com/pLcRnK3.png) Теперь мы можем пропинговать фаервол(192.168.1.1): ![](https://i.imgur.com/SFKQzL5.png)