add ex1 solution

This commit is contained in:
KDAW 2024-06-20 20:50:42 +02:00
commit b54f600482
21 changed files with 271 additions and 0 deletions

271
README.md Normal file
View File

@ -0,0 +1,271 @@
# Tunel OpenVPN do sieci prywatnej
![__diagram00.png](images/__diagram00.png)
Zadanie polega na konfiguracji OpenVPN, aby umożliwić klientom (Linux i Windows, 10.10.30.0/24) dostęp do zasobów obecnych w sieci prywatnej (10.10.40.0/24).
## Środowisko testowe
Do realizacji zadania utworzono zwirtualizowane środowisko testowe przedstawione na poniższym schemacie. Składa się ono z dwóch klientów (Windows oraz Linux), serwera OpenVPN oraz serwera WWW, na którym działa Apache2.
![__diagram01.png](images/__diagram01.png)
| Usługa | IP | Podsieć | OS |
| -------------- | --------------------------- | ----------------------------- | -------------------- |
| Serwer WWW | 10.10.40.141 | 10.10.40.0/24 | Ubuntu 24.04 Server LTS |
| Serwer OpenVPN | 10.10.30.140 - 10.10.40.141 | 10.10.30.0/24 - 10.10.40.0/24 | Ubuntu 24.04 Server LTS |
| Klient Windows | 10.10.30.130 | 10.10.30.0/24 | Windows 10 |
| Klient Linux | 10.10.30.131 | 10.10.30.0/24 | Ubuntu 24.04 Desktop LTS|
## Wykonane kroki
Po utworzeniu środowiska należało je odpowiednio skonfigurować. Poniżej wypisano główne kroki, które wykonano:
1. Server OpenVPN:
* Sprawdzenie połączenia między serwerami i klientami,
* Zainstalowanie OpenVPN,
* Zainstalowanie easy-rsa,
* Zainicjowanie PKI, utworzenie certyfikatów i kluczy dla serwera i klientów.
2. Klient Linux:
* Przeniesienie utworzonych ca, crt, key oraz tc z serwera na klienta,
* Konfiguracja klienta Linux,
* Sprawdzenie połączenia.
3. Klient Windows:
* Przeniesienie utworzonych ca, crt, key oraz tc z serwera na klienta,
* Konfiguracja klienta Windows,
* Sprawdzenie połączenia.
4. Ostateczne testy:
* Sprawdzenie połączenia (z klientów do serwerów),
* Pomyślne wyświetlenie strony skonfigurowanej na serwerze WWW.
### Komendy wykonane na serwerze OpenVPN
Poniżej zebrano wszystkie komendy wykorzystane podczas konfiguracji serwera OpenVPN.
```bash
# ping serwera WWW
ping 10.10.40.141
# curl strony WWW
curl http://10.10.40.141
# ping klienta Windows
ping 10.10.30.130
# ping klienta Linux
ping 10.10.30.131
# instalacja OpenVPN
sudo apt install openssl openvpn ca-certificates easy-rsa
# instalacja easy-rsa
mkdir /etc/openvpn/server/easy-rsa/
easy_rsa_url='https://github.com/OpenVPN/easy-rsa/releases/download/v3.2.0/EasyRSA-3.2.0.tgz'
wget -qO- "$easy_rsa_url" 2>/dev/null | tar xz -C /etc/openvpn/server/easy-rsa/ --strip-components 1
# zmiana uprawnień plików
chown -R root:root /etc/openvpn/server/easy-rsa/
# inicjalizacja PKI
cd /etc/openvpn/server/easy-rsa/
./easyrsa init-pki
# utworzenie potrzebnych katalogów
mkdir server lnx_client win_client
mkdir lnx_client
mkdir win_client
# zbudowanie CA
./easyrsa --batch build-ca nopass
# zbudowanie cert i key serwera
EASYRSA_CERT_EXPIRE=3650 ./easyrsa build-server-full server nopass
# utworzenie crl
EASYRSA_CRL_DAYS=3650 ./easyrsa gen-crl
# utworzenie dh
openssl dhparam -out pki/dh.pem 2048
# utworzenie tc
openvpn --genkey --secret pki/tc.key
# skopiowanie wszystkich potrzebnych plików do katalogu serwera
cp pki/ca.crt pki/private/ca.key pki/private/server.key pki/issued/server.crt pki/dh.pem pki/crl.pem pki/tc.key server/
# zbudowanie cert i key klienta Linux
EASYRSA_CERT_EXPIRE=3650 ./easyrsa build-client-full lnx_client01
# skopiowanie wszystkich potrzebnych plików do katalogu klienta Linux
cp pki/ca.crt pki/private/lnx_client01.key pki/tc.key pki/issued/lnx_client01.crt lnx_client/
# zbudowanie cert i key klienta Windows
EASYRSA_CERT_EXPIRE=3650 ./easyrsa build-client-full win_client01
# skopiowanie wszystkich potrzebnych plików do katalogu klienta Windows
cp pki/ca.crt pki/tc.key pki/issued/win_client01.crt pki/private/win_client01.key win_client/
# dodanie plików do archiwum tar
tar -cvf lnx_client.tar lnx_client/
zip win_client.zip win_client/*
# przeniesienie plików serwera
cp server/* ../
# umożliwienie przekierowywania IP
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-openvpn-forward.conf
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl --system
# utworzenie pliku konfiguracyjnego serwera
vim server.conf
# zawartość pliku server.conf
local 10.10.30.140
port 443
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-crypt tc.key
crl-verify crl.pem
auth SHA512
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
route 10.10.40.0 255.255.255.0
push "route 10.10.40.0 255.255.255.0"
push "redirect-gateway def1"
keepalive 10 120
cipher AES-256-GCM
user nobody
group nogroup
persist-key
persist-tun
verb 3
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
# uruchomienie usługi OpenVPN
systemctl enable openvpn-server@server.service
systemctl start openvpn-server@server.serivce
# dodanie reguły IPTABLES (opcjonalne)
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 10.10.40.0/24 -j MASQUERADE
```
### Komendy wykonane na kliencie Linux
Poniżej zebrano wszystkie komendy wykorzystane podczas konfiguracji klienta Linux.
```bash
# pobranie utworzonych plików z serwera
scp ovpnadm@10.10.30.140:/etc/openvpn/server/easy-rsa/lnx_client.tar /tmp
# wypakowanie plików
tar --strip-components 1 -xvf /tmp/lnx_client.tar -C /etc/openvpn/client/
ls -l /etc/openvpn/client/
# utworzenie pliku konfiguracyjnego klienta
vim /etc/openvpn/client/client.conf
# zawartość pliku client.conf
client
dev tun
proto tcp
remote 10.10.30.140 443
ca /etc/openvpn/client/ca.crt
cert /etc/openvpn/client/lnx_client01.crt
key /etc/openvpn/client/lnx_client01.key
tls-crypt /etc/openvpn/client/tc.key
askpass
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-GCM
ignore-unknown-option block-outside-dns
block-outside-dns
verb 3
ls /etc/openvpn/client/
# uruchomienie usługi OpenVPN
systemctl disable openvpn.service
systemctl enable openvpn@client.service
# modyfikacja pliku usługi
vim /usr/lib/systemd/system/openvpn@client.service
# zmieniono poniższą część
--config /etc/openvpn/%i.conf
# na taką jak poniżej
--config /etc/openvpn/client/%i.conf
# uruchomienie usługi
systemctl start openvpn@client.service
# utworzenie nowej usługi związanej ze zmodyfikowanym plikiem konfiguracyjnym
systemctl enable openvpn@client.service
# przeładowanie zmian
systemctl daemon-reload
```
### Komendy wykonane na kliencie Windows
Poniżej zebrano wszystkie komendy wykorzystane podczas konfiguracji klienta Windows.
```bash
# pobranie utworzonych plików z serwera
scp ovpnadm@10.10.30.140:/etc/openvpn/server/easy-rsa/win_client.zip C:\Users\windows\Desktop
# zawartość client.ovpn
client
dev tun
proto tcp
remote 10.10.30.140 443
ca ca.crt
cert win_client01.crt
key win_client01.key
tls-crypt tc.key
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
#auth SHA512
cipher AES-256-GCM
ignore-unknown-option block-outside-dns
block-outside-dns
verb 3
```
### Zrzuty ekranu z wykonanych testów
Poniżej przedstawiono zrzuty ekranów z wykonanych testów po zakończeniu konfiguracji środowiska. Przetestowano połączenie pomiędzy klientami a serwerami, zarówno z włączonym OpenVPN i wyłączonym.
#### Klient Linux
##### Włączony OpenVPN
![00_linux-to-private-network-ON.png](images/00_linux-to-private-network-ON.png)
![01_linux-to-private-network-www-ON.png](images/01_linux-to-private-network-www-ON.png)
##### Wyłączony OpenVPN
![02_linux-to-private-network-OFF.png](images/02_linux-to-private-network-OFF.png)
![03_linux-to-private-network-www-OFF.png](images/03_linux-to-private-network-www-OFF.png)
#### Klient Windows
##### Włączony OpenVPN
![04_windows-to-private-network-ON.png](images/04_windows-to-private-network-ON.png)
![05_windows-to-private-network-www-ON.png](images/05_windows-to-private-network-www-ON.png)
##### Wyłączony OpenVPN
![06_windows-to-private-network-OFF.png](images/06_windows-to-private-network-OFF.png)
![07_windows-to-private-network-www-OFF.png](images/07_windows-to-private-network-www-OFF.png)
Konfiguracja środowiska przebiegła pomyślnie.
### Autorzy
* Kacper Dawidowicz 458009
* Marcin Kielar 452666

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
images/__diagram00.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 KiB

View File

BIN
images/__diagram01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 KiB

View File