refactored. 01-02-03 done
234
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/README.md
Normal file
@@ -0,0 +1,234 @@
|
||||
# Сетевая безопасность. Лабораторная работа №1 (HW)
|
||||
## Ход работы
|
||||
|
||||
Для стенда мы будем использовать 2 виртуальные машины `Ubuntu Linux 22.04`:
|
||||
|
||||
| hostname | ip address |
|
||||
| ----- | ----- |
|
||||
| ubuntu | 192.168.103.100 |
|
||||
| ubuntu2 | 192.168.103.101 |
|
||||
|
||||
`ubuntu` будет использоваться в качестве сервера, а `ubuntu2` -- в качестве клиента.
|
||||
|
||||
С помощью инструмента `iperf3` и замерим скорость передачи данных в условиях открытой сети.
|
||||
|
||||

|
||||
|
||||
Как видим, при отсутствии VPN скорость между хостами около 18 Гбит/с.
|
||||
|
||||
### Настройка OpenVPN
|
||||
1. Для настройки OpenVPN установим необходимые пакеты на обе машины с помощью `sudo apt install openvpn`
|
||||
|
||||
`ubuntu`
|
||||
|
||||

|
||||
|
||||
`ubuntu2`
|
||||
|
||||

|
||||
|
||||
2. Настроим сервер OpenVPN на `ubuntu`
|
||||
1. Создадим каталог `/etc/openvpn/easy-rsa` и скопируем в него исполняемый файл `easy-rsa`
|
||||
|
||||
```bash
|
||||
root@ubuntu:/home/marker# mkdir /etc/openvpn/easy-rsa
|
||||
root@ubuntu:/home/marker# cp -R /usr/share/easy-rsa /etc/openvpn/
|
||||
root@ubuntu:/home/marker# cd /etc/openvpn/easy-rsa/
|
||||
```
|
||||
|
||||
2. Выполним инициализацию PKI
|
||||
|
||||
```bash
|
||||
./easyrsa init-pki
|
||||
```
|
||||

|
||||
|
||||
3. Выпустим корневой сертификат
|
||||
|
||||
```bash
|
||||
./easyrsa build-ca
|
||||
```
|
||||
|
||||

|
||||
|
||||
4. Сгенерируем последовательность Диффи-Хелмана (DH)
|
||||
|
||||
```bash
|
||||
./easyrsa gen-dh
|
||||
```
|
||||
|
||||

|
||||
|
||||
5. Создадим CRL
|
||||
|
||||
```bash
|
||||
./easyrsa gen-crl
|
||||
```
|
||||
|
||||

|
||||
|
||||
6. Сгенерируем ключ TLS-Auth
|
||||
|
||||
```bash
|
||||
openvpn --genkey tls-auth /etc/openvpn/ta.key
|
||||
```
|
||||
|
||||

|
||||
|
||||
7. Сгенерируем серверный сертификат
|
||||
|
||||
```bash
|
||||
./easyrsa build-server-full server nopass
|
||||
```
|
||||
|
||||

|
||||
|
||||
8. Скопируем криптографическую информацию в папку `/etc/openvpn/`
|
||||
|
||||
```bash
|
||||
cp ./pki/ca.crt /etc/openvpn/ca.crt
|
||||
cp ./pki/dh.pem /etc/openvpn/dh2048.pem
|
||||
cp ./pki/crl.pem /etc/openvpn/crl.pem
|
||||
cp ./pki/issued/server.crt /etc/openvpn/server.crt
|
||||
cp ./pki/private/server.key /etc/openvpn/server.key
|
||||
```
|
||||
|
||||
9. Создадим файл `/etc/openvpn/server.conf` и наполним его следующим:
|
||||
|
||||
```
|
||||
port 1194
|
||||
# TCP or UDP server?
|
||||
;proto tcp
|
||||
proto udp
|
||||
dev tun
|
||||
ca ca.crt
|
||||
cert server.crt
|
||||
key server.key # This file should be kept secret
|
||||
dh dh2048.pem
|
||||
server 10.8.0.0 255.255.255.0
|
||||
ifconfig-pool-persist /var/log/openvpn/ipp.txt
|
||||
keepalive 10 120
|
||||
tls-auth ta.key 0 # This file is secret
|
||||
cipher CHACHA20-POLY1305
|
||||
data-ciphers CHACHA20-POLY1305
|
||||
persist-key
|
||||
persist-tun
|
||||
status /var/log/openvpn/openvpn-status.log
|
||||
verb 3
|
||||
```
|
||||
|
||||
Таким образом мы указали, что мы будем работать по протоколу UDP на порту 1194, использовать ранее сгенерированные криптопоследовательности, а частной сетью будет `10.8.0.0/24` (у сервера будет адрес `10.8.0.1`)
|
||||
|
||||
10. Сгенерируем клиентский сертификат
|
||||
|
||||
```bash
|
||||
./easyrsa build-client-full client nopass
|
||||
```
|
||||
|
||||

|
||||
|
||||
11. Скопируем криптографическую информацию клиента в папку `/etc/openvpn/clients/client`
|
||||
```bash
|
||||
mkdir /etc/openvpn/clients
|
||||
mkdir /etc/openvpn/clients/client
|
||||
cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/clients/client/
|
||||
cp /etc/openvpn/ta.key /etc/openvpn/clients/client/
|
||||
cp /etc/openvpn/easy-rsa/pki/issued/client.crt /etc/openvpn/clients/client/
|
||||
cp /etc/openvpn/easy-rsa/pki/private/client.key /etc/openvpn/clients/client/
|
||||
```
|
||||
12. Создадим файл конфигурации клиента `/etc/openvpn/clients/client/client.conf`
|
||||
```
|
||||
client
|
||||
dev tun
|
||||
;proto tcp
|
||||
proto udp
|
||||
remote 192.168.103.100 1194
|
||||
nobind
|
||||
persist-key
|
||||
persist-tun
|
||||
ca ca.crt
|
||||
cert client.crt
|
||||
key client.key
|
||||
remote-cert-tls server
|
||||
tls-auth ta.key 1
|
||||
cipher CHACHA20-POLY1305
|
||||
data-ciphers CHACHA20-POLY1305
|
||||
verb 3
|
||||
```
|
||||
13. Папку с конфигурацией клиента и криптографической информацией передадим на машину `ubuntu2` с помощью `scp`
|
||||
|
||||
`scp /etc/openvpn/clients/client/* marker@192.168.103.101:/home/marker/client`
|
||||
|
||||

|
||||
|
||||
14. Запустим сервер и клиент.
|
||||
|
||||

|
||||
|
||||
15. Проверим наличие сетевых интерфейсов.
|
||||
|
||||

|
||||
|
||||
3. Проверим скорость соединения с помощью `iperf3`
|
||||
|
||||

|
||||
|
||||
Мы получили среднюю скорость около 850 Мбит/c. Теперь проверим, как этот результат изменится, в случае использования TCP.
|
||||
|
||||
4. Изменяем строку `proto udp` на `proto tcp` в конфигах сервера и клиента.
|
||||
5. Перезапускаем сервер и клиент и проверяем скорость.
|
||||
|
||||

|
||||
|
||||
Мы получили среднюю скорость в 1.1 Гбит/с. Что довольно странно, учитывая, что мы используем TCP. Я предполагаю, что дело в том, что в данном тесте мы используем одно L2 пространство, где нет маршрутизирующих устройств, а при режиме UDP OpenVPN по сути просто инкапсулирует SSL/TLS в UDP, отсюда появляется значимый оверхед, который нивелируется в реальном использовании.
|
||||
|
||||
|
||||
### Настройка Wireguard
|
||||
|
||||
1. С помощью `sudo apt install wireguard` установим необходимые пакеты на виртуальные машины
|
||||
|
||||
`ubuntu`:
|
||||
|
||||

|
||||
|
||||
`ubuntu2`:
|
||||
|
||||

|
||||
|
||||
2. С помощью утилиты `wg genkey` сгенерируем на машинах пары приватный-публичный ключ.
|
||||
|
||||

|
||||
|
||||
3. Составим конфиги для машин на основании полученных пар ключей.
|
||||
|
||||

|
||||
|
||||
4. Запустим демонов, которые поднимут указанные интерфейсы и проверим связность по VPN интерфейсам.
|
||||
|
||||

|
||||
|
||||
5. Мы обеспечили связность через VPN. Теперь замерим скорость между машинами с помощью `iperf3`
|
||||
|
||||

|
||||
|
||||
Средняя скорость 7.7 Гбит/с.
|
||||
|
||||
## Выводы
|
||||
|
||||
Итак, мы получили следующие результаты:
|
||||
|
||||
| VPN Protocol | Bitrate |
|
||||
| ----- | ----- |
|
||||
| OpenVPN (UDP) | 850 Mbps |
|
||||
| OpenVPN (TCP) | 1.1 Gbps |
|
||||
| Wireguard | 7.7 Gbps |
|
||||
|
||||
OpenVPN в режиме TCP показал более высокую скорость, но только в рамках стенда, как показывает практика режим UDP является более предпочтительным для обеспечения большей скорости передачи.
|
||||
|
||||
Wireguard обеспечивает значительно более высокую производительность благодаря своей более легковесной архитектуре, использованию более современных алгоритмов шифрования и механизмам оптимизации.
|
||||
|
||||
Wireguard работает поверх протокола UDP, чем и объясняется такая скорость, а легковесная архитектура позволяет максимизировать это преимущество.
|
||||
|
||||
|
||||
|
||||
**Выполнил:** Харитонов Марат Русланович, студенческий билет М235314.
|
||||
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/01.png
Normal file
|
After Width: | Height: | Size: 189 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/02.png
Normal file
|
After Width: | Height: | Size: 178 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/03.png
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/04.png
Normal file
|
After Width: | Height: | Size: 159 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/05.png
Normal file
|
After Width: | Height: | Size: 174 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/06.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/07.png
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/08.png
Normal file
|
After Width: | Height: | Size: 164 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/09.png
Normal file
|
After Width: | Height: | Size: 180 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/10.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/11.png
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/12.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/13.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/14.png
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/15.png
Normal file
|
After Width: | Height: | Size: 77 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/16.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/17.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/18.png
Normal file
|
After Width: | Height: | Size: 279 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/19.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/20.png
Normal file
|
After Width: | Height: | Size: 181 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/21.png
Normal file
|
After Width: | Height: | Size: 181 KiB |
@@ -0,0 +1,81 @@
|
||||
# Сетевая безопасность. Лабораторная работа №2 (HW)
|
||||
## Ход работы
|
||||
|
||||
1. Установим пакет `knockd` на обе виртуальные машины
|
||||
|
||||

|
||||
|
||||
2. На машине `ubuntu` предварительно настроим `iptables`, разрешив только установленные соединения и SSH.
|
||||
|
||||

|
||||
|
||||
3. Проверим подключение c машины `ubuntu2`
|
||||
|
||||

|
||||
|
||||
Видим, что подключение отсутствует, при этом SSH сессия до машины не оборвалась, делаем вывод, что правила `iptables` настроены верно.
|
||||
|
||||
4. После настройки пакетного фильтра необходимо инициализировать службу knockd. Для этого в файле /etc/default/knockd изменим следующую опцию и присвоить ей значение “1”:
|
||||
|
||||

|
||||
|
||||
5. Создадим файл, заполненный `one-time sequence`, то есть набором одноразовых последовательностей, которые будут использовать для открытия порта.
|
||||
|
||||

|
||||
|
||||
6. Настроим демон `knockd` так, чтобы он использовал созданный файл для открытия доступа к порту.
|
||||
|
||||
`nano /etc/knockd.conf`
|
||||
|
||||

|
||||
|
||||
7. Сделаем автостарт службы и запустим её
|
||||
|
||||
```
|
||||
systemctl enable knockd.service
|
||||
systemctl start knockd.service
|
||||
```
|
||||
|
||||
8. С помощью `nmap` проверим доступность порта `1194/tcp` на машине `ubuntu`
|
||||
|
||||

|
||||
|
||||
Видим, что `nmap` определяет порт как фильтрующийся.
|
||||
|
||||
9. На машине `ubuntu2` выполним команду `knock` и укажем адрес подключения и последовательность.
|
||||
|
||||

|
||||
|
||||
10. На машине `ubuntu` проверим наполнение `iptables` и содержимое файла `/etc/knockd/openvpn_ots`
|
||||
|
||||

|
||||
|
||||
Видим, что в `iptables` появилось разрешающее правило, а в `/etc/knockd/openvpn_ots` закомментировалась строка с использованной последовательностью.
|
||||
|
||||
11. Проверим подключение `openvpn` с `ubuntu2` к `ubuntu`
|
||||
|
||||

|
||||
|
||||
Видим, что подключение выполнилось успешно.
|
||||
|
||||
12. С помощью `nmap` ещё раз проверим доступность порта `1194/tcp` на машине `ubuntu`
|
||||
|
||||

|
||||
|
||||
Видим, что теперь порт доступен.
|
||||
|
||||
13. Воспользуемся второй последовательностью, и проанализируем лог `tcpdump`
|
||||
|
||||

|
||||
|
||||
Видим, что при использовании `knock` на адрес посылаются пакеты в указанной последовательности, на который целевой адрес не отвечает, но как мы видели ранее, в этот момент сервер делает запись в `iptables`, разрешающее подключение.
|
||||
|
||||

|
||||
|
||||
|
||||
## Выводы
|
||||
|
||||
Port Knocking — это метод усиления защиты путем скрытия открытых портов от несанкционированного доступа с помощью сочетания «стуков» на определенные порты. Метод может обеспечиваться с помощью демона `knockd`, который имеет большое количество параметров, одним из которых является `one-time sequence`, то есть одноразовые последовательсти -- набор "стуков", который может быть использован для открытия портов только один раз.
|
||||
|
||||
|
||||
**Выполнил:** Харитонов Марат Русланович, студенческий билет М235314.
|
||||
|
After Width: | Height: | Size: 203 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 274 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 57 KiB |
52
02-pentest/01-network/03-vpn-dmz-wifi/03-wifi/README.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# Сетевая безопасность. Лабораторная работа №3 (HW)
|
||||
## Ход работы
|
||||
|
||||
1. Установим на нашей точке доступа тип защиты сети на WPA2-PSK.
|
||||
|
||||

|
||||
|
||||
2. С помощью команды `airmon-ng start wlan0` установим интерфейс в режим монитора и проверим работу с помощью `airodump-ng`
|
||||
|
||||

|
||||
|
||||
Мы видим информацию о нашей сети на 12 канале.
|
||||
|
||||
3. Запустим `bettercap` и начнём слушать wifi-соединения.
|
||||
|
||||
`sudo bettercap --iface wlan0mon`
|
||||
|
||||
`wifi.recon on`
|
||||
|
||||

|
||||
|
||||
4. Выполним `wifi.show`, чтобы посмотреть список обнаруженных точек доступа.
|
||||
|
||||

|
||||
|
||||
5. С помощью `wifi.deauth <mac_address_of_AP>` попробуем выполнять отмену аутентификации клиента точки доступа, пока не поймаем полный хендшейк.
|
||||
|
||||

|
||||
|
||||
6. Успешно поймав хендшейк, переведем интерфейс в режим `managed` и сгенерируем wordlist с помощью `crunch`
|
||||
|
||||

|
||||
|
||||
7. Добавим реальный пароль от сети в wordlist и запустим подбор пароля.
|
||||
|
||||

|
||||
|
||||
8. Результат не заставил себя долго ждать.
|
||||
|
||||

|
||||
|
||||
P.S. Позже я решил попробовать использовать для перебора `hashcat`, который может использовать видеокарту для перебора.
|
||||
Задав маску пароля, я пришёл к выводу, что подбор пароля из 8 символов, по маске `?l?l?l?l?d?d?d?d`, где `?l` -- символ в нижнем регистре, а `?d` -- цифра, займёт максимум 40 минут.
|
||||
|
||||

|
||||
|
||||
## Выводы
|
||||
|
||||
Выполненная работа говорит нам о том, что не стоит без опасения относиться к своей Wifi-сети, ведь простой пароль может быть подобран достаточно быстро, поэтому стоит как минимум использовать стойкий пароль, а желательно дополнять это ещё и использованием защитных механизмов.
|
||||
|
||||
|
||||
**Выполнил:** Харитонов Марат Русланович, студенческий билет М235314.
|
||||
BIN
02-pentest/01-network/03-vpn-dmz-wifi/03-wifi/img/01.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/03-wifi/img/02.png
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/03-wifi/img/03.png
Normal file
|
After Width: | Height: | Size: 403 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/03-wifi/img/04.png
Normal file
|
After Width: | Height: | Size: 589 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/03-wifi/img/05.png
Normal file
|
After Width: | Height: | Size: 793 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/03-wifi/img/06.png
Normal file
|
After Width: | Height: | Size: 481 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/03-wifi/img/07.png
Normal file
|
After Width: | Height: | Size: 186 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/03-wifi/img/08.png
Normal file
|
After Width: | Height: | Size: 202 KiB |
BIN
02-pentest/01-network/03-vpn-dmz-wifi/03-wifi/img/09.png
Normal file
|
After Width: | Height: | Size: 79 KiB |