Linux in azione libru

Linux in azione libru Hola, residenti di Khabro! In u libru, David Clinton descrive 12 prughjetti di a vita reale, cumprese l'automatizazione di u vostru sistema di salvezza è di ricuperazione, a creazione di un nuvulu di fugliale persunale in stile Dropbox, è a creazione di u vostru servitore MediaWiki. Esplorarà a virtualizazione, a ricuperazione di disastru, a sicurità, a copia di salvezza, DevOps è a risoluzione di i prublemi di u sistema attraversu studi di casu interessanti. Ogni capitulu finisci cù una rivista di e migliori pratiche, un glossariu di novi termini è esercizii.

Estratto "10.1. Crià un tunnel OpenVPN"

Aghju digià parlatu assai di criptografia in stu libru. SSH è SCP ponu prutege e dati trasferiti nantu à cunnessione remota (Capitulu 3), a criptografia di i fugliali pò prutege e dati mentre hè almacenatu in u servitore (Capitulu 8), è i certificati TLS / SSL ponu prutege e dati trasferiti trà siti è navigatori client (Capitulu 9). . Ma qualchì volta i vostri dati anu da esse prutetti in una gamma più larga di cunnessione. Per esempiu, forse alcuni di i membri di a vostra squadra travaglianu nantu à a strada mentre cunnette à Wi-Fi via hotspots publichi. Di sicuru, ùn deve micca suppone chì tutti questi punti d'accessu sò sicuri, ma a vostra ghjente hà bisognu di un modu per cunnette cù e risorse di a cumpagnia - è hè quì chì una VPN pò aiutà.

Un tunnel VPN cuncepitu currettamente furnisce una cunnessione diretta trà i clienti remoti è u servitore in una manera chì oculta e dati mentre viaghja nantu à una rete insegura. Allora? Avete digià vistu assai strumenti chì ponu fà questu cù criptografia. U veru valore di una VPN hè chì aprendu un tunnel, pudete cunnette e rete remoti cum'è s'elli eranu tutti lucali. In un certu sensu, usate un bypass.

Utilizendu sta rete estesa, l'amministratori ponu fà u so travagliu nantu à i so servitori da ogni locu. Ma più impurtante, una sucità cù risorse sparse in parechje locu pò fà tutti visibili è accessibili à tutti i gruppi chì ne necessitanu, induve sò (Figura 10.1).

U tunnel stessu ùn guarantisci micca a sicurità. Ma unu di i normi di criptografia pò esse inclusu in a struttura di a rete, chì aumenta significativamente u livellu di sicurità. I tunnelli creati cù u pacchettu OpenVPN open source utilizanu a stessa criptografia TLS / SSL chì avete digià lettu. OpenVPN ùn hè micca l'unica opzione di tunneling dispunibule, ma hè unu di i più cunnisciuti. Hè cunsideratu un pocu più veloce è più sicuru ch'è u protokollu alternativu di u tunnel di Layer 2 chì usa l'encryption IPsec.

Vulete chì tutti in a vostra squadra cumunicà in modu sicuru cù l'altri mentre sò in strada o travagliendu in diversi edifici? Per fà questu, avete bisognu di creà un servitore OpenVPN per permette a spartera di l'applicazioni è l'accessu à l'ambiente di a rete locale di u servitore. Per fà questu, tuttu ciò chì duvete fà hè di eseguisce duie macchine virtuali o dui cuntenituri: unu per agisce cum'è u servitore / host è unu per agisce cum'è u cliente. Custruì una VPN ùn hè micca un prucessu simplice, dunque vale a pena piglià uni pochi di minuti per piglià a big picture in mente.

Linux in azione libru

10.1.1. Configurazione di u Server OpenVPN

Prima di principià, vi daraghju qualchi cunsiglii utili. Sè vo avete da fà per voi stessu (è vi cunsigliu assai di fà), probabilmente vi truverete à travaglià cù parechje finestri di terminal aperti nantu à u vostru Desktop, ognunu cunnessu à una macchina diversa. Ci hè un risicu chì in un certu puntu entre u cumandamentu sbagliatu in a finestra. Per evitari questu, pudete aduprà u cumandamentu di u nome d'ospite per cambià u nome di a macchina affissata nantu à a linea di cummanda à qualcosa chì vi dice chjaramente induve site. Una volta chì fate questu, avete bisognu di log out da u servitore è torna in daretu per chì i novi paràmetri entranu in vigore. Questu hè ciò chì pare:

Linux in azione libru
Per seguità stu approcciu è dendu nomi apprupriati à ognuna di e macchine chì travagliate, pudete facilmente tene traccia di induve site.

Dopu avè utilizatu u nome d'ospite, pudete scontri fastidiosi Impossibile di risolve i missaghji Host OpenVPN-Server quandu eseguite cumandamenti successivi. L'aghjurnà u schedariu /etc/hosts cù u novu nome d'ospitu adattatu deve risolve u prublema.

Preparate u vostru servitore per OpenVPN

Per installà OpenVPN in u vostru servitore, avete bisognu di dui pacchetti: openvpn è easy-rsa (per gestisce u prucessu di generazione di chjave di criptografia). L'utilizatori di CentOS duveranu prima installà u repository epel-release se ne necessariu, cum'è avete fattu in Capitulu 2. Per pudè pruvà l'accessu à l'applicazione di u servitore, pudete ancu installà u servitore web Apache (apache2 in Ubuntu è httpd in CentOS).

Mentre configurate u vostru servitore, vi cunsigliu di attivà un firewall chì blucca tutti i porti eccettu 22 (SSH) è 1194 (portu predeterminatu di OpenVPN). Questu esempiu illustra cumu ufw travaglià nantu à Ubuntu, ma sò sicuru chì vi ricordate sempre u prugramma CentOS firewalld da u Capitulu 9:

# ufw enable
# ufw allow 22
# ufw allow 1194

Per attivà u routing internu trà l'interfacce di rete in u servitore, avete bisognu di uncomment una linea (net.ipv4.ip_forward = 1) in u schedariu /etc/sysctl.conf. Questu permetterà à i clienti remoti di esse rediretti cum'è necessariu una volta chì sò cunnessi. Per fà u travagliu di a nova opzione, eseguite sysctl -p:

# nano /etc/sysctl.conf
# sysctl -p

U vostru ambiente di u servitore hè avà cumplettamente cunfiguratu, ma ci hè ancu una cosa più da fà prima di esse prontu: avete bisognu di cumplettà i seguenti passi (li copreremu in dettagliu dopu).

  1. Crea un inseme di chjavi di criptografia di l'infrastruttura di chjave publica (PKI) in u servitore utilizendu i script forniti cù u pacchettu easy-rsa. Essenzialmente, u servitore OpenVPN agisce ancu cum'è a so propria autorità di certificazione (CA).
  2. Preparate e chjave adattate per u cliente
  3. Configurate u schedariu server.conf per u servitore
  4. Configurate u vostru cliente OpenVPN
  5. Verificate u vostru VPN

Generazione di chjave di criptografia

Per mantene e cose simplici, pudete cunfigurà a vostra infrastruttura chjave in a stessa macchina induve u servitore OpenVPN hè in esecuzione. Tuttavia, e migliori pratiche di sicurità suggerenu tipicamente di utilizà un servitore CA separatu per implementazioni di produzzione. U prucessu di generazione è distribuzione di risorse chjave di criptografia per l'usu in OpenVPN hè illustratu in Fig. 10.2.

Linux in azione libru
Quandu avete installatu OpenVPN, u cartulare /etc/openvpn/ hè statu creatu automaticamente, ma ùn ci hè nunda in questu. I pacchetti openvpn è easy-rsa venenu cù schedarii di mudelli di esempiu chì pudete aduprà cum'è basa per a vostra cunfigurazione. Per inizià u prucessu di certificazione, copiate u cartulare di mudelli easy-rsa da /usr/share/ à /etc/openvpn è cambiate à u repertoriu easy-rsa/:

# cp -r /usr/share/easy-rsa/ /etc/openvpn
$ cd /etc/openvpn/easy-rsa

U repertoriu easy-rsa cuntene avà uni pochi di script. In tavula 10.1 liste l'arnesi chì avete aduprà per creà e chjave.

Linux in azione libru

L'operazioni di sopra necessitanu privilegi di root, cusì avete bisognu di diventà root via sudo su.

U primu schedariu cù quale travaglià hè chjamatu vars è cuntene e variabili di l'ambienti chì easy-rsa usa quandu genera chjave. Avete bisognu di edità u schedariu per utilizà i vostri propri valori invece di i valori predeterminati chì sò digià quì. Questu hè ciò chì u mo schedariu serà cum'è (Listing 10.1).

Lista 10.1. Frammenti principali di u schedariu /etc/openvpn/easy-rsa/vars

export KEY_COUNTRY="CA"
export KEY_PROVINCE="ON"
export KEY_CITY="Toronto"
export KEY_ORG="Bootstrap IT"
export KEY_EMAIL="[email protected]"
export KEY_OU="IT"

Eseguisce u schedariu vars passà i so valori à l'ambiente di shell, induve saranu inclusi in u cuntenutu di e vostre novi chjave. Perchè u cumandamentu sudo ùn funziona micca per sè stessu? Perchè in u primu passu avemu editatu u script chjamatu vars è poi appricà. Applicà è significa chì u schedariu vars passa i so valori à l'ambienti di shell, induve seranu inclusi in u cuntenutu di e vostre novi chjave.

Assicuratevi di ripiglià u schedariu cù una nova cunchiglia per compie u prucessu micca finitu. Quandu questu hè fattu, u script vi invitarà à eseguisce un altru script, clean-all, per sguassà qualsiasi cuntenutu in u cartulare /etc/openvpn/easy-rsa/keys/:

Linux in azione libru
Naturalmente, u prossimu passu hè di eseguisce u script clean-all, seguitu da build-ca, chì usa l'script pkitool per creà u certificatu root. Vi sarà dumandatu di cunfirmà i paràmetri d'identità furniti da vars:

# ./clean-all
# ./build-ca
Generating a 2048 bit RSA private key

Dopu vene u script build-key-server. Siccomu usa u listessu script pkitool cù un novu certificatu radicali, vi vede e stesse dumande per cunfirmà a creazione di u paru chjave. I chjavi seranu chjamati basatu annantu à l'argumenti chì passate, chì, salvu chì ùn site micca eseguite parechje VPN nantu à sta macchina, sò generalmente servitori, cum'è in l'esempiu:

# ./build-key-server server
[...]
Certificate is to be certified until Aug 15 23:52:34 2027 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

OpenVPN usa i paràmetri generati da l'algoritmu Diffie-Hellman (aduprendu build-dh) per negozià l'autentificazione per e novi cunnessione. U schedariu creatu quì ùn deve esse secretu, ma deve esse generatu cù u script build-dh per e chjave RSA chì sò attualmente attive. Se create novi chjave RSA in u futuru, avete ancu bisognu di aghjurnà u schedariu Diffie-Hellman:

# ./build-dh

I vostri chjavi di u servitore finiranu avà in u cartulare /etc/openvpn/easy-rsa/keys/, ma OpenVPN ùn sapi micca questu. Per automaticamente, OpenVPN cercherà e chjave in /etc/openvpn/, cusì copiate:

# cp /etc/openvpn/easy-rsa/keys/server* /etc/openvpn
# cp /etc/openvpn/easy-rsa/keys/dh2048.pem /etc/openvpn
# cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn

Preparazione di e Chjavi di Criptazione di Clienti

Comu avete digià vistu, a criptografia TLS usa coppie di chjavi currispondenti: una stallata nantu à u servitore è una stallata nantu à u cliente remoto. Questu significa chì avete bisognu di e chjave di u cliente. U nostru vechju amicu pkitool hè esattamente ciò chì avete bisognu per questu. In questu esempiu, quandu eseguimu u prugramma in u cartulare /etc/openvpn/easy-rsa/, passemu l'argumentu di u cliente per generà schedarii chjamati client.crt è client.key:

# ./pkitool client

I dui schedarii di u cliente, inseme cù u schedariu ca.crt originale chì hè sempre in u repertoriu chjave /, deve esse trasferitu in modu sicuru à u vostru cliente. A causa di a so pruprietà è i diritti d'accessu, questu pò esse micca cusì faciule. L'approcciu più simplice hè di copià manualmente u cuntenutu di u schedariu fonte (è nunda, ma quellu cuntenutu) in un terminal chì curreghja nantu à u desktop di u vostru PC (selezziunà u testu, cliccate right-click è selezziunate Copia da u menù). Allora incollà questu in un novu schedariu cù u listessu nome chì avete creatu in un secondu terminal cunnessu à u vostru cliente.

Ma qualcunu pò taglià è incollà. Invece, pensate cum'è un amministratore perchè ùn avete micca sempre accessu à a GUI induve l'operazioni cut/paste sò pussibuli. Copia i fugliali in u cartulare di casa di u vostru utilizatore (per chì l'operazione scp remota pò accede à elli), è dopu aduprà chown per cambià a pruprietà di i schedari da a root à un usu normale non-root in modu chì l'azzione scp remota pò esse realizatu. Assicuratevi chì tutti i vostri schedari sò attualmente installati è accessibili. Li moverete à u cliente un pocu dopu:

# cp /etc/openvpn/easy-rsa/keys/client.key /home/ubuntu/
# cp /etc/openvpn/easy-rsa/keys/ca.crt /home/ubuntu/
# cp /etc/openvpn/easy-rsa/keys/client.crt /home/ubuntu/
# chown ubuntu:ubuntu /home/ubuntu/client.key
# chown ubuntu:ubuntu /home/ubuntu/client.crt
# chown ubuntu:ubuntu /home/ubuntu/ca.crt

Cù un inseme cumpletu di chjavi di criptografia pronti per andà, avete bisognu di dì à u servitore cumu vulete creà a VPN. Questu hè fattu cù u schedariu server.conf.

Reduce u numeru di keystrokes

Ci hè troppu scrive? L'espansione cù parentesi aiuterà à riduce questi sei cumandamenti à dui. Sò sicuru chì pudete studià sti dui esempii è capisce ciò chì succede. A più impurtante, puderà capisce cumu applicà questi principii à l'operazioni chì implicanu decine o ancu centinaie di elementi:

# cp /etc/openvpn/easy-rsa/keys/{ca.crt,client.{key,crt}} /home/ubuntu/
# chown ubuntu:ubuntu /home/ubuntu/{ca.crt,client.{key,crt}}

Configurazione di u schedariu server.conf

Cumu pudete sapè ciò chì u schedariu server.conf deve esse cum'è? Ricurdativi di u mudellu di repertoriu easy-rsa chì avete copiatu da /usr/share/? Quandu avete installatu OpenVPN, avete lasciatu un schedariu di mudellu di cunfigurazione cumpressu chì pudete copià in /etc/openvpn/. Bastaraghju nantu à u fattu chì u mudellu hè archiviatu è vi presentà un strumentu utile: zcat.

Sapete digià di stampà u cuntenutu di testu di un schedariu à u screnu cù u cumandimu cat, ma chì se u schedariu hè cumpressu cù gzip? Pudete sempre scumpressà u schedariu è poi u gattu sarà felice di produttu, ma questu hè unu o dui passi più di ciò chì hè necessariu. Invece, cum'è avete capitu, pudete emette u cumandamentu zcat per carricà u testu unpacked in memoria in un passu. In l'esempiu seguitu, invece di stampà u testu à u screnu, u redirezzione à un novu schedariu chjamatu server.conf:

# zcat 
  /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz 
  > /etc/openvpn/server.conf
$ cd /etc/openvpn

Lasciemu da parte a documentazione larga è utile chì vene cù u schedariu è vede ciò chì pò esse cum'è quandu avete finitu di edità. Nota chì u puntu e virgola (;) dice à OpenVPN di ùn leghje o eseguisce a linea dopu (Lista 10.2).

Linux in azione libru
Andemu per alcuni di sti paràmetri.

  • Per automaticamente, OpenVPN corre nantu à u portu 1194. Pudete cambià questu, per esempiu, per ammuccià più e vostre attività o evità cunflitti cù altri tunnel attivi. Siccomu 1194 richiede una coordinazione minima cù i clienti, hè megliu per fà cusì.
  • OpenVPN usa sia u protocolu di cuntrollu di trasmissione (TCP) sia u protocolu di datagramma d'utilizatore (UDP) per trasmette dati. TCP pò esse un pocu più lento, ma hè più affidabile è più prubabile di esse capitu da l'applicazioni chì currenu in i dui estremità di u tunnel.
  • Pudete specificà dev tun quandu vulete creà un tunnel IP più simplice è efficiente chì porta cuntenutu di dati è nunda di più. Se, invece, avete bisognu di cunnette parechje interfacce di rete (è e rete chì rapprisentanu), creendu un ponte Ethernet, avete da sceglie dev tap. Se ùn avete micca capitu ciò chì significa tuttu questu, utilizate l'argumentu tun.
  • I seguenti quattru linii dà OpenVPN i nomi di i trè schedarii di autentificazione in u servitore è u schedariu d'opzioni dh2048 chì avete creatu prima.
  • A linea di u servitore stabilisce a gamma è a maschera di subnet chì serà aduprata per assignà l'indirizzi IP à i clienti à u login.
  • U paràmetru push optional "route 10.0.3.0 255.255.255.0" permette à i clienti remoti di accede à i subnet privati ​​​​dettru u servitore. Per fà stu travagliu hè ancu bisognu di stallà a reta in u servitore stessu per chì a subnet privata cunnosci a subnet OpenVPN (10.8.0.0).
  • A linea di port-share localhost 80 permette di ridirezzione di u trafficu di u cliente chì vene nantu à u portu 1194 à un servitore web locale chì ascolta nantu à u portu 80. (Questu serà utile si avete aduprà u servitore web per pruvà a vostra VPN). dopu quandu u protocolu tcp hè sceltu.
  • L'utilizatori nimu è u gruppu nogruppu e linee deve esse attivate sguassendu i punti e virgola (;). Forzà i clienti remoti à eseguisce cum'è nimu è nimu assicura chì e sessioni nantu à u servitore ùn sò micca privilegiati.
  • logu specifica chì e voci di log attuali sovrascriveranu e vechji entrate ogni volta chì OpenVPN hè iniziatu, mentri log-append aghjunghje novi voci à u schedariu di log esistenti. U schedariu openvpn.log stessu hè scrittu à u cartulare /etc/openvpn/.

Inoltre, un valore di u cliente à u cliente hè spessu aghjuntu à u schedariu di cunfigurazione per chì parechji clienti ponu vede l'altri in più di u servitore OpenVPN. Sè site cuntentu di a vostra cunfigurazione, pudete inizià u servitore OpenVPN:

# systemctl start openvpn

A causa di a natura cambiante di a relazione trà OpenVPN è systemd, a sintassi seguente pò esse necessaria per inizià un serviziu: systemctl start openvpn@server.

Eseguisce l'ip addr per elencà l'interfacce di rete di u vostru servitore avà avà da pruduce un ligame à una nova interfaccia chjamata tun0. OpenVPN hà da creà per serve i clienti entranti:

$ ip addr
[...]
4: tun0: mtu 1500 qdisc [...]
      link/none
      inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
          valid_lft forever preferred_lft forever

Pudete bisognu di riavvià u servitore prima chì tuttu cumencia à travaglià cumplettamente. A prossima tappa hè l'urdinatore cliente.

10.1.2. Configurazione di u cliente OpenVPN

Tradizionalmente, i tuneli sò custruiti cù almenu duie uscite (altrimenti li chjameremu grotte). Un OpenVPN cunfiguratu bè nantu à u servitore dirige u trafficu in è fora di u tunnel da un latu. Ma avete ancu bisognu di qualchì software chì curreghja nantu à u latu di u cliente, vale à dì à l'altru finale di u tunnel.

In questa sezione, aghju da fucalizza nantu à a creazione manuale di qualchì tipu di computer Linux per agisce cum'è un cliente OpenVPN. Ma questu ùn hè micca l'unicu modu in quale sta opportunità hè dispunibule. OpenVPN supporta l'applicazioni cliente chì ponu esse installate è aduprate in desktop è laptops chì funzionanu Windows o macOS, è ancu smartphones è tablette Android è iOS. Vede openvpn.net per i dettagli.

U pacchettu OpenVPN duverà esse stallatu nantu à a macchina cliente cum'è hè stata installata nantu à u servitore, ancu s'ellu ùn ci hè micca bisognu di easy-rsa quì, postu chì e chjavi chì site aduprate esistenu digià. Avete bisognu di cupià u schedariu di mudellu client.conf à u cartulare /etc/openvpn/ chì avete appena creatu. Questa volta u schedariu ùn serà micca zippatu, cusì u cumandamentu cp regulare farà u travagliu bè:

# apt install openvpn
# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf 
  /etc/openvpn/

A maiò parte di i paràmetri in u vostru schedariu client.conf seranu abbastanza auto-spiegativi: duveranu currisponde à i valori nantu à u servitore. Comu pudete vede da u seguente schedariu di esempiu, u paràmetru unicu hè remota 192.168.1.23 1194, chì dice à u cliente l'indirizzu IP di u servitore. In novu, assicuratevi chì questu hè u vostru indirizzu di u servitore. Duvete ancu furzà l'urdinatore di u cliente per verificà l'autenticità di u certificatu di u servitore per prevene un eventuale attaccu man-in-the-middle. Una manera di fà questu hè di aghjunghje a linea remote-cert-tls server (Listing 10.3).

Linux in azione libru
Pudete avà andà in u cartulare /etc/openvpn/ è estrae e chjave di certificazione da u servitore. Sustituisce l'indirizzu IP di u servitore o u nome di duminiu in l'esempiu cù i vostri valori:

Linux in azione libru
Nunda eccitante prubabilmente succederà finu à chì eseguite OpenVPN nantu à u cliente. Siccomu avete bisognu di passà un paru di argumenti, fate da a linea di cumanda. L'argumentu --tls-client dice à OpenVPN chì vi agisce cum'è cliente è cunnette via criptografia TLS, è --config indica u vostru schedariu di cunfigurazione:

# openvpn --tls-client --config /etc/openvpn/client.conf

Leghjite l'output di cumanda cù cura per assicurà chì site cunnessu currettamente. Se qualcosa va sbagliatu a prima volta, pò esse dovutu à una mancanza di cunfigurazione trà u servitore è i schedarii di cunfigurazione di u cliente o un prublema di cunnessione di rete / firewall. Eccu alcuni cunsiglii per risolve i prublemi.

  • Leghjite cù cura l'output di l'operazione OpenVPN nantu à u cliente. Spessu cuntene cunsiglii preziosi nantu à ciò chì esattamente ùn si pò fà è perchè.
  • Verificate i missaghji d'errore in i schedari openvpn.log è openvpn-status.log in u cartulare /etc/openvpn/ in u servitore.
  • Verificate i logs di u sistema nantu à u servitore è u cliente per i missaghji legati à OpenVPN è timed. (journalctl -ce mostrarà e voci più recenti.)
  • Assicuratevi di avè una cunnessione di rete attiva trà u servitore è u cliente (più nantu à questu in Capitulu 14).

Doppu l'autore

David Clinton - amministratore di sistema, maestru è scrittore. Hà amministratu, scrittu annantu, è creatu materiali educativi per parechje discipline tecniche impurtanti, cumpresi i sistemi Linux, l'informatica in nuvola (in particulare AWS) è e tecnulugia di cuntenituri cum'è Docker. Hà scrittu u libru Learn Amazon Web Services in a Month of Lunches (Manning, 2017). Parechji di i so corsi di furmazione video ponu esse truvati in Pluralsight.com, è i ligami à i so altri libri (nantu à l'amministrazione Linux è a virtualizazione di u servitore) sò dispunibili à bootstrap-it.com.

» Più dettagli nantu à u libru si trovanu à situ web di l'editore
» Indice di cuntenutu
» Strattu

Per Khabrozhiteley 25% di scontu cù coupon - Linux
Dopu u pagamentu di a versione carta di u libru, un libru elettronicu serà mandatu per e-mail.

Source: www.habr.com

Add a comment