Liv "Linux an aksyon"

Liv "Linux an aksyon" Bonjou, rezidan Khabro! Nan liv la, David Clinton dekri 12 pwojè lavi reyèl, ki gen ladan otomatize sistèm backup ak rekiperasyon ou a, mete kanpe yon nwaj dosye pèsonèl Dropbox, ak kreye pwòp sèvè MediaWiki ou. Ou pral eksplore Virtualization, rekiperasyon dezas, sekirite, backup, DevOps, ak depanaj sistèm atravè etid ka enteresan. Chak chapit fini ak yon revizyon nan pi bon pratik, yon glosè nan nouvo tèm, ak egzèsis.

Ekstrè “10.1. Kreye yon tinèl OpenVPN"

Mwen te deja pale anpil sou chifreman nan liv sa a. SSH ak SCP ka pwoteje done transfere sou koneksyon aleka (Chapit 3), chifreman fichye ka pwoteje done pandan y ap estoke sou sèvè a (Chapit 8), ak sètifika TLS/SSL ka pwoteje done transfere ant sit ak navigatè kliyan (Chapit 9) . Men pafwa done ou bezwen pwoteje atravè yon seri pi laj de koneksyon. Pou egzanp, petèt kèk nan manm ekip ou a ap travay sou wout la pandan y ap konekte ak Wi-Fi atravè otspo piblik. Ou definitivman pa ta dwe asime ke tout pwen aksè sa yo an sekirite, men moun ou yo bezwen yon fason yo konekte ak resous konpayi-e se la kote yon VPN ka ede.

Yon tinèl VPN byen fèt bay yon koneksyon dirèk ant kliyan aleka ak sèvè a nan yon fason ki kache done pandan li vwayaje sou yon rezo ensekirite. Se konsa, sa? Ou te deja wè anpil zouti ki ka fè sa ak chifreman. Valè reyèl yon VPN se ke lè w louvri yon tinèl, ou ka konekte rezo aleka kòm si yo tout te lokal. Nan yon sans, w ap itilize yon kontoune.

Sèvi ak rezo pwolonje sa a, administratè yo ka fè travay yo sou sèvè yo nenpòt kote. Men, sa ki pi enpòtan, yon konpayi ki gen resous gaye nan plizyè kote ka fè yo tout vizib ak aksesib a tout gwoup ki bezwen yo, kèlkeswa kote yo ye (Figi 10.1).

Tinèl la li menm pa garanti sekirite. Men, youn nan estanda chifreman yo ka enkli nan estrikti rezo a, ki siyifikativman ogmante nivo sekirite. Tinèl ki te kreye lè l sèvi avèk pake OpenVPN sous louvri yo itilize menm chifreman TLS/SSL ou te deja li sou yo. OpenVPN se pa sèlman opsyon tinèl ki disponib, men li se youn nan pi bon li te ye. Li konsidere kòm yon ti kras pi vit ak pi an sekirite pase altènatif Kouch 2 pwotokòl tinèl la ki itilize cryptage IPsec.

Èske ou vle tout moun nan ekip ou a kominike an sekirite youn ak lòt pandan y ap sou wout la oswa k ap travay nan bilding diferan? Pou fè sa, ou bezwen kreye yon sèvè OpenVPN pou pèmèt pataje aplikasyon ak aksè nan anviwònman rezo lokal sèvè a. Pou sa a travay, tout sa ou bezwen fè se kouri de machin vityèl oswa de resipyan: youn aji kòm sèvè a / lame a ak youn aji kòm kliyan an. Bati yon vpn se pa yon pwosesis ki senp, kidonk li la pwobableman vo pran kèk minit pou jwenn gwo foto a nan tèt ou.

Liv "Linux an aksyon"

10.1.1. Konfigirasyon sèvè OpenVPN

Anvan ou kòmanse, mwen pral ba ou kèk konsèy itil. Si ou pral fè li tèt ou (e mwen trè rekòmande ou fè), ou pral pwobableman jwenn tèt ou ap travay ak plizyè fenèt tèminal louvri sou Desktop ou, chak konekte ak yon machin diferan. Gen yon risk ke nan kèk pwen ou pral antre nan lòd la mal nan fenèt la. Pou evite sa, ou ka sèvi ak kòmand hostname pou chanje non machin ki parèt sou liy kòmand pou yon bagay ki klèman di ou kote ou ye. Yon fwa ou fè sa, w ap bezwen konekte nan sèvè a epi konekte ankò pou nouvo paramèt yo pran efè. Men sa li sanble:

Liv "Linux an aksyon"
Lè w suiv apwòch sa a epi bay chak machin w ap travay avèk non apwopriye, ou ka fasilman kenbe tras kote w ye a.

Apre w fin itilize hostname, ou ka rankontre anmèdan Pa kapab rezoud lame OpenVPN-Sèvè mesaj lè w ap egzekite kòmandman ki vin apre yo. Mete ajou /etc/hosts fichye a ak nouvo non host apwopriye a ta dwe rezoud pwoblèm nan.

Prepare sèvè ou a pou OpenVPN

Pou enstale OpenVPN sou sèvè ou a, ou bezwen de pakè: openvpn ak easy-rsa (pou jere pwosesis jenerasyon kle chifreman an). Itilizatè CentOS yo ta dwe premye enstale repozitwa epel-release la si sa nesesè, jan ou te fè sa nan Chapit 2. Pou kapab teste aksè nan aplikasyon an sèvè, ou kapab tou enstale sèvè wèb Apache (apache2 sou Ubuntu ak httpd sou CentOS).

Pandan w ap mete kanpe sèvè ou a, mwen rekòmande aktive yon firewall ki bloke tout pò eksepte 22 (SSH) ak 1194 (pò default OpenVPN a). Egzanp sa a montre kouman ufw ta travay sou Ubuntu, men mwen sèten ou toujou sonje pwogram CentOS firewalld nan Chapit 9:

# ufw enable
# ufw allow 22
# ufw allow 1194

Pou pèmèt routage entèn ant rezo interfaces sou sèvè a, ou bezwen retire yon liy (net.ipv4.ip_forward = 1) nan fichye /etc/sysctl.conf. Sa a pral pèmèt kliyan aleka yo dwe redireksyon jan sa nesesè yon fwa yo konekte. Pou fè nouvo opsyon an travay, kouri sysctl -p:

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

Anviwònman sèvè w la konplètman konfiguré, men gen yon lòt bagay ankò pou w fè anvan w pare: w ap bezwen ranpli etap sa yo (nou pral kouvri yo an detay annapre).

  1. Kreye yon seri kle chifreman enfrastrikti kle piblik (PKI) sou sèvè a lè l sèvi avèk scripts yo bay ak pake fasil-rsa la. Esansyèlman, sèvè OpenVPN a aji tou kòm pwòp otorite sètifika li yo (CA).
  2. Prepare kle apwopriye pou kliyan an
  3. Konfigure fichye server.conf pou sèvè a
  4. Настройте ваш клиент OpenVPN
  5. Tcheke VPN ou a

Jenere kle chifreman

Pou kenbe bagay yo senp, ou ka mete kanpe enfrastrikti kle ou a sou menm machin nan kote sèvè OpenVPN la ap kouri. Sepandan, pi bon pratik sekirite anjeneral sijere lè l sèvi avèk yon sèvè CA separe pou deplwaman pwodiksyon an. Pwosesis pou jenere ak distribye resous kle chifreman pou itilize nan OpenVPN ilistre nan Fig. 10.2.

Liv "Linux an aksyon"
Lè ou enstale OpenVPN, anyè /etc/openvpn/ te kreye otomatikman, men pa gen anyen ladan l ankò. Pakè openvpn ak easy-rsa yo vini ak egzanp dosye modèl ke ou ka itilize kòm yon baz pou konfigirasyon ou. Pou kòmanse pwosesis sètifikasyon an, kopye anyè modèl easy-rsa nan /usr/share/ nan /etc/openvpn epi chanje anyè easy-rsa/:

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

Anyè a fasil-rsa pral genyen kounye a byen kèk scripts. Nan tab la 10.1 bay lis zouti ou pral itilize pou kreye kle yo.

Liv "Linux an aksyon"

Operasyon ki anwo yo mande privilèj rasin, kidonk ou bezwen vin rasin atravè sudo su.

Premye fichye w ap travay avèk yo rele vars epi li gen varyab anviwònman ki fasil-rsa itilize lè w ap jenere kle. Ou bezwen edite fichye a pou itilize pwòp valè ou olye de valè default ki deja la. Men ki jan dosye mwen an pral sanble (Lis 10.1).

Lis 10.1. Fragman prensipal nan dosye /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"

Kouri dosye vars la pral pase valè li yo nan anviwònman koki a, kote yo pral enkli nan sa ki nan nouvo kle ou yo. Poukisa kòmandman sudo a pa travay pou kont li? Paske nan premye etap la nou edite script la yo te rele vars ak Lè sa a, aplike li. Aplike ak vle di ke dosye a vars pase valè li yo nan anviwònman an koki, kote yo pral enkli nan sa ki nan nouvo kle ou yo.

Asire w ke w re-kouri dosye a lè l sèvi avèk yon nouvo kokiy pou konplete pwosesis la fini. Lè sa a fini, script la ap mande w pou w kouri yon lòt script, clean-all, pou retire nenpòt kontni nan /etc/openvpn/easy-rsa/keys/ anyè:

Liv "Linux an aksyon"
Natirèlman, pwochen etap la se kouri script clean-all, ki te swiv pa build-ca, ki sèvi ak script pkitool pou kreye sètifika rasin lan. Yo pral mande w konfime paramèt idantite yo bay vars yo:

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

Apre sa vini script bati-kle-sèvè a. Depi li itilize menm script pkitool ansanm ak nouvo sètifika rasin lan, ou pral wè menm kesyon yo pou konfime kreyasyon pè kle a. Yo pral nonmen kle yo dapre agiman ou pase yo, ki, sof si w ap kouri plizyè VPN sou machin sa a, anjeneral yo pral sèvè, tankou nan egzanp lan:

# ./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 sèvi ak paramèt ki te pwodwi pa algorithm Diffie-Hellman (itilize build-dh) pou negosye otantifikasyon pou nouvo koneksyon. Fichye ki te kreye la a pa bezwen sekrè, men li dwe pwodwi lè l sèvi avèk script build-dh pou kle RSA ki aktif kounye a. Si w kreye nouvo kle RSA alavni, w ap bezwen mete ajou dosye Diffie-Hellman tou:

# ./build-dh

Kle bò sèvè ou a pral fini kounye a nan /etc/openvpn/easy-rsa/keys/ anyè, men OpenVPN pa konnen sa. Pa default, OpenVPN pral chèche kle nan /etc/openvpn/, kidonk kopye yo:

# 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

Preparasyon Kliyan Chiffrement kle

Kòm ou te deja wè, chifreman TLS itilize pè kle matche: youn enstale sou sèvè a ak youn enstale sou kliyan an aleka. Sa vle di ou pral bezwen kle kliyan yo. Pkitool ansyen zanmi nou an se egzakteman sa ou bezwen pou sa. Nan egzanp sa a, lè nou kouri pwogram nan nan /etc/openvpn/easy-rsa/ anyè, nou pase li agiman kliyan an jenere fichye yo rele client.crt ak client.key:

# ./pkitool client

De dosye kliyan yo, ansanm ak fichye orijinal ca.crt ki toujou nan kle/anyè a, yo ta dwe kounye a transfere an sekirite nan kliyan ou a. Akòz dwa yo an komen ak aksè, sa ka pa tèlman fasil. Apwòch ki pi senp la se kopye manyèlman sa ki nan fichye sous la (e pa gen anyen men kontni sa a) nan yon tèminal k ap kouri sou Desktop PC ou a (chwazi tèks la, klike sou li epi chwazi Kopi nan meni an). Lè sa a, kole sa a nan yon nouvo dosye ki gen menm non ke ou kreye nan yon dezyèm tèminal ki konekte ak kliyan ou a.

Men, nenpòt moun ka koupe epi kole. Olye de sa, panse tankou yon administratè paske ou p ap toujou gen aksè a entèfas kote operasyon koupe / kole yo posib. Kopi fichye yo nan anyè lakay itilizatè ou an (pou operasyon scp aleka a ka jwenn aksè yo), epi sèvi ak chown pou chanje pwopriyetè dosye yo soti nan rasin nan yon itilizatè regilye ki pa rasin pou aksyon scp aleka ka fèt. Asire w ke tout dosye ou yo kounye a enstale ak aksesib. Ou pral deplase yo nan kliyan an yon ti kras pita:

# 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

Avèk yon seri konplè kle chifreman pare pou ale, ou bezwen di sèvè a ki jan ou vle kreye VPN la. Sa a se fè lè l sèvi avèk fichye a server.conf.

Diminye kantite frap

Èske gen twòp sezisman? Ekspansyon ak parantèz pral ede diminye sis kòmandman sa yo a de. Mwen sèten ou ka etidye de egzanp sa yo epi konprann sa k ap pase. Sa ki pi enpòtan, ou pral kapab konprann kijan pou aplike prensip sa yo nan operasyon ki enplike plizyè dizèn oswa menm dè santèn de eleman:

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

Mete kanpe fichye server.conf la

Ki jan ou ka konnen ki sa dosye a server.conf ta dwe sanble? Sonje modèl anyè easy-rsa ou te kopye nan /usr/share/? Lè ou enstale OpenVPN, ou te rete ak yon fichye modèl konfigirasyon konprese ke ou ka kopye nan /etc/openvpn/. Mwen pral bati sou lefèt ke modèl la achiv epi prezante w yon zouti itil: zcat.

Ou deja konnen sou enprime kontni tèks yon dosye sou ekran an lè l sèvi avèk lòd chat la, men e si fichye a konprese lè l sèvi avèk gzip? Ou ka toujou dézip fichye a ak Lè sa a chat pral san pwoblèm mwen tap sortie li, men sa a youn oswa de etap plis pase sa nesesè. Olye de sa, jan ou ta ka devine, ou ka bay lòd zcat pou chaje tèks ki pa pake a nan memwa nan yon sèl etap. Nan egzanp sa a, olye pou yo enprime tèks sou ekran an, ou pral redireksyon li nan yon nouvo dosye ki rele server.conf:

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

Ann mete sou kote dokimantasyon vaste ak itil ki vini ak dosye a epi wè kisa li ta ka sanble lè w ap fini koreksyon. Remake byen ke pwen (;) di OpenVPN pa li oswa egzekite liy kap vini an (Lis 10.2).

Liv "Linux an aksyon"
Ann ale nan kèk nan paramèt sa yo.

  • Pa default, OpenVPN kouri sou pò 1194. Ou ka chanje sa a, pou egzanp, plis kache aktivite ou oswa evite konfli ak lòt tinèl aktif. Depi 1194 mande pou kowòdinasyon minimòm ak kliyan, li pi bon fè li nan fason sa a.
  • OpenVPN itilize swa Pwotokòl Kontwòl Transmisyon (TCP) oswa Pwotokòl Datagram Itilizatè (UDP) pou transmèt done. TCP ka yon ti kras pi dousman, men li se pi serye ak plis chans yo dwe konprann pa aplikasyon ki kouri sou tou de bout nan tinèl la.
  • Ou ka presize dev tun lè ou vle kreye yon tinèl IP ki pi senp, pi efikas ki pote kontni done e pa gen anyen lòt bagay. Si, nan lòt men an, ou bezwen konekte koòdone rezo miltip (ak rezo yo reprezante), kreye yon pon Ethernet, w ap gen yo chwazi tiyo dev. Si ou pa konprann sa tout sa vle di, sèvi ak agiman tun.
  • Kat liy kap vini yo bay OpenVPN non twa dosye otantifikasyon yo sou sèvè a ak fichye opsyon dh2048 ou te kreye pi bonè.
  • Liy sèvè a fikse ranje ak mas sous-rezo ki pral itilize pou bay adrès IP kliyan yo lè w konekte.
  • Paramèt pouse opsyonèl "route 10.0.3.0 255.255.255.0" pèmèt kliyan aleka jwenn aksè nan subnet prive dèyè sèvè a. Fè travay sa a mande tou mete kanpe rezo a sou sèvè a li menm pou subnet prive a konnen sou sous-rezo OpenVPN (10.8.0.0).
  • Liy localhost 80 pò-share a pèmèt ou redireksyon trafik kliyan k ap vini sou pò 1194 nan yon sèvè entènèt lokal k ap koute sou pò 80. (Sa a pral itil si w pral sèvi ak sèvè entènèt la pou teste VPN ou a.) Sa a sèlman travay. Lè sa a, lè yo chwazi pwotokòl la tcp.
  • Itilizatè a pèsonn ak gwoup nogroup liy yo dwe aktive lè yo retire pwen virgul yo (;). Fòse kliyan aleka kouri kòm pèsonn ak nogroup asire ke sesyon sou sèvè a pa gen privilèj.
  • log espesifye ke antre aktyèl yo pral ranplase ansyen antre chak fwa OpenVPN kòmanse, tandiske log-append ajoute nouvo antre nan dosye ki egziste deja. Dosye openvpn.log la li menm ekri nan anyè /etc/openvpn/.

Anplis de sa, yo souvan ajoute yon valè kliyan-a-kliyan nan dosye konfigirasyon an pou plizyè kliyan ka wè youn ak lòt anplis sèvè OpenVPN la. Si ou satisfè ak konfigirasyon ou a, ou ka kòmanse sèvè OpenVPN la:

# systemctl start openvpn

Akòz chanje nati relasyon ki genyen ant OpenVPN ak systemd, sentaks sa a ka pafwa oblije kòmanse yon sèvis: systemctl start openvpn@server.

Kouri ip addr nan lis entèfas rezo sèvè ou a ta dwe kounye a pwodiksyon yon lyen nan yon nouvo koòdone ki rele tun0. OpenVPN pral kreye li pou sèvi kliyan fèk ap rantre:

$ 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

Ou ka bezwen rdemare sèvè a anvan tout bagay kòmanse travay konplètman. Pwochen arè se òdinatè kliyan an.

10.1.2. Konfigirasyon kliyan OpenVPN la

Tradisyonèlman, tinèl yo bati ak omwen de sòti (otreman nou ta rele yo twou wòch). Yon OpenVPN byen configuré sou sèvè a dirije trafik antre ak soti nan tinèl la sou yon bò. Men, w ap bezwen tou kèk lojisyèl kouri sou bò kliyan an, se sa ki, sou lòt bout tinèl la.

Nan seksyon sa a, mwen pral konsantre sou manyèlman mete kanpe kèk kalite òdinatè Linux yo aji kòm yon kliyan OpenVPN. Men, sa a se pa sèlman fason ki opòtinite sa a disponib. OpenVPN sipòte aplikasyon kliyan ki ka enstale ak itilize sou òdinatè ak òdinatè pòtab ki kouri Windows oswa macOS, osi byen ke Android ak iOS smartphones ak tablèt. Gade openvpn.net pou plis detay.

Pake OpenVPN a pral bezwen enstale sou machin kliyan an jan li te enstale sou sèvè a, byenke pa gen okenn nesesite pou easy-rsa isit la paske kle w ap itilize yo deja egziste. Ou bezwen kopye fichye modèl client.conf nan anyè /etc/openvpn/ ou fèk kreye. Fwa sa a, yo p ap konprime fichye a, kidonk lòd regilye cp la pral fè travay la byen:

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

Pifò nan paramèt yo nan fichye client.conf ou a pral trè oto-eksplikasyon: yo ta dwe matche ak valè yo sou sèvè a. Kòm ou ka wè nan dosye sa a egzanp, paramèt inik la se aleka 192.168.1.23 1194, ki di kliyan an adrès IP sèvè a. Ankò, asire w ke sa a se adrès sèvè ou. Ou ta dwe tou fòse òdinatè kliyan an verifye otantisite sètifika sèvè a pou anpeche yon posib atak moun nan mitan an. Youn nan fason yo fè sa se ajoute liy remote-cert-tls sèvè a (Lis 10.3).

Liv "Linux an aksyon"
Kounye a ou ka ale nan anyè /etc/openvpn/ epi retire kle sètifikasyon yo nan sèvè a. Ranplase adrès IP sèvè a oswa non domèn nan egzanp lan ak valè ou yo:

Liv "Linux an aksyon"
Pa gen anyen enteresan ki pral rive jiskaske ou kouri OpenVPN sou kliyan an. Depi ou bezwen pase yon koup nan agiman, ou pral fè li soti nan liy lan lòd. Agiman --tls-client la di OpenVPN ke ou pral aji kòm yon kliyan epi konekte atravè chifreman TLS, ak --config pwen nan dosye konfigirasyon ou a:

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

Li kòmandman an ak anpil atansyon pou asire w ou konekte kòrèkteman. Si yon bagay ale mal premye fwa a, li ka akòz yon dezakò nan anviwònman ant sèvè a ak dosye konfigirasyon kliyan oswa yon pwoblèm koneksyon rezo / pare-feu. Men kèk konsèy depanaj.

  • Li ak anpil atansyon pwodiksyon operasyon OpenVPN sou kliyan an. Li souvan gen bonjan konsèy sou sa egzakteman pa ka fè ak poukisa.
  • Tcheke mesaj erè yo nan fichye openvpn.log ak openvpn-status.log nan anyè /etc/openvpn/ sou sèvè a.
  • Tcheke mòso bwa sistèm yo sou sèvè a ak kliyan pou mesaj ki gen rapò ak OpenVPN ak kwonometre. (journalctl -ce ap montre dènye antre yo.)
  • Asire w ou genyen yon koneksyon rezo aktif ant sèvè a ak kliyan an (plis sou sa a nan Chapit 14).

Sou otè a

David Clinton - administratè sistèm, pwofesè ak ekriven. Li te administre, ekri sou, epi kreye materyèl edikatif pou anpil disiplin teknik enpòtan, tankou sistèm Linux, cloud computing (patikilyèman AWS), ak teknoloji veso tankou Docker. Li te ekri liv Learn Amazon Web Services nan yon mwa nan manje midi (Manning, 2017). Anpil nan kou fòmasyon videyo li yo ka jwenn nan Pluralsight.com, ak lyen ki mennen nan lòt liv li yo (sou administrasyon Linux ak Virtualization sèvè) yo disponib nan bootstrap-it.com.

» Ou ka jwenn plis detay sou liv la nan sit entènèt piblikatè a
» Table of Contents
» Ekstrè

Pou Khabrozhiteley 25% rabè lè l sèvi avèk koupon - Linux
Lè w peye vèsyon papye liv la, yo pral voye yon liv elektwonik pa imel.

Sous: www.habr.com

Add nouvo kòmantè