Go to file
KDAW 5224edaae6 add ex1 solution 2024-06-20 20:50:53 +02:00
images add ex1 solution 2024-06-20 20:50:53 +02:00
README.md add ex1 solution 2024-06-20 20:50:42 +02:00

README.md

Tunel OpenVPN do sieci prywatnej

__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

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.

# 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.

# 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.

# 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 01_linux-to-private-network-www-ON.png

Wyłączony OpenVPN

02_linux-to-private-network-OFF.png 03_linux-to-private-network-www-OFF.png

Klient Windows

Włączony OpenVPN

04_windows-to-private-network-ON.png 05_windows-to-private-network-www-ON.png

Wyłączony OpenVPN

06_windows-to-private-network-OFF.png 07_windows-to-private-network-www-OFF.png

Konfiguracja środowiska przebiegła pomyślnie.

Autorzy

  • Kacper Dawidowicz 458009
  • Marcin Kielar 452666