Linux in Action գիրք

Linux in Action գիրք Ողջույն Խաբրո բնակիչներ։ Գրքում Դեյվիդ Քլինթոնը նկարագրում է 12 իրական նախագծեր, այդ թվում՝ ավտոմատացնել ձեր պահուստավորման և վերականգնման համակարգը, ստեղծել Dropbox ոճի անձնական ֆայլերի ամպ և ստեղծել ձեր սեփական MediaWiki սերվերը: Հետաքրքիր դեպքերի ուսումնասիրության միջոցով դուք կուսումնասիրեք վիրտուալացումը, աղետից վերականգնումը, անվտանգությունը, պահուստավորումը, DevOps-ը և համակարգի անսարքությունները: Յուրաքանչյուր գլուխ ավարտվում է լավագույն փորձի վերանայմամբ, նոր տերմինների բառարանով և վարժություններով:

Հատված «10.1. OpenVPN թունելի ստեղծում»

Այս գրքում ես արդեն շատ եմ խոսել կոդավորման մասին: SSH-ը և SCP-ն կարող են պաշտպանել հեռավոր միացումների միջոցով փոխանցված տվյալները (Գլուխ 3), ֆայլերի գաղտնագրումը կարող է պաշտպանել տվյալները, երբ դրանք պահվում են սերվերում (Գլուխ 8), իսկ TLS/SSL վկայագրերը կարող են պաշտպանել կայքերի և հաճախորդի բրաուզերների միջև փոխանցված տվյալները (Գլուխ 9) . Բայց երբեմն ձեր տվյալները պետք է պաշտպանված լինեն կապերի ավելի լայն շրջանակում: Օրինակ, գուցե ձեր թիմի անդամներից ոմանք աշխատում են ճանապարհին, երբ միանում են Wi-Fi-ին հանրային թեժ կետերի միջոցով: Դուք հաստատ չպետք է ենթադրեք, որ բոլոր մուտքի կետերն ապահով են, բայց ձեր մարդկանց անհրաժեշտ է ընկերության ռեսուրսներին միանալու միջոց, և դա այն է, որտեղ VPN-ը կարող է օգնել:

Պատշաճ ձևավորված VPN թունելը ուղիղ կապ է ապահովում հեռավոր հաճախորդների և սերվերի միջև այնպես, որ թաքցնում է տվյալները, երբ այն անցնում է անապահով ցանցով: Եւ ինչ? Դուք արդեն տեսել եք բազմաթիվ գործիքներ, որոնք կարող են դա անել գաղտնագրման միջոցով: VPN-ի իրական արժեքն այն է, որ թունել բացելով՝ դուք կարող եք միացնել հեռավոր ցանցերը այնպես, կարծես դրանք բոլորը տեղային են: Ինչ-որ իմաստով դուք օգտագործում եք շրջանցիկ:

Օգտագործելով այս ընդլայնված ցանցը, ադմինիստրատորները կարող են իրենց աշխատանքը կատարել իրենց սերվերների վրա ցանկացած վայրից: Բայց ավելի կարևոր է, որ մի քանի վայրերում տարածված ռեսուրսներ ունեցող ընկերությունը կարող է դրանք բոլորը տեսանելի և հասանելի դարձնել բոլոր խմբերի համար, որոնք ունեն դրանց կարիքը, որտեղ էլ որ նրանք լինեն (Նկար 10.1):

Թունելը ինքնին չի երաշխավորում անվտանգությունը։ Սակայն գաղտնագրման ստանդարտներից մեկը կարող է ներառվել ցանցի կառուցվածքում, ինչը զգալիորեն բարձրացնում է անվտանգության մակարդակը։ Բաց կոդով OpenVPN փաթեթի միջոցով ստեղծված թունելներն օգտագործում են նույն TLS/SSL կոդավորումը, որի մասին արդեն կարդացել եք: OpenVPN-ը թունելավորման միակ հասանելի տարբերակը չէ, բայց այն ամենահայտնիներից մեկն է. Համարվում է, որ այն մի փոքր ավելի արագ և անվտանգ է, քան այլընտրանքային շերտ 2 թունելի արձանագրությունը, որն օգտագործում է IPsec կոդավորումը:

Ցանկանու՞մ եք, որ ձեր թիմի բոլոր անդամները ապահով շփվեն միմյանց հետ ճանապարհի վրա կամ տարբեր շենքերում աշխատելիս: Դա անելու համար դուք պետք է ստեղծեք OpenVPN սերվեր, որը թույլ կտա հավելվածների փոխանակումը և մուտք գործել սերվերի տեղական ցանցային միջավայր: Որպեսզի դա աշխատի, ընդամենը պետք է գործարկել երկու վիրտուալ մեքենա կամ երկու կոնտեյներ՝ մեկը որպես սերվեր/հոսթ և մեկը՝ որպես հաճախորդ: VPN-ի կառուցումը պարզ գործընթաց չէ, ուստի, հավանաբար, արժե մի քանի րոպե հատկացնել մեծ պատկերը մտքում տեսնելու համար:

Linux in Action գիրք

10.1.1. OpenVPN սերվերի կազմաձևում

Նախքան սկսելը, ես ձեզ մի քանի օգտակար խորհուրդ կտամ: Եթե ​​դուք պատրաստվում եք դա անել ինքներդ (և ես խստորեն խորհուրդ եմ տալիս դա անել), հավանաբար կհայտնվեք, որ աշխատում եք ձեր աշխատասեղանի վրա բացված մի քանի տերմինալային պատուհաններով, որոնցից յուրաքանչյուրը միացված է մեկ այլ մեքենայի: Վտանգ կա, որ ինչ-որ պահի դուք սխալ հրաման կմտցնեք պատուհանում: Սրանից խուսափելու համար կարող եք օգտագործել hostname հրամանը՝ հրամանի տողում ցուցադրվող մեքենայի անունը փոխելու մի բանի, որը հստակ ցույց է տալիս, թե որտեղ եք գտնվում: Դա անելուց հետո դուք պետք է դուրս գաք սերվերից և նորից մուտք գործեք, որպեսզի նոր կարգավորումներն ուժի մեջ մտնեն: Ահա թե ինչ տեսք ունի.

Linux in Action գիրք
Հետևելով այս մոտեցմանը և համապատասխան անուններ տալով այն մեքենաներին, որոնց հետ աշխատում եք, դուք հեշտությամբ կարող եք հետևել ձեր գտնվելու վայրին:

Հյուրընկալողի անունը օգտագործելուց հետո հաջորդ հրամանները կատարելիս կարող եք հանդիպել «Անհնար է լուծել Host OpenVPN-Server» հաղորդագրությունները: /etc/hosts ֆայլը համապատասխան նոր հոսթի անունով թարմացնելը պետք է լուծի խնդիրը:

Պատրաստում ենք ձեր սերվերը OpenVPN-ի համար

OpenVPN-ը ձեր սերվերում տեղադրելու համար ձեզ հարկավոր է երկու փաթեթ՝ openvpn և easy-rsa (գաղտնագրման բանալիների ստեղծման գործընթացը կառավարելու համար): CentOS-ի օգտվողները պետք է նախ տեղադրեն epel-release շտեմարանը, եթե դա անհրաժեշտ է, ինչպես դա արեցիք Գլուխ 2-ում: Որպեսզի կարողանաք ստուգել մուտքը սերվերի հավելված, կարող եք նաև տեղադրել Apache վեբ սերվերը (apache2-ը Ubuntu-ում և httpd-ը՝ CentOS-ում):

Մինչ դուք կարգավորում եք ձեր սերվերը, ես խորհուրդ եմ տալիս ակտիվացնել firewall-ը, որն արգելափակում է բոլոր նավահանգիստները, բացառությամբ 22-ի (SSH) և 1194-ի (OpenVPN-ի լռելյայն նավահանգիստ): Այս օրինակը ցույց է տալիս, թե ինչպես կաշխատի ufw-ն Ubuntu-ում, բայց ես վստահ եմ, որ դուք դեռ հիշում եք CentOS firewalld ծրագիրը 9-րդ գլխից.

# ufw enable
# ufw allow 22
# ufw allow 1194

Սերվերի վրա ցանցային ինտերֆեյսների միջև ներքին երթուղին միացնելու համար անհրաժեշտ է մեկ տող (net.ipv4.ip_forward = 1) հանել /etc/sysctl.conf ֆայլում: Սա թույլ կտա հեռավոր հաճախորդներին վերահղել ըստ անհրաժեշտության, երբ դրանք միացված են: Նոր տարբերակը գործարկելու համար գործարկեք sysctl -p:

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

Ձեր սերվերի միջավայրն այժմ ամբողջությամբ կազմաձևված է, բայց դեռևս մեկ բան կա անելու մինչև պատրաստ լինելը. դուք պետք է կատարեք հետևյալ քայլերը (մենք դրանք մանրամասն կանդրադառնանք հաջորդիվ):

  1. Ստեղծեք հանրային բանալիների ենթակառուցվածքի (PKI) գաղտնագրման ստեղների մի շարք սերվերի վրա՝ օգտագործելով easy-rsa փաթեթի հետ տրամադրվող սկրիպտները: Ըստ էության, OpenVPN սերվերը նաև գործում է որպես իր սեփական վկայականի մարմին (CA).
  2. Պատրաստեք համապատասխան բանալիներ հաճախորդի համար
  3. Կազմաձևեք server.conf ֆայլը սերվերի համար
  4. Կարգավորեք ձեր OpenVPN հաճախորդը
  5. Ստուգեք ձեր VPN-ը

Գաղտնագրման բանալիների ստեղծում

Ամեն ինչ պարզ պահելու համար դուք կարող եք կարգավորել ձեր հիմնական ենթակառուցվածքը նույն մեքենայի վրա, որտեղ աշխատում է OpenVPN սերվերը. Այնուամենայնիվ, անվտանգության լավագույն փորձը սովորաբար առաջարկում է օգտագործել առանձին CA սերվեր արտադրական տեղակայման համար: OpenVPN-ում օգտագործման համար կոդավորման բանալիների ռեսուրսների ստեղծման և բաշխման գործընթացը պատկերված է Նկ. 10.2.

Linux in Action գիրք
Երբ դուք տեղադրեցիք OpenVPN-ը, /etc/openvpn/ գրացուցակը ինքնաբերաբար ստեղծվեց, բայց դրա մեջ դեռ ոչինչ չկա։ Openvpn և easy-rsa փաթեթները գալիս են օրինակելի ձևանմուշ ֆայլերով, որոնք կարող եք օգտագործել որպես ձեր կազմաձևման հիմք: Հավաստագրման գործընթացը սկսելու համար պատճենեք easy-rsa ձևանմուշների գրացուցակը /usr/share/-ից դեպի /etc/openvpn և փոխեք easy-rsa/ գրացուցակը.

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

Easy-rsa գրացուցակը այժմ պարունակում է բավականին շատ սցենարներ: Աղյուսակում 10.1-ում թվարկված են այն գործիքները, որոնք դուք կօգտագործեք բանալիներ ստեղծելու համար:

Linux in Action գիրք

Վերոնշյալ գործողությունները պահանջում են արմատային արտոնություններ, այնպես որ դուք պետք է դառնաք արմատ sudo su-ի միջոցով:

Առաջին ֆայլը, որի հետ դուք աշխատելու եք, կոչվում է vars և պարունակում է շրջակա միջավայրի փոփոխականներ, որոնք easy-rsa-ն օգտագործում է բանալիներ ստեղծելիս: Դուք պետք է խմբագրեք ֆայլը, որպեսզի օգտագործեք ձեր սեփական արժեքները՝ արդեն իսկ առկա լռելյայն արժեքների փոխարեն: Ահա թե ինչ տեսք կունենա իմ ֆայլը (Ցուցակ 10.1):

Ցուցակ 10.1. Ֆայլի հիմնական դրվագները /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"

Vars ֆայլի գործարկումը դրա արժեքները կփոխանցի shell միջավայրին, որտեղ դրանք կներառվեն ձեր նոր բանալիների բովանդակության մեջ: Ինչու՞ sudo հրամանն ինքնին չի աշխատում: Քանի որ առաջին քայլում մենք խմբագրում ենք vars անունով սկրիպտը և այնուհետև կիրառում այն։ Կիրառում և նշանակում է, որ vars ֆայլն իր արժեքները փոխանցում է shell միջավայրին, որտեղ դրանք կներառվեն ձեր նոր բանալիների բովանդակության մեջ:

Համոզվեք, որ նորից գործարկեք ֆայլը՝ օգտագործելով նոր վահանակ՝ անավարտ գործընթացը ավարտելու համար: Երբ դա արվի, սկրիպտը կհուշի ձեզ գործարկել մեկ այլ սկրիպտ՝ clean-all, հեռացնելու ցանկացած բովանդակություն /etc/openvpn/easy-rsa/keys/ գրացուցակից:

Linux in Action գիրք
Բնականաբար, հաջորդ քայլը clean-all script-ի գործարկումն է, որին հաջորդում է build-ca-ն, որն օգտագործում է pkitool սկրիպտը՝ արմատային վկայականը ստեղծելու համար: Ձեզանից կպահանջվի հաստատել vars-ի կողմից տրամադրված ինքնության կարգավորումները.

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

Հաջորդը գալիս է build-key-server սկրիպտը: Քանի որ այն օգտագործում է նույն pkitool սցենարը նոր արմատային վկայագրի հետ մեկտեղ, դուք կտեսնեք նույն հարցերը՝ բանալիների զույգի ստեղծումը հաստատելու համար: Բանալիները կանվանվեն՝ հիմնվելով ձեր փոխանցած արգումենտների վրա, որոնք, եթե այս մեքենայի վրա մի քանի VPN չօգտագործեք, սովորաբար կլինեն սերվեր, ինչպես օրինակ.

# ./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-ն օգտագործում է Diffie-Hellman ալգորիթմի կողմից ստեղծված պարամետրերը (օգտագործելով build-dh)՝ նոր կապերի իսկությունը բանակցելու համար: Այստեղ ստեղծված ֆայլը պարտադիր չէ, որ գաղտնի լինի, այլ պետք է ստեղծվի՝ օգտագործելով build-dh script RSA ստեղների համար, որոնք ներկայումս ակտիվ են: Եթե ​​ապագայում ստեղծեք նոր RSA ստեղներ, ապա ձեզ հարկավոր կլինի նաև թարմացնել Diffie-Hellman ֆայլը.

# ./build-dh

Ձեր սերվերի կողային բանալիներն այժմ կհայտնվեն /etc/openvpn/easy-rsa/keys/ գրացուցակում, բայց OpenVPN-ն դա չգիտի: Լռելյայնորեն, OpenVPN-ը կփնտրի բանալիներ /etc/openvpn/-ում, այնպես որ պատճենեք դրանք.

# 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

Հաճախորդի գաղտնագրման բանալիների պատրաստում

Ինչպես արդեն տեսել եք, TLS կոդավորումն օգտագործում է զույգ համընկնող բանալիներ՝ մեկը տեղադրված է սերվերի վրա, մյուսը տեղադրված է հեռավոր հաճախորդի վրա: Սա նշանակում է, որ ձեզ անհրաժեշտ կլինեն հաճախորդի բանալիներ: Մեր հին ընկեր pkitool-ը հենց այն է, ինչ ձեզ հարկավոր է դրա համար: Այս օրինակում, երբ մենք գործարկում ենք ծրագիրը /etc/openvpn/easy-rsa/ գրացուցակում, այն փոխանցում ենք հաճախորդի արգումենտ՝ client.crt և client.key կոչվող ֆայլեր ստեղծելու համար:

# ./pkitool client

Հաճախորդի երկու ֆայլերը, ինչպես նաև սկզբնական ca.crt ֆայլը, որը դեռ գտնվում է բանալիների/գրացուցակում, այժմ պետք է ապահով կերպով փոխանցվեն ձեր հաճախորդին: Նրանց սեփականության և մուտքի իրավունքների շնորհիվ դա կարող է այդքան էլ հեշտ չլինել: Ամենապարզ մոտեցումը սկզբնաղբյուր ֆայլի բովանդակությունը (և ոչ այլ ինչ, բացի այդ բովանդակությունից) ձեռքով պատճենելն է ձեր համակարգչի աշխատասեղանի վրա աշխատող տերմինալի մեջ (ընտրեք տեքստը, աջ սեղմեք դրա վրա և ընտրեք Պատճենել ցանկից): Այնուհետև տեղադրեք սա նույն անունով նոր ֆայլի մեջ, որը դուք ստեղծում եք ձեր հաճախորդի հետ կապված երկրորդ տերմինալում:

Բայց յուրաքանչյուրը կարող է կտրել և կպցնել: Փոխարենը, մտածեք ադմինիստրատորի նման, քանի որ դուք միշտ չէ, որ մուտք կունենաք GUI, որտեղ հնարավոր են կտրել/տեղադրել գործողությունները: Պատճենեք ֆայլերը ձեր օգտատիրոջ տնային գրացուցակում (որպեսզի հեռակառավարվող scp գործողությունը կարողանա մուտք գործել դրանք), այնուհետև օգտագործեք chown ֆայլերի սեփականությունը արմատից սովորական ոչ արմատային օգտագործողի փոխելու համար, որպեսզի հնարավոր լինի կատարել հեռավոր scp գործողությունը: Համոզվեք, որ ձեր բոլոր ֆայլերը ներկայումս տեղադրված են և հասանելի: Դուք դրանք կտեղափոխեք հաճախորդին մի փոքր ուշ.

# 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

Գաղտնագրման բանալիների ամբողջական փաթեթով, որը պատրաստ է գործարկման, դուք պետք է սերվերին ասեք, թե ինչպես եք ցանկանում ստեղծել VPN: Սա արվում է server.conf ֆայլի միջոցով:

Ստեղների սեղմումների քանակի կրճատում

Շա՞տ է մուտքագրումը: Փակագծերով ընդլայնումը կօգնի նվազեցնել այս վեց հրամանները երկուսի: Համոզված եմ, որ դուք կարող եք ուսումնասիրել այս երկու օրինակները և հասկանալ, թե ինչ է կատարվում: Ավելի կարևոր է, որ դուք կկարողանաք հասկանալ, թե ինչպես կիրառել այս սկզբունքները տասնյակ կամ նույնիսկ հարյուրավոր տարրեր պարունակող գործողություններում.

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

Server.conf ֆայլի կարգավորում

Ինչպե՞ս կարող եք իմանալ, թե ինչպիսին պետք է լինի server.conf ֆայլը: Հիշո՞ւմ եք easy-rsa գրացուցակի ձևանմուշը, որը պատճենել եք /usr/share/-ից: Երբ դուք տեղադրեցիք OpenVPN-ը, ձեզ մնաց սեղմված կազմաձևման կաղապարի ֆայլ, որը կարող եք պատճենել /etc/openvpn/-ում: Ես հիմնվելու եմ այն ​​փաստի վրա, որ կաղապարը արխիվացված է և ձեզ կներկայացնեմ մի օգտակար գործիք՝ zcat:

Դուք արդեն գիտեք cat հրամանի միջոցով ֆայլի տեքստային բովանդակությունը էկրանին տպելու մասին, բայց ինչ անել, եթե ֆայլը սեղմվի gzip-ի միջոցով: Դուք միշտ կարող եք unzip ֆայլը, և այնուհետև cat-ը ուրախությամբ կթողարկի այն, բայց դա մեկ կամ երկու քայլ ավելի է, քան անհրաժեշտ է: Փոխարենը, ինչպես կարող էիք կռահել, դուք կարող եք թողարկել zcat հրամանը՝ չփաթեթավորված տեքստը հիշողության մեջ մեկ քայլով բեռնելու համար: Հետևյալ օրինակում, տեքստը էկրանին տպելու փոխարեն, այն կվերահղեք դեպի նոր ֆայլ, որը կոչվում է server.conf:

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

Եկեք մի կողմ դնենք լայնածավալ և օգտակար փաստաթղթերը, որոնք գալիս են ֆայլի հետ և տեսնենք, թե ինչպիսի տեսք կունենա այն, երբ ավարտեք խմբագրումը: Նկատի ունեցեք, որ ստորակետը (;) ասում է OpenVPN-ին չկարդալ կամ չգործարկել հաջորդ տողը (Ցուցակ 10.2):

Linux in Action գիրք
Եկեք անցնենք այս կարգավորումներից մի քանիսին:

  • Լռելյայնորեն, OpenVPN-ն աշխատում է 1194 նավահանգստի վրա: Դուք կարող եք փոխել սա, օրինակ՝ ձեր գործունեությունը հետագայում թաքցնելու կամ այլ ակտիվ թունելների հետ կոնֆլիկտներից խուսափելու համար: Քանի որ 1194-ը պահանջում է նվազագույն համակարգում հաճախորդների հետ, լավագույնն է դա անել այսպես:
  • OpenVPN-ն օգտագործում է փոխանցման վերահսկման արձանագրությունը (TCP) կամ Օգտագործողի տվյալների գծապատկերի արձանագրությունը (UDP)՝ տվյալների փոխանցման համար: TCP-ն կարող է մի փոքր ավելի դանդաղ լինել, բայց այն ավելի հուսալի է և ավելի հավանական է հասկանալի թունելի երկու ծայրերում աշխատող հավելվածների կողմից:
  • Դուք կարող եք նշել dev tun, երբ ցանկանում եք ստեղծել ավելի պարզ, ավելի արդյունավետ IP թունել, որը կրում է տվյալների բովանդակություն և ուրիշ ոչինչ: Եթե, մյուս կողմից, դուք պետք է միացնեք բազմաթիվ ցանցային ինտերֆեյսներ (և ցանցերը, որոնք նրանք ներկայացնում են)՝ ստեղծելով Ethernet կամուրջ, դուք պետք է ընտրեք «dev tap»: Եթե ​​դուք չեք հասկանում, թե ինչ է նշանակում այս ամենը, օգտագործեք tun փաստարկը:
  • Հաջորդ չորս տողերը OpenVPN-ին տալիս են սերվերի երեք նույնականացման ֆայլերի և ավելի վաղ ստեղծված dh2048 ընտրանքների ֆայլի անունները.
  • Սերվերի գիծը սահմանում է տիրույթը և ենթացանցային դիմակը, որոնք կօգտագործվեն մուտք գործելուց հետո հաճախորդներին IP հասցեներ հատկացնելու համար:
  • «Route 10.0.3.0 255.255.255.0» կամընտիր push պարամետրը թույլ է տալիս հեռավոր հաճախորդներին մուտք գործել սերվերի հետևում գտնվող մասնավոր ենթացանցեր: Այս աշխատանքը կատարելու համար պահանջվում է նաև ցանցի տեղադրում հենց սերվերի վրա, որպեսզի մասնավոր ենթացանցն իմանա OpenVPN ենթացանկի մասին (10.8.0.0):
  • Port-share localhost 80 գիծը թույլ է տալիս վերահղել հաճախորդի տրաֆիկը, որը գալիս է 1194 նավահանգստով դեպի տեղական վեբ սերվեր, որը լսում է 80-րդ նավահանգիստը: (Սա օգտակար կլինի, եթե դուք պատրաստվում եք օգտագործել վեբ սերվերը ձեր VPN-ը փորձարկելու համար:) Սա միայն աշխատում է: ապա երբ ընտրված է tcp արձանագրությունը:
  • Օգտվողի ոչ ոք և խմբի ոչ խմբի տողերը պետք է միացված լինեն՝ հեռացնելով ստորակետերը (;): Հեռավոր հաճախորդներին ստիպելը գործարկել որպես ոչ ոք և ոչ խումբ, ապահովում է, որ սերվերի նիստերը արտոնյալ չեն:
  • log-ը նշում է, որ ընթացիկ գրանցամատյանի գրառումները կվերագրեն հին գրառումները ամեն անգամ, երբ OpenVPN-ն սկսվում է, մինչդեռ log-append-ը նոր գրառումներ է ավելացնում առկա գրանցամատյանի ֆայլին: Openvpn.log ֆայլն ինքնին գրված է /etc/openvpn/ գրացուցակում:

Բացի այդ, հաճախորդից դեպի հաճախորդ արժեքը նույնպես հաճախ ավելացվում է կազմաձևման ֆայլին, որպեսզի բազմաթիվ հաճախորդներ կարողանան տեսնել միմյանց, բացի OpenVPN սերվերից: Եթե ​​դուք գոհ եք ձեր կազմաձևից, կարող եք գործարկել OpenVPN սերվերը.

# systemctl start openvpn

OpenVPN-ի և systemd-ի միջև փոխհարաբերությունների փոփոխվող բնույթի պատճառով ծառայություն սկսելու համար երբեմն կարող է պահանջվել հետևյալ շարահյուսությունը՝ systemctl start openvpn@server:

Ձեր սերվերի ցանցային ինտերֆեյսները ցուցակագրելու համար գործարկվող ip addr-ն այժմ պետք է հղում տա դեպի նոր միջերես, որը կոչվում է tun0: OpenVPN-ն այն կստեղծի մուտքային հաճախորդներին սպասարկելու համար.

$ 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

Հնարավոր է, որ ձեզ անհրաժեշտ լինի վերագործարկել սերվերը, նախքան ամեն ինչ ամբողջությամբ սկսի աշխատել: Հաջորդ կանգառը հաճախորդի համակարգիչն է:

10.1.2. OpenVPN հաճախորդի կազմաձևում

Ավանդաբար թունելները կառուցվում են առնվազն երկու ելքով (այլապես դրանք կանվանեինք քարանձավներ): Սերվերի վրա ճիշտ կազմաձևված OpenVPN-ն ուղղորդում է երթևեկությունը մի կողմից թունելի ներս և դուրս: Բայց ձեզ հարկավոր կլինի նաև որոշակի ծրագրակազմ, որն աշխատում է հաճախորդի կողմից, այսինքն՝ թունելի մյուս ծայրում:

Այս բաժնում ես պատրաստվում եմ կենտրոնանալ ձեռքով կարգավորելու Linux համակարգչի որոշ տեսակ՝ որպես OpenVPN հաճախորդ: Բայց սա միակ ճանապարհը չէ, որով հասանելի է այս հնարավորությունը։ OpenVPN-ն աջակցում է հաճախորդի հավելվածներին, որոնք կարող են տեղադրվել և օգտագործվել Windows կամ macOS-ով աշխատող աշխատասեղանների և նոութբուքերի, ինչպես նաև Android և iOS սմարթֆոնների և պլանշետների վրա: Մանրամասների համար տե՛ս openvpn.net:

OpenVPN փաթեթը պետք է տեղադրվի հաճախորդի մեքենայի վրա, ինչպես այն տեղադրվել է սերվերի վրա, չնայած այստեղ easy-rsa-ի կարիք չկա, քանի որ ձեր օգտագործած բանալիներն արդեն գոյություն ունեն: Դուք պետք է պատճենեք client.conf ձևանմուշի ֆայլը ձեր նոր ստեղծած /etc/openvpn/ գրացուցակում: Այս անգամ ֆայլը չի ​​սեղմվի, ուստի սովորական cp հրամանը լավ կկատարի աշխատանքը.

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

Ձեր client.conf ֆայլի կարգավորումների մեծ մասը բավականին պարզ կլինի. դրանք պետք է համապատասխանեն սերվերի արժեքներին: Ինչպես տեսնում եք հետևյալ օրինակի ֆայլից, եզակի պարամետրը հեռավոր 192.168.1.23 1194 է, որը հաճախորդին ասում է սերվերի IP հասցեն: Կրկին համոզվեք, որ սա ձեր սերվերի հասցեն է: Դուք նաև պետք է ստիպեք հաճախորդի համակարգչին ստուգել սերվերի վկայագրի իսկությունը՝ կանխելու մարդ-միջին հնարավոր հարձակումը: Դա անելու եղանակներից մեկն է ավելացնել գիծ remote-cert-tls սերվերը (Ցուցակ 10.3):

Linux in Action գիրք
Այժմ կարող եք գնալ /etc/openvpn/ գրացուցակ և սերվերից հանել հավաստագրման բանալիները: Փոխարինեք սերվերի IP հասցեն կամ տիրույթի անունը օրինակում ձեր արժեքներով.

Linux in Action գիրք
Հավանաբար, ոչ մի հետաքրքիր բան տեղի չի ունենա, քանի դեռ չեք գործարկել OpenVPN-ը հաճախորդի վրա. Քանի որ դուք պետք է փոխանցեք մի քանի փաստարկ, դուք դա կանեք հրամանի տողից: --tls-client արգումենտն ասում է OpenVPN-ին, որ դուք կգործեք որպես հաճախորդ և միանալու եք TLS կոդավորման միջոցով, և --config-ը ցույց է տալիս ձեր կազմաձևման ֆայլը.

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

Ուշադիր կարդացեք հրամանի ելքը՝ համոզվելու համար, որ ճիշտ եք միացված: Եթե ​​առաջին անգամ ինչ-որ բան սխալ է, դա կարող է պայմանավորված լինել սերվերի և հաճախորդի կազմաձևման ֆայլերի կարգավորումների անհամապատասխանության կամ ցանցային կապի/հրդեհային պատի հետ: Ահա որոշ անսարքությունների վերացման խորհուրդներ:

  • Զգուշորեն կարդացեք հաճախորդի վրա OpenVPN գործողության արդյունքը. Այն հաճախ պարունակում է արժեքավոր խորհուրդներ այն մասին, թե կոնկրետ ինչ չի կարելի անել և ինչու:
  • Ստուգեք սխալի հաղորդագրությունները openvpn.log և openvpn-status.log ֆայլերում սերվերի /etc/openvpn/ գրացուցակում:
  • Ստուգեք համակարգի տեղեկամատյանները սերվերի և հաճախորդի վրա OpenVPN-ի հետ կապված և ժամանակային հաղորդագրությունների համար: (journalctl -ce-ն կցուցադրի ամենավերջին գրառումները:)
  • Համոզվեք, որ ունեք ակտիվ ցանցային կապ սերվերի և հաճախորդի միջև (այս մասին ավելին 14-րդ գլխում):

Հեղինակի մասին

Դեյվիդ Քլինթոն - համակարգի ադմինիստրատոր, ուսուցիչ և գրող: Նա ղեկավարել, գրել և ստեղծել է կրթական նյութեր շատ կարևոր տեխնիկական առարկաների համար, ներառյալ Linux համակարգերը, ամպային հաշվարկները (մասնավորապես AWS) և կոնտեյներային տեխնոլոգիաները, ինչպիսիք են Docker-ը: Նա գրել է «Իմացեք Amazon Web Services in a Month of Lunches» գիրքը (Manning, 2017): Նրա վիդեո վերապատրաստման դասընթացներից շատերը կարելի է գտնել Pluralsight.com-ում, իսկ նրա մյուս գրքերի հղումները (Լինուքսի ադմինիստրացիայի և սերվերի վիրտուալացման վերաբերյալ) հասանելի են այստեղ՝ bootstrap-it.com.

» Գրքի մասին ավելի մանրամասն կարող եք գտնել այստեղ հրատարակչի կայքը
» Պահեստավորված նյութեր
» Հատված

Khabrozhiteley-ի համար 25% զեղչ՝ օգտագործելով կտրոնը - Linux
Գրքի թղթային տարբերակի վճարումից հետո էլեկտրոնային գիրք կուղարկվի էլեկտրոնային փոստով:

Source: www.habr.com

Добавить комментарий