Jak zestawić połączenie VPN do Atman Cloud korzystając z VPNaaS ?
Poniżej znajduje się krótki i esencjonalny opis, omawiający w jaki sposób możemy zestawić połączenie VPN IPSEC to Atman Cloud.
Założenia oraz wymagania wstępne
- posiadamy już przygotowany
projekt
w Atman Cloud - mamy także działające środowisko z conajmniej jedną
podsiecią
,routerem
oraz przypisanympublicznym statycznym adresem IP
- środowisko po drugiej stronie tunelu VPN także znajdują się za
routerem z publicznym statycznym adresem IP
- zestawiamy połączenie
point-to-point
czylitunnel
mając na celu połączenie zewnętrznej infrastruktury typulegacy
zAtman Cloud
Atman Cloud
Dodatnie polityki IKE
Przechodzimy do zakładki Atman Cloud – Project – Network – VPN
Definiowanie rekomendowanych parametrów polityki IKE
- Encryption algorithm
AES-256
- IKE version
V2
- Perfect Forward Secrecy
GROUP14
Definiowanie rekomendowanych parametrów polityki IPsec
- Encryption algorithm
AES-256
- Perfect Forward Secrecy
GROUP14
Dodanie usługi VPN do istniejącej usługi routera w naszym projekcie
- Musimy posiadać już wcześniej utworzony router
VPN-ROUTER
pod który podpinamy usługę VPNaaS
Usługa prawidłowo pozostaje ze statusem PENDING CREATE
:
Dodanie grupy podsieci po obu stronach tunelu – wewnętrzne oraz wewnętrzne
- Siecią zewnętrzna w tym przykładzie jest
10.12.45.0/24
która znajduje się poza środowiskiem Atman Cloud - Siecią wewnętrzną jest jedna z naszych sieci w projekcie z adresacją
10.110.0.0/24
Dodanie połączenie IPsec
- W naszym przypadku
peer gateway
czyli środowisko z drugiej strony tunela VPN jest terminowane na adresie85.194.242.33
- Definiujemy
identyfikator
potrzebny do zestawienia połączenia pomiędzy oboma środowiskami – jest to zmienna tekstowaatman
- Podajemu
statyczne
hasło-kluczPre-Shared Key PSK
służace do bezpiecznego zestawienia połączenia, poobu
stronach
- definiejemy zachowanie się tunelu w momencie jego zerwania – decycydując się na
RESTART
automatyczny
Jest to komplet kroków konieczny do wykonania po stronie Atman Cloud.
Linux Ubuntu 18.04
W naszym scenariuszu drugą końcówką, używaną do zestawienia połączenia VPN IPsec będzie system Linux Ubuntu 18.04
.
Aktualizacja systemu
$ sudo apt-get update
$ sudo apt-get upgrade
Instalacja klienta IPsec
$ sudo apt-get install strongswan
Konfiguracja klienta IPsec
$ sudo nano /etc/ipsec.conf
# ipsec.conf - strongSwan IPsec configuration file
# Atman Cloud configuration
config setup
conn atman
authby=psk
auto=route
closeaction=restart
dpdaction=clear
esp=aes256-sha1-modp2048!
fragmentation=yes
ike=aes256-sha1-modp2048!
keyexchange=ikev2
type=tunnel
left=85.194.242.33
leftid=atman
leftsourceip=85.194.242.33
leftsubnet=10.12.45.0/24
right=185.2.112.35
rightsubnet=10.110.0.0/24
Konfiguracja `uogólniona` parametrów uwierzytelniania
- zaleca się zamiast
%any
podanie precyzyjne końcówek tunely z użyciem pełnej nazwyFQDN
np.vpn.firma.pl
orazvpn.atmancloud.firma.pl
$ sudo nano /etc/ipsec.secrets
# This file holds shared secrets or RSA private keys for authentication.
# RSA private key for this host, authenticating it to any other host
# which knows the public part.
%any %any : PSK "put-here-your very-secret-aes-psk-passphrase"
Automatyczne uruchominie usług IPsec po starcie
$ sudo systemctl enable strongswan
Ustawienie parametrów sieci
Upewniamy się czy poniżej wybrane
zmienne są odpowiednio ustawione, pozostałe zmienne zostawiamy bez zmian
.
$ sudo nano /etc/ufw/sysctl.conf
# Uncomment this to allow this host to route packets between interfaces
net/ipv4/ip_forward=1
# Do not send ICMP redirects (we are not a router)
# Add the following lines
net/ipv4/conf/all/send_redirects=0
net/ipv4/ip_no_pmtu_disc=1
a następnie wprowadzamu zmany w życie:
$ sudo ufw disable
Firewall stopped and disabled on system startup
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
$
Ponowne uruchomienie usługi i weryfikacja statusu
$ sudo service strongswan restart
$ sudo service strongswan status
● strongswan.service - strongSwan IPsec IKEv1/IKEv2 daemon using ipsec.conf
Loaded: loaded (/lib/systemd/system/strongswan.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-04-01 19:16:01 CEST; 9s ago
Main PID: 11808 (starter)
Tasks: 18 (limit: 4915)
CGroup: /system.slice/strongswan.service
├─11808 /usr/lib/ipsec/starter --daemon charon --nofork
└─11833 /usr/lib/ipsec/charon
Apr 01 19:16:01 eco charon[11833]: 00[LIB] dropped capabilities, running as uid 0, gid 0
Apr 01 19:16:01 eco charon[11833]: 00[JOB] spawning 16 worker threads
Apr 01 19:16:01 eco ipsec[11808]: charon (11833) started after 20 ms
Apr 01 19:16:01 eco ipsec_starter[11808]: charon (11833) started after 20 ms
Apr 01 19:16:01 eco charon[11833]: 05[CFG] received stroke: add connection 'atman'
Apr 01 19:16:01 eco charon[11833]: 05[CFG] added configuration 'atman'
Apr 01 19:16:01 eco charon[11833]: 06[CFG] received stroke: route 'atman'
Apr 01 19:16:01 eco ipsec[11808]: 'atman' routed
Apr 01 19:16:01 eco ipsec_starter[11808]: 'atman' routed
Apr 01 19:16:01 eco ipsec_starter[11808]:
$ sudo ipsec up atman
establishing CHILD_SA atman{6}
generating CREATE_CHILD_SA request 5 [ SA No KE TSi TSr ]
sending packet: from 85.194.242.33[4500] to 185.2.112.35[4500] (476 bytes)
received packet: from 185.2.112.35[4500] to 85.194.242.33[4500] (476 bytes)
parsed CREATE_CHILD_SA response 5 [ SA No KE TSi TSr ]
CHILD_SA atman{6} established with SPIs cf651888_i cf2f3317_o and TS 10.12.45.0/24 === 10.110.0.0/24
connection 'atman' established successfully
$
Weryfikacja statusu połączenia VPN IPsec
Atman Cloud
Weryfikacji statusu połączenia możemy dokonać w panelu Horizon
– jak poniżej:
Linux Ubuntu 18.04
W celu sprawdzenia statusu połączenie, korzystamy z linii poleceń jak poniżej:
$ sudo ipsec statusall
Status of IKE charon daemon (strongSwan 5.6.2, Linux 4.15.0-46-generic, x86_64):
uptime: 46 minutes, since Apr 01 20:00:59 2019
malloc: sbrk 2703360, mmap 0, used 744816, free 1958544
worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 7
loaded plugins: charon aes rc2 sha2 sha1 md4 md5 mgf1 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp agent xcbc hmac gcm attr kernel-netlink resolve socket-default connmark stroke updown eap-mschapv2 xauth-generic counters
Listening IP addresses:
85.194.242.33
192.168.122.1
10.12.45.1
Connections:
atman: 85.194.242.33...185.2.112.35 IKEv2, dpddelay=30s
atman: local: [atman] uses pre-shared key authentication
atman: remote: [185.2.112.35] uses pre-shared key authentication
atman: child: 10.12.45.0/24 === 10.110.0.0/24 TUNNEL, dpdaction=clear
Routed Connections:
atman{1}: ROUTED, TUNNEL, reqid 1
atman{1}: 10.12.45.0/24 === 10.110.0.0/24
Security Associations (1 up, 0 connecting):
atman[2]: ESTABLISHED 110 seconds ago, 85.194.242.33[atman]...185.2.112.35[185.2.112.35]
atman[2]: IKEv2 SPIs: ad744fe2eefa08ed_i* 59943869d47292cd_r, pre-shared key reauthentication in 43 minutes
atman[2]: IKE proposal: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_2048
atman{5}: INSTALLED, TUNNEL, reqid 1, ESP SPIs: cd1990b7_i c7fccfab_o
atman{5}: AES_CBC_256/HMAC_SHA1_96/MODP_2048, 0 bytes_i, 0 bytes_o, rekeying in 44 minutes
atman{5}: 10.12.45.0/24 === 10.110.0.0/24
atman{6}: INSTALLED, TUNNEL, reqid 1, ESP SPIs: cf651888_i cf2f3317_o
atman{6}: AES_CBC_256/HMAC_SHA1_96/MODP_2048, 0 bytes_i, 0 bytes_o, rekeying in 45 minutes
atman{6}: 10.12.45.0/24 === 10.110.0.0/24
$