add ex1 solution
|
@ -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
|
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 565 KiB |
After Width: | Height: | Size: 681 KiB |