Serwer e24cloud jako bramka VPN

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.

Instalacja i konfiguracja tunelu OpenVPN

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ędnepliki, 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


Konfiguracja tunelu OpenVPN po stronie klienta

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

Dla system Linux na komputerze lokalnym

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.

OpenVPN

Podajemy nazwę połączenia VPN oraz adres IP serwera e24cloud. Następnie przypasowujemy pobrane klucze i certyfikaty do odpowiednich miejsc i klikamy przycisk Advanced.

OpenVPN

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.

OpenVPN

Po zestawieniu połączenia VPN, adresem IP naszego serwera e24cloud wewnątrz bezpiecznego tunelu będzie 10.66.0.1.


Dla system Windows na komputerze lokalnym

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.

OpenVPN

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

OpenVPN

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.

OpenVPN

Po zestawieniu połączenia VPN, adresem IP naszego serwera e24cloud wewnątrz bezpiecznego tunelu będzie 10.66.0.1.


Uruchamiamy usługę sshd jedynie na interfejsie tunelu OpenVPN (opcjonalnie)

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.