Spis Treści
Dzięki tunelowi OpenVPN możliwe będzie ustanawianie bezpiecznych, szyfrowanych połączeń między Twoim lokalnym urządzeniem a serwerem e24cloud - za sprawą tunelu VPN, będzie możliwe wykorzystanie Twojego serwera jako wyjściowej bramki internetowej.
Lokalny komputer –> VPN –> Serwer e24cloud –> Internet
Przedstawione poniżej czynności należy wykonać z poziomu konta administracyjnego maszyny. Potrzebny będzie także program PuTTy.
W pierwszej kolejności należy dokonać aktualizacji indeksów bazy APT. Po jej aktualizacji przystępujemy do instalacji pakietu OpenVPN.
apt-get update
apt-get -y install openvpn
Następnie kopiujemy niezbędne pliki, które posłużą do generowania kluczy i certyfikatów oraz importujemy tzw. zmienne środowiskowe
.
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
cd easy-rsa/
. vars
Ustalamy długość klucza, która może przyjąć wartości: 1024, 2048, 4096 bitów. Generalnie im dłuższy klucz, tym większy poziom bezpieczeństwa obarczony kosztem mniejszej wydajności.
export KEY_SIZE="2048"
Ustalamy ważność klucza (w dniach) - po wygaśnięciu kluczy trzeba będzie wygenerować nowe.
export KEY_EXPIRE="1000"
export CA_EXPIRE="1000"
Ustalamy wartości dla pozostałych atrybutów.
export KEY_CITY="MojeMiasto"
export KEY_COUNTRY="PL"
export KEY_ORG="MojaFirmaLubOrganizacja"
export KEY_OU="NazwaDzialuLubJednostkiOrg"
export KEY_EMAIL="mojmail@moja.domena.pl"
export KEY_CN="tunel-vpn-ca"
export KEY_PROVINCE="MojeWojewodztwo"
export KEY_NAME="tunel-vpn-ca-key"
Tworzymy tzw. klucz urzędu certyfikacji CA oraz generujemy klucz Diffiego-Hellmana:
./clean-all
./build-ca
./build-dh
Następnie zatwierdzamy lub zmieniamy proponowane wartości dla danych atrybutów.
Teraz przystępujemy do generowania klucza serwera. Ten etap polega na utworzeniu klucza serwera oraz następnie klienta.
export KEY_CN="tunel-vpn-server"
export KEY_NAME="tunel-vpn-server-key"
./build-key-server tunel-vpn-server
Podczas generowania klucza będziemy poproszeni o podanie hasła - challenge password
.
Możemy to pole pozostawić puste wciskając przycisk Enter podobnie jak dla następnego atrybutu.
Dalej pojawi się pytanie, czy podpisać nowy certyfikat - naturalnie odpowiadamy Y
i potwierdzamy wykonanie operacji.
W kolejnym kroku generujemy klucz dla klienta czyli dla naszego lokalnego komputera, z którego będziemy się łączyć do serwera e24cloud.
export KEY_CN=”tunel-vpn-client1”
export KEY_NAME="tunel-vpn-client1-key"
./build-key tunel-vpn-client1
Wygenerowane zostały już wszystkie niezbędne klucze dla serwera, ale możemy uzyskać jeszcze większy stopień bezpieczeństwa.
Utworzymy dodatkowy klucz dla mechanizmu tls-auth
, którego głównym zadaniem jest odrzucanie na wczesnym etapie połączeń od nieautoryzowanych klientów.
Dzięki niemu uzyskamy również dodatkową ochronę przed podatnościami typu przepełnienie bufora, występującymi w implementacji protokołu SSL/TLS.
openvpn --genkey --secret ta.key
mv ta.key keys/
Kopiujemy wygenerowane klucze dla usługi OpenVPN do odpowiedniej lokalizacji:
cp keys/ca.crt /etc/openvpn/
cp keys/tunel-vpn-server.crt /etc/openvpn/
cp keys/tunel-vpn-server.key /etc/openvpn/
cp keys/dh2048.pem /etc/openvpn/dh.pem
cp keys/ta.key /etc/openvpn/
Następnie tworzymy konfigurację pliku serwera. Przykładowy plik openvpn.conf może wyglądać jak poniżej.
port 1194
proto udp
dev tun
ca ca.crt
cert tunel-vpn-server.crt
key tunel-vpn-server.key
dh dh.pem
server 10.66.0.0 255.255.255.0
keepalive 10 120
tls-auth ta.key 0
comp-lzo
user nobody
cipher AES-256-CBC
group nogroup
persist-key
persist-tun
log-append openvpn.log
verb 3
mute 10
Plik z konfiguracją powinien znaleźć się w katalogu /etc/openvpn/
.
Do utworzenia pliku z poziomu konsoli maszyny możemy wykorzystać tekstowy edytor np. nano, mcedit.
Uruchamiamy mechanizm translacji adresów, aby serwer e24cloud działał jako bramka do internetu dla klientów połączonych przez VPN.
sed -i "/exit 0/d" /etc/rc.local
echo "/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE" >> /etc/rc.local
echo "exit 0" >> /etc/rc.local
/etc/rc.local
echo "net.ipv4.conf.all.forwarding = 1" >> /etc/sysctl.conf
sysctl -p
Na koniec uruchamiamy usługę VPN.
/etc/init.d/openvpn start
Na naszym serwerze wcześniej utworzyliśmy wszystkie niezbędne klucze i certyfikaty dla połączeń VPN. Teraz pora przenieść te, które są wymagane po stronie klienta oraz stworzyć niezbędną konfigurację.
Z komputera lokalnego logujemy się na nasz serwer przy użyciu narzędzia sftp i pobieramy klucze ca.crt
, ta.key
, tunel-vpn-client1.crt
, tunel-vpn-client1.key
na dysk lokalnego komputera, a następnie za pomocą apletu NetworkManager tworzymy nowe połączenie VPN.
Podajemy nazwę połączenia VPN oraz adres IP serwera e24cloud. Następnie przypasowujemy pobrane klucze i certyfikaty do odpowiednich miejsc i klikamy przycisk Advanced.
W nowym oknie Advanced Options zaznaczamy pozycję Use LZO data compression
.
Kontynuując, klikamy na zakładkę Security i przy pozycji Cipher z rozwijanej listy wybieramy AES-256-CBC
.
Przechodzimy dalej na zakładkę TLS Authentication – tutaj zaznaczamy pole przy Use additional TLS Authorization i wybieramy nasz sekretny plik ta.key
.
Dla Key Direction ustalamy wartość na 1
.
Zatwierdzamy zmiany przyciskiem OK i od teraz możemy przystąpić do połączenia.
Po zestawieniu połączenia VPN, adresem IP naszego serwera e24cloud wewnątrz bezpiecznego tunelu będzie 10.66.0.1
.
Na początek pobieramy OpenVPN dla Windows oraz program WinSCP i dokonujemy ich instalacji.
Uruchamiamy WinSCP. Logujemy się na serwer e24cloud wprowadzając jego adres IP, nazwę użytkownika e24
i jej hasło administracyjne. Dla File protocol wybieramy SFTP
.
Po udanym logowaniu kopiujemy klucze ca.crt
, ta.key
, tunel-vpn-client1.crt
, tunel-vpn-client1.key
na dysk lokalnego komputera – np. do C:\Program Files (x86)\OpenVPN\klucze\
.
Tworzymy plik konfiguracyjny openvpn.ovpn
. Podajemy bezwzględne ścieżki do kluczy i certyfikatów.
client
dev tun
proto udp
remote 178.216.xx.xx #adres IP maszyny e24
tls-auth "C:\\Program Files (x86)\\OpenVPN\\klucze\\ta.key" 1
ca "C:\\Program Files (x86)\\OpenVPN\\klucze\\ca.crt"
cert "C:\\Program Files (x86)\\OpenVPN\\klucze\\tunel-vpn-client1.crt"
key "C:\\Program Files (x86)\\OpenVPN\\klucze\\tunel-vpn-client1.key"
persist-tun
persist-key
ns-cert-type server
cipher AES-256-CBC
comp-lzo
verb 3
keepalive 10 120
Nowo utworzoną konfigurację zapisujemy w katalogu C:\Program Files (x86)\OpenVPN\config\
.
Aby ustanowić połączenie włączamy aplikację OpenVPN GUI (może być konieczne uruchomienie z uprawnieniami administratora), klikamy prawym przyciskiem myszy na ikonę OpenVPN zlokalizowaną na pasku zadań tuż przy ikonach systemowych i z rozwiniętego menu wybieramy Connect.
Po zestawieniu połączenia VPN, adresem IP naszego serwera e24cloud wewnątrz bezpiecznego tunelu będzie 10.66.0.1
.
Aby uzyskać usługę SSH działającą tylko na interfejsie tunelu VPN, musimy zmodyfikować odpowiednio jej konfigurację.
Plik konfiguracyjny znajdziemy w lokalizacji /etc/ssh/sshd_config
.
echo "ListenAddress 10.66.0.1" >> /etc/ssh/sshd_config
Weryfikujemy wprowadzone zmiany poleceniem netstat
.
netstat -tlpn
W wyniku powinniśmy odnaleźć linijkę zawierającą adres IP 10.66.0.1
.
tcp 0 0 10.66.0.1:22 0.0.0.0:* LISTEN 4569/sshd
Od tego momentu nawiązywanie połączeń do serwera przez ssh musi odbywać się do adresu IP 10.66.0.1
.