Acest articol a fost adaptat dintr-o parte a noului meu curs Pluralsight, „Conectarea resurselor locale la infrastructura AWS. ”

Trebuie uneori să vă conectați la resursele pe care le aveți pe Amazon Web Services? Accesarea instanțelor publice EC2 folosind SSH și criptarea datelor dvs. S3 este, din toate punctele de vedere, suficient de sigură. Dar ce zici de a intra într-o instanță de bază de date RDS back-end sau de a lucra cu date bazate pe AWS care nu sunt publice? Există tot felul de motive pentru care administratorii nu păstrează astfel de resurse la îndemâna publicului larg. Dar dacă nu poți ajunge la ei când ai nevoie, la ce bun îți vor face?

Deci, va trebui să găsiți un mod sigur și fiabil în jurul ACL-urilor și al grupurilor de securitate care vă protejează lucrurile. O soluție pe care o acoper cursul meu „Conectarea resurselor on-prem la infrastructura dvs. AWS” pe Pluralsight este Direct Connect. Dar dacă prețul Direct Connect este o reducere a bugetului pentru compania dvs., atunci un fel de tunel VPN ar putea face truc.

Ce este o rețea privată virtuală?

Rețelele private virtuale (VPN) sunt adesea utilizate pentru a permite o activitate de rețea restrânsă sau navigarea anonimă. Dar nu despre asta este vorba în acest articol.

Un VPN este o conexiune punct-la-punct care vă permite să mutați datele în siguranță între două site-uri într-o rețea publică. Efectiv, un tunel poate fi proiectat pentru a combina două site-uri private separate geografic într-o singură rețea privată. În contextul nostru, asta ar însemna să vă conectați rețeaua de birouri locale cu AWS VPC care găzduiește resursele dvs. private.

Există două modalități de a face acest lucru:

  • O conexiune VPN gestionată construită deasupra unui AWS Virtual Private Gateway
  • Folosind propriul VPN.

Acest articol se va concentra pe metoda „faceți-o singur”.

Serverul de acces OpenVPN

Așa cum sugerează și numele, OpenVPN este un proiect open source și puteți oricând să descărcați ediția gratuită a comunității și să configurați lucrurile pe propriul dvs. server VPN. Dar compania OpenVPN oferă și o Server de acces OpenVPN special conceput ca EC2 AMI care iese din cutie cu integrare AWS-friendly și instrumente de configurare automate.

Din ceea ce văd, lansarea AMI în AWS VPC și deschiderea pentru conexiuni controlate de la distanță a devenit în mare parte modalitatea „corectă” de a face această treabă.

Cat costa? Dacă testați doar lucrurile și nu intenționați să accesați VPN folosind mai mult de două conexiuni la un moment dat, atunci AMI în sine este gratuit. Veți fi în continuare legat de costurile obișnuite ale unei instanțe EC2, dar dacă contul dvs. este încă eligibil pentru nivelul gratuit, atunci îl puteți obține gratuit.

Odată ce vă puneți VPN-ul în producție activă, licența pe care o achiziționați va depinde de câte conexiuni simultane veți avea nevoie. Această pagină are detaliile de care aveți nevoie.

Iată ce vom face în acest ghid:

  • Selectați, asigurați și lansați un Ubuntu AMI cu OpenVPN Access Server preinstalat în VPC-ul meu
  • Accesați serverul utilizând SSH și configurați VPN
  • Configurați un utilizator de administrator
  • Configurați o mașină locală ca client OpenVPN și conectați-vă la o instanță privată în AWS VPC-ul meu

Gata?

Lansarea unui server de acces OpenVPN

Din tabloul de bord EC2 – și asigurându-ne că suntem în regiunea AWS potrivită – lansați o instanță care să acționeze ca serverul nostru VPN. În loc să folosesc una dintre AMI-urile de pornire rapidă, voi face clic pe fila AWS Marketplace și voi căuta „server de acces openvpn”. OpenVPN oferă o serie de imagini oficiale care sunt legate de licențe care oferă un număr tot mai mare de clienți conectați.

Voi merge cu această imagine Ubuntu care funcționează printr-un aranjament „Adu-ți propria licență”. Așa cum am scris mai devreme, nu vom avea de fapt nevoie de o licență pentru ceea ce vom face.

Cum puteti utiliza OpenVPN pentru a accesa in siguranta resursele
AMI-uri OpenVPN Access Server disponibile de pe AWS Marketplace

Selectarea AMI deschide un popup care ne spune cât de mult ne va costa această imagine pe oră, folosind diferite tipuri de instanțe și opțiuni de stocare EBS. Cu toate acestea, acestea sunt doar costuri obișnuite ale infrastructurii AWS și nu includ taxele de licență.

1612184051 364 Cum puteti utiliza OpenVPN pentru a accesa in siguranta resursele
Costuri AMI OpenVPN Access Server – facturate direct de AWS

Când vine vorba de tipul de instanță, voi trece la un t2.micro pentru a-l păstra în nivelul liber. Un server de producție ocupat ar putea necesita ceva mai multă energie.

Deoarece vreau să pornesc o a doua instanță în aceeași subrețea în câteva minute, voi selecta, să spunem, „noi-est-1b” din pagina Configurare detalii instanță și voi face o notă pentru mai târziu.

1612184051 990 Cum puteti utiliza OpenVPN pentru a accesa in siguranta resursele
Alegeți o subrețea și notați pentru mai târziu

Acum, pagina Security Group este locul în care strălucesc cu adevărat setările OpenVPN AMI. Ni se prezintă un grup de securitate care deschide tot ce ne trebuie. Portul 22 este destinat traficului SSH către server, 943 este portul pe care îl vom folosi pentru a accesa interfața grafică de administrare, 443 este trafic HTTP criptat TLS și OpenVPN va asculta conexiunile clientului care intră pe portul 1194.

1612184051 594 Cum puteti utiliza OpenVPN pentru a accesa in siguranta resursele
Grupul de securitate care vine cu OpenVPN AMI

Notă: Dacă este practic, în mod normal ar fi o idee bună să strângeți aceste reguli, astfel încât să fie acceptate numai cererile din intervalele de adrese IP valide ale companiei, dar acest lucru va fi bine pentru testarea pe termen scurt.

De aici, voi revizui setările mele, voi confirma că am cheia de criptare SSH listată și apăs pe declanșator.

Odată lansată instanța, mi se vor afișa informații importante de conectare – inclusiv faptul că contul de utilizator pe care îl vom folosi pentru SSH pe server se numește openvpnas – și un ghid de pornire rapidă. De asemenea, voi primi un e-mail care conține linkuri către aceleași informații.

Înapoi în consola de instanțe EC2, în timp ce noua mașină termină de pornire, ni se afișează adresa IP publică. Dacă ar trebui vreodată să repornim instanța, nu există nicio garanție că vom primi din nou același IP, ceea ce ar putea provoca o cantitate rezonabilă de haos. Deci, este o idee bună să atribuiți instanței un IP elastic.

Pentru a face acest lucru, voi face clic pe Elastic IP-uri și apoi Alocare adresă nouă. Rețineți noua adresă și închideți pagina. Acum, cu acea adresă selectată, faceți clic pe Acțiuni și pe „Asociați adresa”. Voi face clic o dată în caseta Instanță și instanța mea OpenVPN – cu eticheta sa utilă – este listată. Trebuie doar să îl selectez, să fac clic pe „Asociați” și am terminat. De acum înainte, acesta va fi IP-ul public permanent pentru accesarea serverului nostru.

1612184051 213 Cum puteti utiliza OpenVPN pentru a accesa in siguranta resursele
Asociați noua adresă IP Elastic cu instanța dvs.

Accesarea serverului

Voi lipi adresa IP publică în terminal ca parte a comenzii mele SSH care apelează perechea de chei pe care am setat-o ​​pentru această instanță.

ssh -i KeyPairName.pem openvpnas@<PublicIPAddress>

Dacă accesați o mașină Windows sau MacOS, lucrurile ar putea funcționa puțin diferit, dar documentația vă va oferi tot ajutorul de care aveți nevoie.

Cu toate acestea, înainte de a părăsi consola Instances, voi îndeplini o funcție importantă. Cu instanța OpenVPN selectată, voi face clic pe Acțiuni, apoi pe Rețea și apoi pe „Schimbare verificare sursă / dest.”. Mă voi asigura că verificarea este dezactivată. Nimic mare nu va fi posibil decât dacă fac asta.

Acum, la sesiunea mea SSH. De îndată ce începe, mă confrunt cu acordul de licență OpenVPN EULA și apoi cu expertul de configurare. Dacă trebuie să modificați o setare mai târziu, puteți rula oricând vrăjitorul folosind această comandă:

sudo ovpn-init — ec2.

Majoritatea valorilor implicite ale vrăjitorului vor funcționa bine, dar merită să explicați rapid ce se întâmplă. Iată întrebările și câteva comentarii despre culoare acolo unde este necesar:

primary Access Server node? yes [You’d answer no if you were setting up a backup or failover node.]
specify the network interface and IP address to be used by the Admin Web UI [1 — For all interfaces; can be changed to static later.]
specify the port number for the Admin Web UI [default]
specify the TCP port number for the OpenVPN Daemon [default]
Should client traffic be routed by default through the VPN? [no--That’s   not the kind of VPN we’re building here. What we’re doing is only about getting remote clients safely and securely into our VPC. The same applies to client DNS traffic.]
Should client DNS traffic be routed by default through the VPN? [no] 
Use local authentication via internal DB? [no — can be useful, but we’ll use Linux/AWS authentication for simplicity.]
Should private subnets be accessible to clients by default? [yes — that’s the whole point of the VPN, after all.]
login to the Admin UI as “openvpn”? [yes]
Provide OpenVPN Access Server license key [Unnecessary for testing.]

Când vrăjitorul se termină, mi se arată câteva informații despre conexiune și vă sfătuiesc să instalați demonul de timp de rețea NTP. Acest lucru nu va fi necesar în această cutie Ubuntu, deoarece este deja instalat și rulează implicit.

După cum am menționat anterior, va trebui să dau utilizatorului openvpn o parolă, astfel încât să o pot folosi pentru a mă conecta la interfața web. Fac asta ca sudo cu comanda passwd.

sudo passwd openvpn

Asta este tot ce avem nevoie de partea serverului. Acum voi folosi un browser pentru a mă conecta la GUI-ul web. Folosesc adresa IP publică a serverului nostru cu prefixul securizat https, urmat de slash și admin.

https://<PublicIPAddress>/admin

Veți primi un avertisment „Conexiunea dvs. nu este privată”, deoarece folosim un certificat autosemnat, mai degrabă decât unul furnizat de o autoritate de certificare.

1612184052 601 Cum puteti utiliza OpenVPN pentru a accesa in siguranta resursele
Acest lucru este normal atunci când se utilizează certificate de auto-semnare

Aceasta nu este o problemă pentru noi, deoarece expunem VPN-ul nostru doar pentru a selecta utilizatori din cadrul companiei noastre și aceștia ar trebui să poată avea încredere în certificatul nostru. Deci, voi face clic pe avertisment, mă voi conecta și voi fi de acord cu EULA.

Simțiți-vă liber să petreceți ceva timp explorând caracteristicile oferite de consola de administrare OpenVPN pe cont propriu.

1612184052 244 Cum puteti utiliza OpenVPN pentru a accesa in siguranta resursele
Consola de administrare OpenVPN

Configurarea unui client VPN

Cu toate acestea, chiar acum, voi deschide pagina UI a clientului folosind adresa de acces web pe care ni s-a arătat înainte, dar de data aceasta fără administratorul bară. Acesta nu este altceva decât un ecran de autentificare în care vă puteți autentifica utilizând același utilizator openvpn ca înainte. (Puteți oricând să creați utilizatori noi în consola de administrare.)

În spatele ecranului de conectare, există doar acest set de legături cu instrucțiuni pentru instalarea aplicației client OpenVPN pe oricare dintre aceste platforme. Cu toate acestea, veriga finală se numește „Însuți”.

1612184052 247 Cum puteti utiliza OpenVPN pentru a accesa in siguranta resursele
Pagina clientului OpenVPN

Dacă faceți clic pe acesta, veți fi solicitat să descărcați și să salvați un fișier numit client.ovpn. Acest fișier conține setările de configurare pentru a se potrivi cu serverul și cheile reale pe care le vom folosi pentru autentificare. Cu siguranță doriți să tratați acest fișier cu grijă, astfel încât să nu cadă pe mâini greșite. Asta ar include să nu o trimiteți prin e-mail simplu prin conexiuni necriptate.

Voi deschide fișierul local și voi copia conținutul. Apoi, într-un shell dintr-o mașină virtuală Linux care rulează în rețeaua mea locală, voi crea un fișier nou numit client.ovpn și voi lipi conținutul. Dacă ați făcut clic pe linkul „OpenVPN pentru Linux” din interfața de utilizare a clientului mai devreme, ați fi văzut că singurul pas suplimentar necesar a fost instalarea OpenVPN folosind managerul de pachete Apt – sau Yum dacă sunteți pe o mașină CentOS sau Red Hat. Ei bine, asta va lua o singură comandă. Când își va face treaba, vom fi cu toții pregătiți.

nano client.ovpnsudo apt updatesudo apt install openvpn

Apoi vom deschide conexiunea VPN. Ca root – folosind sudo – voi tasta openvpn cu steagul de configurare care indică fișierul de configurare client.ovpn pe care tocmai l-am creat.

sudo openvpn — config client.ovpn

Când vi se solicită autentificarea, utilizați contul openvpn împreună cu parola pe care ați creat-o pentru acesta înapoi pe server.

Acum voi deschide o a doua sesiune de shell pe clientul meu local, astfel încât să pot încerca să accesez serverul OpenVPN folosind serverul său local Adresa IP – ceva care ar fi imposibil fără o conexiune VPN funcțională.

În primul rând, rulați ip a pentru a lista toate interfețele de rețea active pe această mașină.

ip a

Pe lângă rețeaua dvs. locală, ar trebui să vedeți și unul numit tun0. Această interfață a fost creată de OpenVPN și se va încadra de obicei în intervalul 172.16.xx.

Voi intra în serverul de la distanță folosind cheia mea privată – care, desigur, trebuie să existe local – și cea a serverului privat Adresa IP. Dacă funcționează, veți avea un VPN!

ssh -i KeyPairName.pem openvpnas@<PrivateIPAddress>

În cele din urmă, voi demonstra că VPN-ul, așa cum este configurat în prezent, ne va permite accesul la alte resurse private din cadrul VPC-ului nostru Amazon. Acest lucru ar putea fi util dacă, de exemplu, aveți o instanță de bază de date care rulează în VPC pe care nu o puteți expune rețelei publice.

Voi lansa o instanță standard Ubuntu EC2, dar eu nu va dă-i un IP public. Voi specifica aceeași subrețea us-est-1b pe care am folosit-o pentru serverul OpenVPN pentru a simplifica lucrurile. Grupul de securitate pe care îl voi folosi va permite accesul SSH prin portul 22, dar nimic altceva.

Odată ce rulează, voi nota adresa IP privată și mă voi întoarce la clientul meu local. Odată ce sunt sigură că instanța este complet lansată, voi folosi aceleași chei private, numele de utilizator „ubuntu” – deoarece acesta este implicit pentru instanțele normale Ubuntu EC2 – și adresa privată pe care tocmai am copiat-o.

Din nou. Dacă funcționează, veți avea o conexiune VPN complet configurată în resursele dvs. private AWS. Savurați momentul.

Nu uitați să închideți toate serverele și să eliberați adresa IP Elastic când ați terminat de utilizat. Nu doriți să suportați costuri inutil.

Acest articol a fost adaptat din partea noului meu curs Pluralsight, „Conectarea resurselor locale la infrastructura AWS. ” Sunt multe altele de unde a venit asta la mine Site-ul IT Bootstrap, inclusiv link-uri către cartea mea, Linux în acțiune, și un curs hibrid numit Linux în mișcare este alcătuit din mai mult de două ore de videoclip și aproximativ 40% din textul Linux în acțiune.