Compare commits
2 Commits
10ad49476f
...
4db4c0d57a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4db4c0d57a | ||
|
|
cc2a2b4187 |
44
pentest/01-network/02-scanner/04-iptables/README.md
Normal file
@@ -0,0 +1,44 @@
|
||||
# Сканирование сетей. Лабораторная работа №4 (HW)
|
||||
|
||||
## Ход работы
|
||||
|
||||
1. Заблокируем порт `21/tcp` на машине `ubuntu` с помощью iptables по политике REJECT.
|
||||
```bash
|
||||
sudo iptables -A INPUT -p tcp --dport 21 -j REJECT
|
||||
```
|
||||

|
||||
|
||||
2. Просканируем заблокированный в пункте 1 порт типами сканирования TCP SYN Scan, TCP Connect Scan, UDP Scan, TCP FIN Scan, TCP NULL Scan, TCP Xmas Scan и TCP ACK Scan.
|
||||
|
||||
|
||||
```bash
|
||||
nmap 192.168.103.100 -p 21 -sS
|
||||
nmap 192.168.103.100 -p 21 -sT
|
||||
nmap 192.168.103.100 -p 21 -sU
|
||||
nmap 192.168.103.100 -p 21 -sF
|
||||
nmap 192.168.103.100 -p 21 -sN
|
||||
nmap 192.168.103.100 -p 21 -sX
|
||||
nmap 192.168.103.100 -p 21 -sA
|
||||
```
|
||||
|
||||

|
||||
|
||||
В целом результаты довольно ожидаемые, все методы кроме TCP Connect Scan и UDP Scan определили, что порт фильтруется.
|
||||
UDP закрыт, так как на данном порту действительно нет службы, а TCP Connect считается открытым, если открылось соединение.
|
||||
|
||||
3. Заменим политику с `REJECT` на `DROP`
|
||||
`sudo iptables -R INPUT 1 -p tcp --dport 21 -j DROP`
|
||||
|
||||

|
||||
|
||||
4. Повторим п.2
|
||||
|
||||

|
||||
|
||||
Можно заметить, что точность определения открытости портов сильно уменьшилась, связано это с тем, что при политике `DROP` устройство не посылает сообщение о том, что пакет был отброшен, в результате чего сканер не может вынести однозначный вердикт о доступности порта.
|
||||
|
||||
## Выводы
|
||||
|
||||
Мы рассмотрели работу утилиты `nmap` в случае, когда на целевом хосте применяются правила `iptables` для ограничения доступа к хосту. Можно заметить, что `iptables` это очень легковесный инструмент, который позволяет неплохо защитить устройство от незаметного сканирования, в следствие чего его стоит использовать, если нет возможности защищать устройство с помощью межсетевых экранов и/или IPS.
|
||||
|
||||
**Выполнил:** Харитонов Марат Русланович, студенческий билет М235314.
|
||||
BIN
pentest/01-network/02-scanner/04-iptables/img/image01.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
pentest/01-network/02-scanner/04-iptables/img/image02.png
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
pentest/01-network/02-scanner/04-iptables/img/image03.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
pentest/01-network/02-scanner/04-iptables/img/image04.png
Normal file
|
After Width: | Height: | Size: 121 KiB |
234
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
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/01.png
Normal file
|
After Width: | Height: | Size: 189 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/02.png
Normal file
|
After Width: | Height: | Size: 178 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/03.png
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/04.png
Normal file
|
After Width: | Height: | Size: 159 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/05.png
Normal file
|
After Width: | Height: | Size: 174 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/06.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/07.png
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/08.png
Normal file
|
After Width: | Height: | Size: 164 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/09.png
Normal file
|
After Width: | Height: | Size: 180 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/10.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/11.png
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/12.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/13.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/14.png
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/15.png
Normal file
|
After Width: | Height: | Size: 77 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/16.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/17.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/18.png
Normal file
|
After Width: | Height: | Size: 279 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/19.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/20.png
Normal file
|
After Width: | Height: | Size: 181 KiB |
BIN
pentest/01-network/03-vpn-dmz-wifi/01-vpn/img/21.png
Normal file
|
After Width: | Height: | Size: 181 KiB |