Tempah "Linux in Action"

Tempah "Linux in Action" Hello, penduduk Khabro! Dalam buku itu, David Clinton menerangkan 12 projek kehidupan sebenar, termasuk mengautomasikan sistem sandaran dan pemulihan anda, menyediakan awan fail peribadi gaya Dropbox dan mencipta pelayan MediaWiki anda sendiri. Anda akan meneroka virtualisasi, pemulihan bencana, keselamatan, sandaran, DevOps dan penyelesaian masalah sistem melalui kajian kes yang menarik. Setiap bab diakhiri dengan semakan amalan terbaik, glosari istilah baharu dan latihan.

Petikan β€œ10.1. Mencipta terowong OpenVPN"

Saya sudah banyak bercakap tentang penyulitan dalam buku ini. SSH dan SCP boleh melindungi data yang dipindahkan melalui sambungan jauh (Bab 3), penyulitan fail boleh melindungi data semasa ia disimpan pada pelayan (Bab 8), dan sijil TLS/SSL boleh melindungi data yang dipindahkan antara tapak dan pelayar klien (Bab 9) . Tetapi kadangkala data anda perlu dilindungi merentasi rangkaian sambungan yang lebih luas. Sebagai contoh, mungkin sesetengah ahli pasukan anda bekerja di jalan raya sambil menyambung ke Wi-Fi melalui hotspot awam. Anda pastinya tidak sepatutnya menganggap bahawa semua titik akses sedemikian adalah selamat, tetapi orang anda memerlukan cara untuk menyambung kepada sumber syarikatβ€”dan di situlah VPN boleh membantu.

Terowong VPN yang direka dengan betul menyediakan sambungan terus antara pelanggan jauh dan pelayan dengan cara yang menyembunyikan data semasa ia bergerak melalui rangkaian yang tidak selamat. Jadi apa? Anda telah melihat banyak alat yang boleh melakukan ini dengan penyulitan. Nilai sebenar VPN ialah dengan membuka terowong, anda boleh menyambungkan rangkaian jauh seolah-olah semuanya tempatan. Dari satu segi, anda menggunakan pintasan.

Menggunakan rangkaian lanjutan ini, pentadbir boleh melaksanakan kerja mereka pada pelayan mereka dari mana-mana sahaja. Tetapi yang lebih penting, syarikat dengan sumber yang tersebar merentasi pelbagai lokasi boleh menjadikan mereka semua kelihatan dan boleh diakses oleh semua kumpulan yang memerlukannya, di mana sahaja mereka berada (Rajah 10.1).

Terowong itu sendiri tidak menjamin keselamatan. Tetapi salah satu piawaian penyulitan boleh dimasukkan ke dalam struktur rangkaian, yang meningkatkan tahap keselamatan dengan ketara. Terowong yang dibuat menggunakan pakej OpenVPN sumber terbuka menggunakan penyulitan TLS/SSL yang sama yang telah anda baca. OpenVPN bukan satu-satunya pilihan terowong yang tersedia, tetapi ia adalah salah satu yang paling terkenal. Ia dianggap lebih pantas sedikit dan lebih selamat daripada protokol terowong Lapisan 2 alternatif yang menggunakan penyulitan IPsec.

Adakah anda mahu semua orang dalam pasukan anda berkomunikasi dengan selamat antara satu sama lain semasa di jalan raya atau bekerja di bangunan yang berbeza? Untuk melakukan ini, anda perlu mencipta pelayan OpenVPN untuk membenarkan perkongsian aplikasi dan akses kepada persekitaran rangkaian tempatan pelayan. Untuk ini berfungsi, semua yang anda perlu lakukan ialah menjalankan dua mesin maya atau dua bekas: satu untuk bertindak sebagai pelayan/hos dan satu untuk bertindak sebagai pelanggan. Membina VPN bukanlah proses yang mudah, jadi mungkin perlu mengambil masa beberapa minit untuk mendapatkan gambaran besar dalam fikiran.

Tempah "Linux in Action"

10.1.1. Konfigurasi Pelayan OpenVPN

Sebelum anda memulakan, saya akan memberikan anda beberapa nasihat berguna. Jika anda akan melakukannya sendiri (dan saya sangat mengesyorkan anda melakukannya), anda mungkin akan mendapati diri anda bekerja dengan berbilang tetingkap terminal terbuka pada Desktop anda, masing-masing disambungkan ke mesin yang berbeza. Terdapat risiko bahawa pada satu ketika anda akan memasukkan arahan yang salah ke dalam tetingkap. Untuk mengelakkan ini, anda boleh menggunakan arahan nama hos untuk menukar nama mesin yang dipaparkan pada baris arahan kepada sesuatu yang memberitahu anda dengan jelas di mana anda berada. Sebaik sahaja anda melakukan ini, anda perlu log keluar dari pelayan dan log masuk semula untuk tetapan baharu berkuat kuasa. Inilah rupanya:

Tempah "Linux in Action"
Dengan mengikuti pendekatan ini dan memberikan nama yang sesuai untuk setiap mesin yang anda gunakan, anda boleh menjejaki di mana anda berada dengan mudah.

Selepas menggunakan nama hos, anda mungkin menghadapi mesej Tidak Dapat Menyelesaikan Host OpenVPN-Server yang menjengkelkan apabila melaksanakan arahan berikutnya. Mengemas kini fail /etc/hosts dengan nama hos baharu yang sesuai harus menyelesaikan isu tersebut.

Menyediakan pelayan anda untuk OpenVPN

Untuk memasang OpenVPN pada pelayan anda, anda memerlukan dua pakej: openvpn dan easy-rsa (untuk mengurus proses penjanaan kunci penyulitan). Pengguna CentOS harus terlebih dahulu memasang repositori epel-release jika perlu, seperti yang anda lakukan dalam Bab 2. Untuk dapat menguji akses kepada aplikasi pelayan, anda juga boleh memasang pelayan web Apache (apache2 pada Ubuntu dan httpd pada CentOS).

Semasa anda menyediakan pelayan anda, saya syorkan mengaktifkan tembok api yang menyekat semua port kecuali 22 (SSH) dan 1194 (port lalai OpenVPN). Contoh ini menggambarkan bagaimana ufw akan berfungsi pada Ubuntu, tetapi saya pasti anda masih ingat program firewalld CentOS daripada Bab 9:

# ufw enable
# ufw allow 22
# ufw allow 1194

Untuk mendayakan penghalaan dalaman antara antara muka rangkaian pada pelayan, anda perlu menyahkomen satu baris (net.ipv4.ip_forward = 1) dalam fail /etc/sysctl.conf. Ini akan membolehkan pelanggan jauh diubah hala mengikut keperluan setelah mereka disambungkan. Untuk membuat pilihan baharu berfungsi, jalankan sysctl -p:

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

Persekitaran pelayan anda kini dikonfigurasikan sepenuhnya, tetapi masih ada satu lagi perkara yang perlu dilakukan sebelum anda bersedia: anda perlu melengkapkan langkah berikut (kami akan membincangkannya secara terperinci seterusnya).

  1. Buat satu set kunci penyulitan infrastruktur kunci awam (PKI) pada pelayan menggunakan skrip yang disediakan dengan pakej easy-rsa. Pada asasnya, pelayan OpenVPN juga bertindak sebagai pihak berkuasa sijil (CA) sendiri.
  2. Sediakan kunci yang sesuai untuk pelanggan
  3. Konfigurasikan fail server.conf untuk pelayan
  4. Sediakan klien OpenVPN anda
  5. Semak VPN anda

Menjana kunci penyulitan

Untuk memastikan perkara mudah, anda boleh menyediakan infrastruktur utama anda pada mesin yang sama di mana pelayan OpenVPN sedang berjalan. Walau bagaimanapun, amalan terbaik keselamatan biasanya mencadangkan menggunakan pelayan CA yang berasingan untuk penggunaan pengeluaran. Proses menjana dan mengedarkan sumber utama penyulitan untuk digunakan dalam OpenVPN digambarkan dalam Rajah. 10.2.

Tempah "Linux in Action"
Apabila anda memasang OpenVPN, direktori /etc/openvpn/ telah dibuat secara automatik, tetapi tiada apa-apa lagi di dalamnya. Pakej openvpn dan easy-rsa disertakan dengan contoh fail templat yang boleh anda gunakan sebagai asas untuk konfigurasi anda. Untuk memulakan proses pensijilan, salin direktori templat easy-rsa dari /usr/share/ ke /etc/openvpn dan tukar ke direktori easy-rsa/:

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

Direktori easy-rsa kini akan mengandungi beberapa skrip. Dalam jadual 10.1 menyenaraikan alatan yang akan anda gunakan untuk mencipta kunci.

Tempah "Linux in Action"

Operasi di atas memerlukan keistimewaan root, jadi anda perlu menjadi root melalui sudo su.

Fail pertama yang anda akan bekerjasama dipanggil vars dan mengandungi pembolehubah persekitaran yang mudah-rsa gunakan semasa menjana kunci. Anda perlu mengedit fail untuk menggunakan nilai anda sendiri dan bukannya nilai lalai yang sudah ada. Beginilah rupa fail saya (Penyenaraian 10.1).

Penyenaraian 10.1. Serpihan utama fail /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"

Menjalankan fail vars akan menghantar nilainya ke persekitaran shell, di mana ia akan dimasukkan ke dalam kandungan kunci baharu anda. Mengapa arahan sudo tidak berfungsi dengan sendirinya? Kerana pada langkah pertama kita mengedit skrip bernama vars dan kemudian menerapkannya. Memohon dan bermakna fail vars menghantar nilainya ke persekitaran shell, di mana ia akan dimasukkan ke dalam kandungan kunci baharu anda.

Pastikan anda menjalankan semula fail menggunakan cangkerang baharu untuk menyelesaikan proses yang belum selesai. Apabila ini selesai, skrip akan menggesa anda untuk menjalankan skrip lain, bersih-semua, untuk mengalih keluar sebarang kandungan dalam direktori /etc/openvpn/easy-rsa/keys/:

Tempah "Linux in Action"
Sememangnya, langkah seterusnya ialah menjalankan skrip bersih-semua, diikuti dengan build-ca, yang menggunakan skrip pkitool untuk mencipta sijil akar. Anda akan diminta untuk mengesahkan tetapan identiti yang disediakan oleh vars:

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

Seterusnya, skrip bina-kunci-pelayan. Memandangkan ia menggunakan skrip pkitool yang sama bersama-sama dengan sijil akar baharu, anda akan melihat soalan yang sama untuk mengesahkan penciptaan pasangan kunci. Kekunci akan dinamakan berdasarkan hujah yang anda berikan, yang, melainkan anda menjalankan berbilang VPN pada mesin ini, biasanya akan menjadi pelayan, seperti dalam contoh:

# ./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 menggunakan parameter yang dijana oleh algoritma Diffie-Hellman (menggunakan build-dh) untuk merundingkan pengesahan untuk sambungan baharu. Fail yang dibuat di sini tidak perlu dirahsiakan, tetapi mesti dijana menggunakan skrip build-dh untuk kunci RSA yang sedang aktif. Jika anda mencipta kunci RSA baharu pada masa hadapan, anda juga perlu mengemas kini fail Diffie-Hellman:

# ./build-dh

Kekunci sisi pelayan anda kini akan berada dalam direktori /etc/openvpn/easy-rsa/keys/, tetapi OpenVPN tidak mengetahui perkara ini. Secara lalai, OpenVPN akan mencari kunci dalam /etc/openvpn/, jadi salinnya:

# 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

Menyediakan Kunci Penyulitan Pelanggan

Seperti yang telah anda lihat, penyulitan TLS menggunakan pasangan kunci yang sepadan: satu dipasang pada pelayan dan satu dipasang pada klien jauh. Ini bermakna anda memerlukan kunci pelanggan. Rakan lama kami pkitool adalah apa yang anda perlukan untuk ini. Dalam contoh ini, apabila kami menjalankan program dalam direktori /etc/openvpn/easy-rsa/, kami menyampaikan hujah klien untuk menjana fail yang dipanggil client.crt dan client.key:

# ./pkitool client

Kedua-dua fail klien, bersama-sama dengan fail ca.crt asal yang masih dalam kekunci/ direktori, kini harus dipindahkan dengan selamat kepada klien anda. Disebabkan oleh pemilikan dan hak akses mereka, ini mungkin tidak begitu mudah. Pendekatan paling mudah ialah dengan menyalin kandungan fail sumber secara manual (dan tiada apa-apa selain kandungan itu) ke dalam terminal yang berjalan pada desktop PC anda (pilih teks, klik kanan padanya dan pilih Salin daripada menu). Kemudian tampal ini ke dalam fail baharu dengan nama yang sama yang anda buat dalam terminal kedua yang disambungkan kepada pelanggan anda.

Tetapi sesiapa sahaja boleh memotong dan menampal. Sebaliknya, berfikir seperti pentadbir kerana anda tidak akan sentiasa mempunyai akses kepada GUI di mana operasi potong/tampal boleh dilakukan. Salin fail ke direktori utama pengguna anda (supaya operasi scp jauh boleh mengaksesnya), dan kemudian gunakan chown untuk menukar pemilikan fail daripada root kepada pengguna bukan root biasa supaya tindakan scp jauh boleh dilakukan. Pastikan semua fail anda dipasang dan boleh diakses pada masa ini. Anda akan memindahkannya kepada pelanggan sedikit kemudian:

# 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

Dengan set penuh kunci penyulitan sedia untuk digunakan, anda perlu memberitahu pelayan cara anda ingin mencipta VPN. Ini dilakukan menggunakan fail server.conf.

Mengurangkan bilangan ketukan kekunci

Adakah terlalu banyak menaip? Pengembangan dengan kurungan akan membantu mengurangkan enam perintah ini kepada dua. Saya pasti anda boleh mengkaji dua contoh ini dan memahami perkara yang berlaku. Lebih penting lagi, anda akan dapat memahami cara menggunakan prinsip ini pada operasi yang melibatkan puluhan atau bahkan ratusan elemen:

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

Menyediakan fail server.conf

Bagaimanakah anda boleh mengetahui rupa fail server.conf? Ingat templat direktori easy-rsa yang anda salin daripada /usr/share/? Apabila anda memasang OpenVPN, anda ditinggalkan dengan fail templat konfigurasi termampat yang boleh anda salin ke /etc/openvpn/. Saya akan membina fakta bahawa templat itu diarkibkan dan memperkenalkan anda kepada alat yang berguna: zcat.

Anda sudah tahu tentang mencetak kandungan teks fail ke skrin menggunakan arahan kucing, tetapi bagaimana jika fail itu dimampatkan menggunakan gzip? Anda sentiasa boleh unzip fail dan kemudian kucing akan mengeluarkannya dengan senang hati, tetapi itu satu atau dua langkah lagi daripada yang diperlukan. Sebaliknya, seperti yang anda duga, anda boleh mengeluarkan arahan zcat untuk memuatkan teks yang tidak dibungkus ke dalam memori dalam satu langkah. Dalam contoh berikut, bukannya mencetak teks ke skrin, anda akan mengubah hala ke fail baharu yang dipanggil server.conf:

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

Mari kita ketepikan dokumentasi yang luas dan berguna yang disertakan bersama fail dan lihat rupanya apabila anda selesai mengedit. Ambil perhatian bahawa koma bertitik (;) memberitahu OpenVPN untuk tidak membaca atau melaksanakan baris seterusnya (Penyenaraian 10.2).

Tempah "Linux in Action"
Mari kita lihat beberapa tetapan ini.

  • Secara lalai, OpenVPN berjalan pada port 1194. Anda boleh menukar ini, sebagai contoh, untuk menyembunyikan lagi aktiviti anda atau mengelakkan konflik dengan terowong aktif lain. Memandangkan 1194 memerlukan penyelarasan minimum dengan pelanggan, sebaiknya lakukan dengan cara ini.
  • OpenVPN menggunakan sama ada Transmission Control Protocol (TCP) atau User Datagram Protocol (UDP) untuk menghantar data. TCP mungkin sedikit perlahan, tetapi ia lebih dipercayai dan lebih berkemungkinan untuk difahami oleh aplikasi yang dijalankan pada kedua-dua hujung terowong.
  • Anda boleh menentukan dev tun apabila anda ingin mencipta terowong IP yang lebih ringkas dan cekap yang membawa kandungan data dan tiada yang lain. Jika, sebaliknya, anda perlu menyambungkan berbilang antara muka rangkaian (dan rangkaian yang diwakilinya), mencipta jambatan Ethernet, anda perlu memilih ketik dev. Jika anda tidak faham maksud semua ini, gunakan hujah tun.
  • Empat baris seterusnya memberikan OpenVPN nama bagi tiga fail pengesahan pada pelayan dan fail pilihan dh2048 yang anda buat sebelum ini.
  • Barisan pelayan menetapkan julat dan topeng subnet yang akan digunakan untuk memberikan alamat IP kepada pelanggan semasa log masuk.
  • Parameter tolak pilihan "laluan 10.0.3.0 255.255.255.0" membolehkan pelanggan jauh mengakses subnet peribadi di belakang pelayan. Membuat kerja ini juga memerlukan menyediakan rangkaian pada pelayan itu sendiri supaya subnet peribadi mengetahui tentang subnet OpenVPN (10.8.0.0).
  • Barisan port-share localhost 80 membolehkan anda mengubah hala trafik klien yang datang pada port 1194 kepada pelayan web tempatan yang mendengar pada port 80. (Ini akan berguna jika anda akan menggunakan pelayan web untuk menguji VPN anda.) Ini hanya berfungsi maka apabila protokol tcp dipilih.
  • Nobody pengguna dan baris nogroup kumpulan mesti didayakan dengan mengalih keluar koma bertitik (;). Memaksa pelanggan jauh untuk dijalankan sebagai tiada siapa dan tiada kumpulan memastikan bahawa sesi pada pelayan tidak mendapat hak istimewa.
  • log menentukan bahawa entri log semasa akan menulis ganti entri lama setiap kali OpenVPN dimulakan, manakala log-tambah menambahkan entri baharu pada fail log sedia ada. Fail openvpn.log itu sendiri ditulis ke direktori /etc/openvpn/.

Selain itu, nilai klien-ke-klien juga sering ditambahkan pada fail konfigurasi supaya berbilang pelanggan boleh melihat satu sama lain sebagai tambahan kepada pelayan OpenVPN. Jika anda berpuas hati dengan konfigurasi anda, anda boleh memulakan pelayan OpenVPN:

# systemctl start openvpn

Disebabkan oleh perubahan sifat perhubungan antara OpenVPN dan systemd, sintaks berikut kadangkala diperlukan untuk memulakan perkhidmatan: systemctl start openvpn@server.

Menjalankan ip addr untuk menyenaraikan antara muka rangkaian pelayan anda kini seharusnya mengeluarkan pautan ke antara muka baharu yang dipanggil tun0. OpenVPN akan menciptanya untuk melayani pelanggan masuk:

$ 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

Anda mungkin perlu but semula pelayan sebelum semuanya mula berfungsi sepenuhnya. Perhentian seterusnya ialah komputer pelanggan.

10.1.2. Mengkonfigurasi klien OpenVPN

Secara tradisinya, terowong dibina dengan sekurang-kurangnya dua jalan keluar (jika tidak, kami akan memanggilnya gua). OpenVPN yang dikonfigurasikan dengan betul pada pelayan mengarahkan lalu lintas masuk dan keluar dari terowong pada satu sisi. Tetapi anda juga memerlukan beberapa perisian yang dijalankan di bahagian pelanggan, iaitu, di hujung terowong yang lain.

Dalam bahagian ini, saya akan menumpukan pada menyediakan beberapa jenis komputer Linux secara manual untuk bertindak sebagai klien OpenVPN. Tetapi ini bukan satu-satunya cara di mana peluang ini tersedia. OpenVPN menyokong aplikasi klien yang boleh dipasang dan digunakan pada desktop dan komputer riba yang menjalankan Windows atau macOS, serta telefon pintar dan tablet Android dan iOS. Lihat openvpn.net untuk butiran.

Pakej OpenVPN perlu dipasang pada mesin klien kerana ia dipasang pada pelayan, walaupun tidak ada keperluan untuk mudah-rsa di sini kerana kunci yang anda gunakan sudah wujud. Anda perlu menyalin fail templat client.conf ke direktori /etc/openvpn/ yang baru anda buat. Kali ini fail tidak akan dizip, jadi arahan cp biasa akan melakukan kerja dengan baik:

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

Kebanyakan tetapan dalam fail client.conf anda cukup jelas: ia sepatutnya sepadan dengan nilai pada pelayan. Seperti yang anda boleh lihat daripada contoh fail berikut, parameter unik adalah jauh 192.168.1.23 1194, yang memberitahu klien alamat IP pelayan. Sekali lagi, pastikan ini adalah alamat pelayan anda. Anda juga harus memaksa komputer pelanggan untuk mengesahkan ketulenan sijil pelayan untuk mengelakkan kemungkinan serangan lelaki di tengah. Satu cara untuk melakukan ini ialah menambah pelayan remote-cert-tls talian (Penyenaraian 10.3).

Tempah "Linux in Action"
Anda kini boleh pergi ke direktori /etc/openvpn/ dan mengekstrak kunci pensijilan daripada pelayan. Gantikan alamat IP pelayan atau nama domain dalam contoh dengan nilai anda:

Tempah "Linux in Action"
Tiada apa-apa yang menarik mungkin akan berlaku sehingga anda menjalankan OpenVPN pada klien. Oleh kerana anda perlu meluluskan beberapa hujah, anda akan melakukannya dari baris arahan. Argumen --tls-client memberitahu OpenVPN bahawa anda akan bertindak sebagai pelanggan dan menyambung melalui penyulitan TLS, dan --config menunjuk ke fail konfigurasi anda:

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

Baca output arahan dengan teliti untuk memastikan anda disambungkan dengan betul. Jika berlaku kesilapan pada kali pertama, ia mungkin disebabkan oleh ketidakpadanan dalam tetapan antara fail konfigurasi pelayan dan klien atau sambungan rangkaian/isu tembok api. Berikut ialah beberapa petua penyelesaian masalah.

  • Baca dengan teliti output operasi OpenVPN pada klien. Ia sering mengandungi nasihat berharga tentang perkara yang tidak boleh dilakukan dan mengapa.
  • Semak mesej ralat dalam fail openvpn.log dan openvpn-status.log dalam direktori /etc/openvpn/ pada pelayan.
  • Semak log sistem pada pelayan dan klien untuk mesej berkaitan OpenVPN dan bermasa. (journalctl -ce akan memaparkan entri terkini.)
  • Pastikan anda mempunyai sambungan rangkaian aktif antara pelayan dan klien (lebih lanjut mengenai perkara ini dalam Bab 14).

Mengenai pengarang

David Clinton - pentadbir sistem, guru dan penulis. Beliau telah mentadbir, menulis tentang dan mencipta bahan pendidikan untuk banyak disiplin teknikal yang penting, termasuk sistem Linux, pengkomputeran awan (terutamanya AWS), dan teknologi kontena seperti Docker. Dia menulis buku Learn Amazon Web Services in a Month of Lunches (Manning, 2017). Banyak kursus latihan video beliau boleh didapati di Pluralsight.com, dan pautan ke buku beliau yang lain (mengenai pentadbiran Linux dan virtualisasi pelayan) boleh didapati di bootstrap-it.com.

Β» Butiran lanjut tentang buku boleh didapati di laman web penerbit
Β» jadual kandungan
Β» Petikan

Untuk Khabrozhiteley diskaun 25% menggunakan kupon - Linux
Selepas pembayaran versi kertas buku itu, buku elektronik akan dihantar melalui e-mel.

Sumber: www.habr.com

Tambah komen