Buku "Linux in Action"

Buku "Linux in Action" Halo warga Khabro! Ing buku kasebut, David Clinton nggambarake 12 proyek nyata, kalebu ngotomatisasi sistem serep lan pemulihan, nyetel awan file pribadi gaya Dropbox, lan nggawe server MediaWiki sampeyan dhewe. Sampeyan bakal njelajah virtualisasi, pemulihan bencana, keamanan, serep, DevOps, lan ngatasi masalah sistem liwat studi kasus sing menarik. Saben bab dipungkasi kanthi review praktik paling apik, glosarium istilah anyar, lan latihan.

Kutipan "10.1. Nggawe trowongan OpenVPN"

Aku wis ngomong akeh babagan enkripsi ing buku iki. SSH lan SCP bisa nglindhungi data sing ditransfer liwat sambungan remot (Bab 3), enkripsi file bisa nglindhungi data nalika disimpen ing server (Bab 8), lan sertifikat TLS/SSL bisa nglindhungi data sing ditransfer antarane situs lan browser klien (Bab 9) . Nanging kadhangkala data sampeyan kudu direksa ing sawetara sambungan sing luwih akeh. Contone, bisa uga sawetara anggota tim sampeyan kerja ing dalan nalika nyambung menyang Wi-Fi liwat hotspot umum. Sampeyan mesthi ora kudu nganggep yen kabeh titik akses kasebut aman, nanging wong sampeyan butuh cara kanggo nyambung menyang sumber daya perusahaan-lan ing kana VPN bisa mbantu.

Tunnel VPN sing dirancang kanthi bener nyedhiyakake sambungan langsung antarane klien remot lan server kanthi cara sing ndhelikake data nalika lelungan liwat jaringan sing ora aman. Dadi apa? Sampeyan wis ndeleng akeh alat sing bisa nindakake iki nganggo enkripsi. Nilai nyata VPN yaiku kanthi mbukak trowongan, sampeyan bisa nyambungake jaringan remot kaya-kaya lokal. Ing pangertèn, sampeyan nggunakake bypass.

Nggunakake jaringan lengkap iki, administrator bisa nindakake pakaryan ing server saka ngendi wae. Nanging sing luwih penting, perusahaan kanthi sumber daya sing nyebar ing pirang-pirang lokasi bisa nggawe kabeh katon lan bisa diakses dening kabeh klompok sing mbutuhake, ing ngendi wae (Gambar 10.1).

Trowongan dhewe ora njamin keamanan. Nanging salah siji saka standar enkripsi bisa kalebu ing struktur jaringan, kang Ngartekno nambah tingkat keamanan. Tunnel sing digawe nggunakake paket OpenVPN open source nggunakake enkripsi TLS/SSL sing padha sing wis diwaca. OpenVPN ora mung siji-sijine pilihan tunneling sing kasedhiya, nanging minangka salah sawijining sing paling misuwur. Iki dianggep rada cepet lan luwih aman tinimbang protokol terowongan Layer 2 alternatif sing nggunakake enkripsi IPsec.

Apa sampeyan pengin kabeh wong ing tim sampeyan bisa komunikasi kanthi aman nalika ana ing dalan utawa kerja ing macem-macem bangunan? Kanggo nindakake iki, sampeyan kudu nggawe server OpenVPN kanggo ngidini enggo bareng aplikasi lan akses menyang lingkungan jaringan lokal server. Kanggo nindakake iki, sampeyan mung kudu mbukak rong mesin virtual utawa rong wadhah: siji kanggo tumindak minangka server / host lan siji kanggo tumindak minangka klien. Mbangun VPN dudu proses sing gampang, mula sampeyan kudu njupuk sawetara menit kanggo ngelingi gambaran gedhe.

Buku "Linux in Action"

10.1.1. Konfigurasi Server OpenVPN

Sadurunge miwiti, aku bakal menehi sawetara saran sing migunani. Yen sampeyan arep nindakake dhewe (lan aku banget nyaranake sampeyan nindakake), sampeyan bakal nemokake dhewe nggarap macem-macem terminal windows mbukak ing Desktop, saben disambungake menyang mesin beda. Ana risiko yen ing sawetara titik sampeyan bakal ngetik printah salah menyang jendhela. Kanggo ngindhari iki, sampeyan bisa nggunakake printah hostname kanggo ngganti jeneng mesin sing ditampilake ing baris printah kanggo soko sing cetha ngandhani sampeyan lagi ing ngendi. Sawise sampeyan nindakake iki, sampeyan kudu metu saka server lan mlebu maneh supaya setelan anyar bisa ditrapake. Iki katon kaya:

Buku "Linux in Action"
Kanthi ngetutake pendekatan iki lan menehi jeneng sing cocog kanggo saben mesin sing sampeyan gunakake, sampeyan bisa kanthi gampang nglacak lokasi sampeyan.

Sawise nggunakake jeneng host, sampeyan bisa nemoni ngganggu Ora Bisa Ngatasi Pesen Host OpenVPN-Server nalika nglakokake perintah sabanjure. Nganyari file / etc / hosts kanthi jeneng host anyar sing cocog kudu ngrampungake masalah kasebut.

Nyiyapake server kanggo OpenVPN

Kanggo nginstal OpenVPN ing server sampeyan, sampeyan butuh rong paket: openvpn lan easy-rsa (kanggo ngatur proses generasi kunci enkripsi). Pangguna CentOS kudu nginstal repositori epel-release dhisik yen perlu, kaya sing ditindakake ing Bab 2. Supaya bisa nyoba akses menyang aplikasi server, sampeyan uga bisa nginstal server web Apache (apache2 ing Ubuntu lan httpd ing CentOS).

Nalika sampeyan nyiyapake server, aku nyaranake ngaktifake firewall sing mblokir kabeh port kajaba 22 (SSH) lan 1194 (port standar OpenVPN). Conto iki nggambarake carane ufw bisa digunakake ing Ubuntu, nanging aku yakin sampeyan isih ngelingi program firewalld CentOS saka Bab 9:

# ufw enable
# ufw allow 22
# ufw allow 1194

Kanggo ngaktifake nuntun internal antarane antarmuka jaringan ing server, sampeyan kudu uncomment siji baris (net.ipv4.ip_forward = 1) ing file /etc/sysctl.conf. Iki bakal ngidini klien remot dialihake yen perlu yen wis disambungake. Kanggo nindakake opsi anyar, jalanake sysctl -p:

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

Lingkungan server sampeyan saiki wis dikonfigurasi kanthi lengkap, nanging isih ana siji liyane sing kudu ditindakake sadurunge sampeyan siyap: sampeyan kudu ngrampungake langkah-langkah ing ngisor iki (bakal bakal dibahas kanthi rinci sabanjure).

  1. Nggawe seperangkat kunci enkripsi infrastruktur kunci umum (PKI) ing server nggunakake skrip sing kasedhiya karo paket gampang-rsa. Intine, server OpenVPN uga tumindak minangka otoritas sertifikat (CA) dhewe.
  2. Siapke kunci sing cocog kanggo klien
  3. Ngatur file server.conf kanggo server
  4. Setel klien OpenVPN sampeyan
  5. Priksa VPN sampeyan

Ngasilake kunci enkripsi

Supaya gampang, sampeyan bisa nyiyapake prasarana utama ing mesin sing padha karo server OpenVPN. Nanging, praktik paling apik keamanan biasane nyaranake nggunakake server CA sing kapisah kanggo panyebaran produksi. Proses ngasilake lan nyebarake sumber daya kunci enkripsi kanggo digunakake ing OpenVPN digambarake ing Fig. 10.2.

Buku "Linux in Action"
Nalika sampeyan nginstal OpenVPN, direktori /etc/openvpn/ digawe kanthi otomatis, nanging durung ana apa-apa. Paket openvpn lan easy-rsa dilengkapi conto file template sing bisa digunakake minangka basis konfigurasi sampeyan. Kanggo miwiti proses sertifikasi, salin direktori template easy-rsa saka /usr/share/ menyang /etc/openvpn lan ganti menyang direktori easy-rsa/:

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

Direktori easy-rsa saiki bakal ngemot sawetara skrip. Ing meja 10.1 nampilake alat sing bakal digunakake kanggo nggawe kunci.

Buku "Linux in Action"

Operasi ing ndhuwur mbutuhake hak istimewa root, dadi sampeyan kudu dadi root liwat sudo su.

File pisanan sing bakal sampeyan gunakake diarani vars lan ngemot variabel lingkungan sing gampang digunakake nalika nggawe kunci. Sampeyan kudu ngowahi file kanggo nggunakake nilai sampeyan dhewe tinimbang nilai standar sing wis ana. Iki minangka fileku (Listing 10.1).

Dhaptar 10.1. Fragmen utama file /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"

Mbukak file vars bakal ngirim nilai kasebut menyang lingkungan cangkang, sing bakal dilebokake ing isi kunci anyar sampeyan. Napa perintah sudo ora bisa digunakake? Amarga ing langkah pisanan kita nyunting skrip jenenge vars banjur ditrapake. Nglamar lan tegese file vars ngirimake nilai menyang lingkungan cangkang, sing bakal dilebokake ing isi kunci anyar sampeyan.

Priksa manawa kanggo mbukak maneh file nggunakake cangkang anyar kanggo ngrampungake proses sing durung rampung. Yen wis rampung, skrip bakal njaluk sampeyan mbukak skrip liyane, clean-all, kanggo mbusak isi ing direktori /etc/openvpn/easy-rsa/keys/:

Buku "Linux in Action"
Mesthine, langkah sabanjure yaiku mbukak skrip sing resik, disusul build-ca, sing nggunakake skrip pkitool kanggo nggawe sertifikat root. Sampeyan bakal dijaluk konfirmasi setelan identitas sing diwenehake dening vars:

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

Sabanjure, skrip build-key-server. Amarga nggunakake skrip pkitool sing padha karo sertifikat root anyar, sampeyan bakal weruh pitakonan sing padha kanggo konfirmasi nggawe pasangan kunci. Tombol kasebut bakal dijenengi adhedhasar argumen sing sampeyan lewati, sing, kajaba sampeyan nggunakake pirang-pirang VPN ing mesin iki, biasane dadi server, kaya ing conto:

# ./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 nggunakake paramèter sing digawe dening algoritma Diffie-Hellman (nggunakake build-dh) kanggo negosiasi otentikasi kanggo sambungan anyar. File sing digawe ing kene ora perlu rahasia, nanging kudu digawe nggunakake skrip build-dh kanggo tombol RSA sing saiki aktif. Yen sampeyan nggawe kunci RSA anyar ing mangsa ngarep, sampeyan uga kudu nganyari file Diffie-Hellman:

# ./build-dh

Tombol sisih server sampeyan saiki bakal ana ing direktori /etc/openvpn/easy-rsa/keys/, nanging OpenVPN ora ngerti iki. Secara default, OpenVPN bakal nggoleki kunci ing /etc/openvpn/, mula salin:

# 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

Nyiapake Kunci Enkripsi Klien

Kaya sing wis sampeyan deleng, enkripsi TLS nggunakake pasangan kunci sing cocog: siji diinstal ing server lan siji diinstal ing klien remot. Iki tegese sampeyan butuh kunci klien. Pkitool kanca lawas kita persis apa sing sampeyan butuhake kanggo iki. Ing conto iki, nalika kita mbukak program ing direktori /etc/openvpn/easy-rsa/, kita menehi argumen klien kanggo ngasilake file sing diarani client.crt lan client.key:

# ./pkitool client

Loro file klien, bebarengan karo file ca.crt asli sing isih ana ing direktori kunci/, saiki kudu ditransfer kanthi aman menyang klien sampeyan. Amarga kepemilikan lan hak akses, iki bisa uga ora gampang. Pendekatan sing paling gampang yaiku nyalin isi file sumber kanthi manual (lan ora ana apa-apa kajaba isi kasebut) menyang terminal sing mlaku ing desktop PC (pilih teks, klik-tengen lan pilih Salin saka menu). Banjur tempel iki menyang file anyar kanthi jeneng sing padha sing digawe ing terminal kapindho sing disambungake menyang klien sampeyan.

Nanging sapa wae bisa ngethok lan nempel. Nanging, mikir kaya administrator amarga sampeyan ora mesthi duwe akses menyang GUI ing ngendi operasi potong / tempel bisa ditindakake. Salin file menyang direktori ngarep pangguna (supaya operasi scp remot bisa ngakses), banjur gunakake chown kanggo ngganti kepemilikan file saka root menyang pangguna non-root biasa supaya tumindak scp remot bisa ditindakake. Priksa manawa kabeh file sampeyan lagi diinstal lan bisa diakses. Sampeyan bakal mindhah menyang klien mengko:

# 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

Kanthi set lengkap kunci enkripsi sing siap, sampeyan kudu ngandhani server babagan carane nggawe VPN. Iki rampung nggunakake file server.conf.

Ngurangi jumlah keystrokes

Apa ana akeh banget ngetik? Ekspansi karo kurung bakal mbantu nyuda enem printah iki dadi loro. Aku yakin sampeyan bisa sinau loro conto iki lan ngerti apa sing kedadeyan. Sing luwih penting, sampeyan bakal bisa ngerti carane ngetrapake prinsip kasebut ing operasi sing nglibatake puluhan utawa malah atusan unsur:

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

Nyetel file server.conf

Carane sampeyan bisa ngerti apa server.conf file ngirim katon kaya? Elinga template direktori gampang-rsa sing disalin saka /usr/share/? Nalika sampeyan nginstal OpenVPN, sampeyan isih duwe file cithakan konfigurasi sing dikompres sing bisa disalin menyang /etc/openvpn/. Aku bakal mbangun kasunyatan manawa template kasebut diarsipake lan ngenalake sampeyan alat sing migunani: zcat.

Sampeyan wis ngerti babagan nyithak isi teks file menyang layar kanthi nggunakake perintah kucing, nanging kepiye yen file kasebut dikompres nggunakake gzip? Sampeyan bisa tansah unzip file lan banjur kucing bakal seneng output iku, nanging sing siji utawa loro langkah liyane saka perlu. Nanging, kaya sing wis sampeyan duga, sampeyan bisa ngetokake perintah zcat kanggo mbukak teks sing ora dibungkus menyang memori kanthi siji langkah. Ing conto ing ngisor iki, tinimbang nyithak teks menyang layar, sampeyan bakal ngarahake menyang file anyar sing disebut server.conf:

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

Ayo nyingkirake dokumentasi ekstensif lan mbiyantu sing kasedhiya karo file kasebut lan deleng kaya apa yen sampeyan wis rampung nyunting. Elinga yen titik koma (;) ngandhani OpenVPN supaya ora maca utawa nglakokake baris sabanjure (Listing 10.2).

Buku "Linux in Action"
Ayo goleki sawetara setelan kasebut.

  • Kanthi gawan, OpenVPN mbukak ing port 1194. Sampeyan bisa ngganti iki, contone, kanggo luwih ndhelikake aktivitas utawa supaya konflik karo trowongan aktif liyane. Wiwit 1194 mbutuhake koordinasi minimal karo klien, luwih becik ditindakake kanthi cara iki.
  • OpenVPN nggunakake Transmission Control Protocol (TCP) utawa User Datagram Protocol (UDP) kanggo ngirim data. TCP bisa uga rada alon, nanging luwih dipercaya lan luwih bisa dimangerteni dening aplikasi sing mlaku ing loro ujung trowongan.
  • Sampeyan bisa nemtokake dev tun nalika sampeyan pengin nggawe terowongan IP sing luwih prasaja lan efisien sing nggawa isi data lan ora liya. Yen, ing tangan liyane, sampeyan kudu nyambungake macem-macem antarmuka jaringan (lan jaringan sing diwakili), nggawe jembatan Ethernet, sampeyan kudu milih dev tap. Yen sampeyan ora ngerti apa tegese iki, gunakake argumen tun.
  • Patang baris sabanjure menehi OpenVPN jeneng telung file otentikasi ing server lan file pilihan dh2048 sing digawe sadurunge.
  • Baris server nyetel jangkoan lan subnet mask sing bakal digunakake kanggo nemtokake alamat IP menyang klien nalika mlebu.
  • Parameter push opsional "rute 10.0.3.0 255.255.255.0" ngidini klien remot ngakses subnet pribadi ing mburi server. Nggawe karya iki uga mbutuhake nyetel jaringan ing server dhewe supaya subnet pribadi ngerti babagan subnet OpenVPN (10.8.0.0).
  • Baris port-share localhost 80 ngidini sampeyan ngarahake lalu lintas klien sing teka ing port 1194 menyang server web lokal sing ngrungokake port 80. (Iki bakal migunani yen sampeyan arep nggunakake server web kanggo nyoba VPN sampeyan.) Iki mung bisa digunakake banjur nalika protokol tcp dipilih.
  • Ora ana pangguna lan baris nogroup grup kudu diaktifake kanthi mbusak titik koma (;). Meksa klien remot kanggo mbukak minangka ora ana wong lan nogroup mesthekake yen sesi ing server ora duwe hak istimewa.
  • log nemtokake manawa entri log saiki bakal nimpa entri lawas saben OpenVPN diwiwiti, dene log-append nambahake entri anyar menyang file log sing ana. File openvpn.log dhewe ditulis ing direktori /etc/openvpn/.

Kajaba iku, nilai klien-kanggo-klien uga asring ditambahake menyang file konfigurasi supaya akeh klien bisa ndeleng siji liyane saliyane server OpenVPN. Yen sampeyan wareg karo konfigurasi sampeyan, sampeyan bisa miwiti server OpenVPN:

# systemctl start openvpn

Amarga owah-owahan saka hubungan antarane OpenVPN lan systemd, sintaks ing ngisor iki kadhangkala dibutuhake kanggo miwiti layanan: systemctl miwiti openvpn@server.

Mbukak ip addr kanggo dhaptar antarmuka jaringan server saiki kudu ngasilake link menyang antarmuka anyar sing diarani tun0. OpenVPN bakal nggawe kanggo nglayani klien sing mlebu:

$ 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

Sampeyan bisa uga kudu urip maneh server sadurunge kabeh bisa digunakake kanthi lengkap. Titik sabanjure yaiku komputer klien.

10.1.2. Konfigurasi klien OpenVPN

Cara tradisional, trowongan dibangun kanthi paling ora rong lawang (yen ora, kita bakal ngarani guwa). OpenVPN sing dikonfigurasi kanthi bener ing server ngarahake lalu lintas mlebu lan metu saka trowongan ing sisih siji. Nanging sampeyan uga mbutuhake sawetara piranti lunak sing mlaku ing sisih klien, yaiku, ing sisih liya trowongan.

Ing bagean iki, aku bakal fokus ing nyetel sawetara jinis komputer Linux kanthi manual kanggo tumindak minangka klien OpenVPN. Nanging iki ora mung cara sing kasedhiya kesempatan iki. OpenVPN ndhukung aplikasi klien sing bisa diinstal lan digunakake ing desktop lan laptop sing nganggo Windows utawa macOS, uga smartphone lan tablet Android lan iOS. Deleng openvpn.net kanggo rincian.

Paket OpenVPN kudu diinstal ing mesin klien amarga wis diinstal ing server, sanajan ora perlu gampang-rsa kene amarga tombol sing sampeyan gunakake wis ana. Sampeyan kudu nyalin file cithakan client.conf menyang direktori /etc/openvpn/ sing lagi wae digawe. Wektu iki file kasebut ora bakal di-zip, mula perintah cp biasa bakal nindakake tugas kasebut kanthi becik:

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

Umume setelan ing file client.conf sampeyan bakal cukup jelas: kudu cocog karo nilai ing server. Nalika sampeyan bisa ndeleng saka file conto ing ngisor iki, parameter unik remot 192.168.1.23 1194, kang ngandhani klien alamat IP saka server. Maneh, priksa manawa iki alamat server sampeyan. Sampeyan uga kudu meksa komputer klien kanggo verifikasi keaslian sertifikat server kanggo nyegah serangan man-in-the-middle. Salah siji cara kanggo nindakake iki yaiku nambahake server remot-cert-tls baris (Listing 10.3).

Buku "Linux in Action"
Sampeyan saiki bisa pindhah menyang direktori /etc/openvpn/ lan extract kunci sertifikasi saka server. Ganti alamat IP server utawa jeneng domain ing conto karo nilai sampeyan:

Buku "Linux in Action"
Ora ana sing nyenengake bakal kedadeyan nganti sampeyan mbukak OpenVPN ing klien. Amarga sampeyan kudu ngliwati sawetara argumen, sampeyan bakal nindakake saka baris printah. Argumen --tls-client ngandhani OpenVPN yen sampeyan bakal dadi klien lan nyambung liwat enkripsi TLS, lan --config nunjukake file konfigurasi sampeyan:

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

Waca output printah kasebut kanthi teliti kanggo mesthekake yen sampeyan wis disambungake kanthi bener. Yen ana sing salah nalika sepisanan, bisa uga amarga ora cocog ing setelan antarane file konfigurasi server lan klien utawa masalah sambungan jaringan/firewall. Kene sawetara tips ngatasi masalah.

  • Waca kanthi teliti output operasi OpenVPN ing klien. Asring ngemot saran penting babagan apa sing ora bisa ditindakake lan kenapa.
  • Priksa pesen kesalahan ing file openvpn.log lan openvpn-status.log ing direktori /etc/openvpn/ ing server.
  • Priksa log sistem ing server lan klien kanggo pesen sing gegandhengan karo OpenVPN lan wektu. (journalctl -ce bakal nampilake entri paling anyar.)
  • Priksa manawa sampeyan duwe sambungan jaringan aktif ing antarane server lan klien (liyane babagan iki ing Bab 14).

Babagan penulis

David Clinton - administrator sistem, guru lan panulis. Dheweke wis ngatur, nulis, lan nggawe materi pendidikan kanggo akeh disiplin teknis sing penting, kalebu sistem Linux, komputasi awan (utamane AWS), lan teknologi wadah kayata Docker. Dheweke nulis buku Sinau Layanan Web Amazon ing Wulan Makan Siang (Manning, 2017). Akeh kursus latihan video sing bisa ditemokake ing Pluralsight.com, lan pranala menyang buku liyane (ing administrasi Linux lan virtualisasi server) kasedhiya ing bootstrap-it.com.

Β» Rincian liyane babagan buku bisa ditemokake ing situs web penerbit
Β» Daftar Isi
Β» Kutipan

Kanggo Khabrozhiteley diskon 25% nggunakake kupon - Linux
Sawise mbayar versi kertas buku kasebut, buku elektronik bakal dikirim liwat e-mail.

Source: www.habr.com

Add a comment