images | ||
README.md |
Tunel OpenVPN do sieci prywatnej
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.
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:
- 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.
- Klient Linux:
- Przeniesienie utworzonych ca, crt, key oraz tc z serwera na klienta,
- Konfiguracja klienta Linux,
- Sprawdzenie połączenia.
- Klient Windows:
- Przeniesienie utworzonych ca, crt, key oraz tc z serwera na klienta,
- Konfiguracja klienta Windows,
- Sprawdzenie połączenia.
- 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
Wyłączony OpenVPN
Klient Windows
Włączony OpenVPN
Wyłączony OpenVPN
Konfiguracja środowiska przebiegła pomyślnie.
Autorzy
- Kacper Dawidowicz 458009
- Marcin Kielar 452666