Instalacja i konfiguracja serwera OpenVPN na Debian 12...

Instalacja i konfiguracja serwera OpenVPN na Debian 12

Krok 1: Sprawdzenie konfiguracji sieci

Sprawdź adresy IP dostępnych interfejsów sieciowych:

ip a

Krok 2: Instalacja niezbędnych narzędzi

Zainstaluj net-tools:



apt install net-tools

Zaktualizuj pakiety:

apt update -y

Zainstaluj OpenVPN i Easy-RSA:

apt install openvpn easy-rsa -y

Sprawdź wersję OpenVPN:

openvpn –version

Krok 3: Konfiguracja Easy-RSA

Skopiuj Easy-RSA do katalogu domowego:

cp /usr/share/easy-rsa /home/easy-rsa -r

Przejdź do katalogu Easy-RSA:

cd /home/easy-rsa

Zainicjuj infrastrukturę PKI:

./easyrsa init-pki

Wygeneruj żądanie certyfikatu serwera bez hasła:

./easyrsa gen-req server nopass

Zbuduj CA (Certificate Authority) bez hasła:

./easyrsa build-ca nopass

Skopiuj certyfikat CA do katalogu OpenVPN:

cp /home/easy-rsa/pki/ca.crt /etc/openvpn/

Podpisz żądanie certyfikatu serwera:

./easyrsa sign-req server server

Skopiuj podpisany certyfikat serwera:

cp /home/easy-rsa/pki/issued/server.crt /etc/openvpn

Wygeneruj klucz DH:

./easyrsa gen-dh

Skopiuj klucz DH do katalogu OpenVPN:

cp /home/easy-rsa/pki/dh.pem /etc/openvpn/

Wygeneruj klucz tajny TLS:

openvpn --genkey secret ta.key

Skopiuj klucz CA do OpenVPN:

cp /home/easy-rsa/pki/private/ca.crt /etc/openvpn/

Krok 4: Konfiguracja klienta

Przejdź do katalogu swojego katalogu domwego i utwórz folder tmp:

cd /home/{twój użytkownik}/ 
mkdir -p tmp
chmod 777 /home/{twój użytkownik}/tmp/ -R

Skopiuj certyfikaty i klucze do folderu tymczasowego:

cp /etc/openvpn/ca.crt /home/{twój użytkownik}/tmp
cp /etc/openvpn/ta.key /home/{twój użytkownik}/tmp

Zbuduj certyfikat klienta:

./easyrsa build-client-full <CLIENT_NAME>

Skopiuj certyfikat i klucz klienta:

cp /etc/openvpn/easy-rsa/pki/issued/<CLIENT_NAME>.crt /home/{twój użytkownik}/tmp
cp /etc/openvpn/easy-rsa/pki/private/<CLIENT_NAME>.key /home/{twój użytkownik}/tmp

Skopiuj przykładowy plik konfiguracyjny serwera i dostosuj do swoich potrzeb:

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn -r

Przykładowy plik konfiguracyjny server.conf

Możesz edytować plik usunąć jego zawartość i użyć z przykładu poniżej, dostosowując jego treść do swoich potrzeb.

port 1234 (do zmiany)
proto udp4
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem

# subnet klienta
topology subnet
server 10.0.0.0 255.255.255.0 (możemy zmienić na dowolną będzie to sieć na której działa nasz vpn, maskę zostawiamy)

# Rejestr wirtualnych adresow IP klientow
ifconfig-pool-persist /var/log/openvpn/ipp.txt

# Push routy
push "route 192.168.1.0 255.255.255.0" (route dla twojej sieci)

# wysyła ping co 10s z timeout 120s
keepalive 10 120

# plik z kluczem statycznym
tls-auth ta.key 0

# ustawienie szyfrowania AES z kluczem 256 bit i algorytmem CBC
cipher AES-256-CBC

Krok 5: Konfiguracja usługi OpenVPN

Włącz usługę OpenVPN:

systemctl enable openvpn@service

Uruchom usługę:

systemctl start openvpn@service

Sprawdź status usługi:

systemctl status openvpn@service

Krok 6: Konfiguracja iptables

Zainstaluj iptables i narzędzia do zachowania reguł po restarcie:

apt install -y iptables iptables-persistent netfilter-persistent
systemctl enable netfilter-persistent
netfilter-persistent save

Dodaj reguły iptables:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT  -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport <tu lokalny port UDP ovpn> -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -P INPUT DROP

Dostosuj poniższe reguły do swojej sieci, zamieniając 10.0.0.0/24 i 192.168.1.0/24 (dostosuj do swojej adresacji) na odpowiednie adresy:

iptables -A FORWARD -s 10.0.0.0/24 -d 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -P FORWARD DROP
iptables -t nat  -A POSTROUTING -s 10.7.69.0/24 -d 192.168.1.0/24 -j MASQUERADE
netfilter-persistent save

Pamiętaj, aby po każdej zmianie w iptables zapisać reguły:

netfilter-persistent save