# Практика №4. Проникновение за периметр инфраструктуры. Технология SSH Port forwarding / SSH Tunneling
## Подготовка стенда
Инфраструктура использую ту, которая была в практике №3 (рис. 1)

<center> Рисунок 1. Инфраструктура </center>
---
## Reverse SSH connect
С помощью ssh я подключился к Kali через win-10 машинку (рис. 2).

<center> Рисунок 2. Подключение к Kali </center>
Я еще раз подключился к kali через новый терминал (рис. 2.1), но в этом случае через порт RDP (3389). Kali видит этот порт (рис. 2.2).

<center> Рисунок 2.1. Подключение к Kali </center>

<center> Рисунок 2.2. Порты на linux машинке </center>
Я подключился с помощью xfreerdp к win-10 машинке.
Команда: xfreerdp /u:user /p:eve@123 /v:127.0.0.1:3395 (рис 2.3).

<center> Рисунок 2.3. xfreerdp </center>

<center> Рисунок 2.4. Подключение к Kali </center>

<center> Рисунок 2.5. Порты на Kali </center>
Подключился к win-7 машинке через kali. **Итог** можно с любой машинке во внутренней части сети пробрасывать любой порт к любой машинке.
Команда: xfreerdp /u:user /p:eve@123 /v:127.0.0.1:3395 (рис 2.6).

<center> Рисунок 2.6. Подключение к Win-7 </center>
## SSH tunneling L3
Туннелирование - построения сетей, при котором один сетевой протокол инкапсулируется в другой.
SSH tunneling нужна, чтобы иметь доступ ко всем машинкам в инфраструктуре. Сложная штука, для этого я сделал тоннель между Kali и Debian и настроил NAT на Debian машинке и маршрутизацию на Kali.
На рисунке 3 видно, что я вошёл в ssh config, поставил "PermitRootLogin yes" и "PermitTunneling yes". На рисунке 3.1 видно, что я подключился к Kali машинке через Debian. На рисунке 3.3. показан, что появился tun0 интерфейс, но на нем нет ip адреса, на рисунке 3.4. добавляется ip адрес к tun0 интерфейсу. На debian тоже туннель поднял (рис. 3.5.). На рисунке 3.6. я с kali пропинговал 10.8.0.1/
Чтобы я с Kali мог пинговать FW на Debian я поставил на Debian NAT (рис. 3.7), видно, что FW пингуется (рис. 3.8).
К win-7 машинке подключился через туннель (рис. 3.9).

<center>Рисунок 3. ssh root </center>

<center>Рисунок 3.1. Подключился к Kali машинке </center>
Коннект по ssh -w 0:0 root[ip kali] произошел (рис. 3.2.)

<center>Рисунок 3.2. Коннект по ssh</center>

<center>Рисунок 3.3. Есть tun0 интерфейс</center>

<center>Рисунок 3.4. Появился ip на tun0 интерфейсе</center>

<center>Рисунок 3.5. Появился ip на tun0 интерфейсе</center>

<center>Рисунок 3.6. ping 10.8.0.1</center>

<center>Рисунок 3.7. NAT</center>

<center>Рисунок 3.8. ping FW</center>

<center>Рисунок 3.9. Подключение к win-7 машинке</center>

<center>Рисунок 3.10. Зашел в pfsens</center>
## SSH tunneling L2
Для туннелирования уровня L2 пришлось немного изменить инфраструктуру (рис. 4). 2 интерфейса - e0(ens3) и e1(ens4) стартуют, я их объединил в один интерфейс, чтобы они между собой пропускали трафик как делает коммутатор и получил ip еще (рис. 4.1). На рисунке 4.2 видно, что всё работает. На win-7 машинки всё работает, все ip получил, ping 8.8.8.8 пингуются через Debian-RPi4 (рис. 4.3).
Для создания туннеля уровня L2 надо установить ssh-соединение с дополнительными характеристиками.
ssh root@192.168.192.131 -o Tunnel=ethernet -w any:any
Флаг -o нужен для указания параметра файла конфигурации в cmd. Мы используем Tunnel=ethernet для настройки туннеля уровня L2. Флаг -w используется для указания интерфейсов.

<center>Рисунок 4. Инфраструктура</center>

<center>Рисунок 4.1. Конфиг</center>

<center>Рисунок 4.2. ip a</center>

<center>Рисунок 4.3. ip a</center>

<center>Рисунок 4.4. Создание туннеля</center>

<center>Рисунок 4.5. Интерфейс tap0 создался</center>

<center>Рисунок 4.6. Поднял интерфейсы</center>

<center>Рисунок 4.7. Поднял интерфейсы на Kali</center>

<center>Рисунок 4.8. Поднял ip на tap0</center>