One place for hosting & domains

      Menyiapkan

      Cara Menyiapkan dan Mengonfigurasi Otoritas Sertifikat (CA) Pada Ubuntu 20.04


      Pengantar

      Otoritas Sertifikat (CA) adalah entitas yang bertanggung jawab untuk menerbitkan sertifikat digital untuk memverifikasi identitas di internet. Meskipun CA publik adalah pilihan populer untuk memverifikasi identitas dari situs web dan layanan lainnya yang disediakan ke masyarakat umum, CA privat digunakan untuk grup tertutup dan layanan privat.

      Membangun Otoritas Sertifikat privat akan memungkinkan Anda mengonfigurasi, menguji, dan menjalankan program yang membutuhkan koneksi terenkripsi antara klien dan server. Menggunakan CA privat, Anda dapat menerbitkan sertifikat untuk pengguna, server, atau masing-masing program di dalam infrastruktur Anda.

      Beberapa contoh program pada Linux yang menggunakan CA privat miliknya sendiri adalah OpenVPN dan Puppet. Anda juga dapat mengonfigurasi server web Anda untuk menggunakan sertifikat yang diterbitkan oleh CA privat untuk membuat lingkungan pengembangan dan penahapan sesuai dengan server produksi yang menggunakan TLS untuk mengenkripsi koneksi.

      Dalam panduan ini, kita akan mempelajari cara menyiapkan Otoritas Sertifikat (CA) privat pada server Ubuntu 20.04, dan cara membuat dan menandatangani sertifikat pengujian menggunakan CA baru. Anda juga akan mempelajari cara mengimpor sertifikat publik dari server CA ke dalam penyimpanan sertifikat sistem operasi sehingga Anda dapat memverifikasi rantai kepercayaan antara server jauh dan CA atau pengguna. Terakhir, Anda akan mempelajari cara mencabut sertifikat dan mendistribusikan Daftar Pencabutan Sertifikat untuk memastikan bahwa hanya pengguna dan sistem resmi dapat menggunakan layanan yang bergantung pada CA Anda.

      Prasyarat

      Untuk menyelesaikan tutorial ini, Anda akan membutuhkan akses ke server Ubuntu 20.04 untuk menjadi hos dari server CA Anda. Anda perlu mengonfigurasi pengguna non-root dengan privilese sudo sebelum Anda memulai panduan ini. Anda dapat mengikuti panduan penyiapan server awal Ubuntu 20.04 dari kami untuk menyiapkan pengguna dengan izin yang sesuai. Tutorial terkait yang juga akan menyiapkan firewall, yang diasumsikan sudah siap di seluruh panduan ini.

      Server ini akan disebut sebagai Server CA dalam tutorial ini.

      Pastikan bahwa Server CA adalah sistem yang berdiri sendiri. Ini hanya akan digunakan untuk mengimpor, menandatangani, dan mencabut permintaan sertifikat. Server Ini tidak boleh menjalankan layanan lainnya, dan idealnya akan nonaktif atau sepenuhnya mati saat Anda tidak aktif bekerja dengan CA Anda.

      Catatan: Bagian terakhir dari tutorial ini bersifat opsional seandainya Anda ingin mempelajari cara menandatangani dan mencabut sertifikat. Jika Anda memilih untuk menyelesaikan langkah-langkah latihan itu, Anda akan membutuhkan server Ubuntu 20.04 kedua atau Anda juga dapat menggunakan komputer Linux lokal milik Anda yang menjalankan Ubuntu atau Debian, atau distribusi yang diturunkan dari salah satunya.

      Langkah 1 — Menginstal Easy-RSA

      Tugas pertama dalam tutorial ini adalah menginstal serangkaian skrip easy-rsa pada Server CA Anda. easy-rsa adalah alat manajemen Otoritas Sertifikat yang akan Anda gunakan untuk membuat kunci privat, dan sertifikat root publik, yang kemudian Anda akan gunakan untuk menandatangani permintaan dari klien dan server yang akan bergantung pada CA Anda.

      Log masuk ke Server CA Anda sebagai pengguna sudo non-root yang Anda buat selama langkah penyiapan awal dan jalankan yang berikut:

      • sudo apt update
      • sudo apt install easy-rsa

      Anda akan diminta mengunduh paket dan menginstalnya. Tekan y untuk mengonfirmasi bahwa Anda ingin menginstal paket.

      Pada titik ini, Anda sudah menyiapkan segala sesuatu yang Anda perlukan dan siap menggunakan Easy-RSA. Pada langkah selanjutnya, Anda akan membuat Infrastruktur Kunci Publik, lalu mulai membangun Otoritas Sertifikat Anda.

      Langkah 2 — Mempersiapkan Direktori infrastruktur Kunci Publik

      Kini setelah Anda menginstal easy-rsa, tiba waktunya untuk membuat kerangka Infrastruktur Kunci Publik (PKI) di dalam Server CA. Pastikan bahwa Anda masih log masuk sebagai pengguna non-root Anda dan buat direktori easy-rsa. Pastikan bahwa Anda tidak menggunakan sudo untuk menjalankan salah satu perintah berikut, karena pengguna normal Anda harus mengelola dan berinteraksi dengan CA tanpa privilese yang ditingkatkan.

      Ini akan menciptakan direktori baru bernama easy-rsa di dalam folder rumah Anda. Kita akan menggunakan direktori ini untuk membuat tautan simbolis yang mengarah ke berkas paket easy-rsa yang kita telah instal pada langkah sebelumnya. Berkas-berkas ini berada di dalam folder /usr/share/easy-rsa di Server CA.

      Buat symlink dengan perintah ln:

      • ln -s /usr/share/easy-rsa/* ~/easy-rsa/

      Catatan: Walaupun panduan lain mungkin menginstruksikan Anda untuk menyalin berkas paket easy-rsa ke direktori PKI Anda, tutorial ini mengadopsi pendekatan symlink. Hasilnya, pembaruan apa pun ke paket easy-rsa akan secara otomatis tercermin pada skrip PKI Anda.

      Untuk membatasi akses ke direktori PKI yang baru, pastikan bahwa hanya pemilik yang dapat mengaksesnya menggunakan perintah chmod:

      • chmod 700 /home/sammy/easy-rsa

      Terakhir, inisialisasi PKI di dalam direktori easy-rsa:

      • cd ~/easy-rsa
      • ./easyrsa init-pki

      Output

      init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /home/sammy/easy-rsa/pki

      Setelah menyelesaikan bagian ini, Anda memiliki direktori yang memuat semua berkas yang dibutuhkan untuk membuat Otoritas Sertifikat. Pada bagian selanjutnya, Anda akan membuat kunci privat dan sertifikat publik untuk CA Anda.

      Langkah 3 — Membuat Otoritas Sertifikat

      Sebelum Anda dapat membuat kunci dan sertifikat privat CA, Anda perlu membuat dan mengisi berkas yang bernama vars dengan beberapa nilai asali. Pertama-tama, Anda akan memasukkan cd ke direktori easy-rsa, lalu Anda akan membuat dan mengedit berkas vars menggunakan nano atau editor teks pilihan Anda:

      Setelah berkas dibuka, rekatkan di baris berikut ini dan edit masing-masing nilai yang disorot untuk mencerminkan info organisasi Anda. Bagian penting di sini adalah memastikan bahwa Anda tidak meninggalkan nilai kosong apa pun:

      ~/easy-rsa/vars

      set_var EASYRSA_REQ_COUNTRY "US" set_var EASYRSA_REQ_PROVINCE "NewYork" set_var EASYRSA_REQ_CITY "New York City" set_var EASYRSA_REQ_ORG "DigitalOcean" set_var EASYRSA_REQ_EMAIL "admin@example.com" set_var EASYRSA_REQ_OU "Community" set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"

      Setelah Anda selesai, simpan dan tutup berkas. Jika Anda menggunakan nano, Anda dapat melakukan itu dengan menekan CTRL+X, lalu Y, dan ENTER untuk mengonfirmasi. Anda kini siap untuk membangun CA Anda.

      Untuk membuat pasangan kunci root publik dan privat pada Otoritas Sertifikat Anda, jalankan perintah ./easy-rsa lagi, kali ini dengan opsi build-ca:

      Pada keluaran, Anda akan melihat beberapa baris tentang versi OpenSSL dan Anda akan diminta memasukkan frasa sandi untuk pasangan kunci Anda. Pastikan untuk memilih frasa sandi yang kuat, dan catat di tempat yang aman. Anda akan perlu memasukkan frasa sandi setiap kali Anda perlu berinteraksi dengan CA, misalnya untuk menandatangani atau mencabut sertifikat.

      Anda juga akan diminta untuk mengonfirmasi Nama Umum (CN) untuk CA Anda. CN adalah nama yang digunakan untuk merujuk ke mesin ini dalam konteks Otoritas Sertifikat. Anda dapat memasukkan rangkaian karakter apa pun untuk Nama Umum CA, tetapi untuk menyederhanakan, tekan ENTER untuk menerima nama asali.

      Output

      . . . Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: . . . Common Name (eg: your user, host, or server name) [Easy-RSA CA]: CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /home/sammy/easy-rsa/pki/ca.crt

      Catatan: Jika Anda tidak ingin diminta memasukkan kata sandi setiap kali Anda berinteraksi dengan CA, Anda dapat menjalankan perintah build-ca dengan opsi nopass, seperti ini:

      • ./easyrsa build-ca nopass

      Anda kini memiliki dua berkas penting — ~/easy-rsa/pki/ca.crt dan ~/easy-rsa/pki/private/ca.key — yang menjadi komponen privat dan publik dari Otoritas Sertifikat.

      • ca.crt adalah berkas sertifikat publik dari CA. Pengguna, server, dan klien akan menggunakan sertifikat ini untuk memverifikasi bahwa mereka adalah bagian dari jaringan kepercayaan yang sama. Setiap pengguna dan server yang menggunakan CA Anda perlu memiliki salinan dari berkas ini. Semua pihak akan bergantung pada sertifikat publik untuk memastikan bahwa seseorang tidak meniru suatu sistem dan melakukan Serangan orang-di-tengah.

      • ca.key adalah kunci privat yang digunakan CA untuk menandatangani sertifikat server dan klien. Jika penyerang memperoleh akses ke CA Anda dan, pada gilirannya, berkas ca.key, Anda harus menghancurkan CA Anda. Inilah sebabnya berkas ca.key Anda harus berada hanya di dalam mesin CA Anda dan, idealnya, mesin CA Anda harus tetap nonaktif saat tidak menandatangani permintaan sertifikat sebagai tindakan keamanan ekstra.

      Dengan demikian, CA Anda sudah berada di tempatnya dan siap digunakan untuk menandatangani permintaan sertifikat dan mencabut sertifikat.

      Langkah 4 — Mendistribusikan Sertifikat Publik dari Otoritas Sertifikat Anda

      Kini CA Anda sudah terkonfigurasi dan siap untuk bertindak sebagai root kepercayaan untuk sistem apa pun yang Anda ingin konfigurasi untuk menggunakannya. Anda dapat menambah sertifikat CA ke server OpenVPN, server web, server surel, dan sebagainya. Pengguna atau server apa pun yang perlu memverifikasi identitas pengguna atau server lain di dalam jaringan Anda harus memiliki salinan berkas ca.crt yang diimpor ke dalam penyimpanan sertifikat dari sistem operasinya.

      Untuk mengimpor sertifikat publik CA menjadi sistem Linux kedua seperti server lokal atau komputer lokal, pertama-tama dapatkan salinan dari berkas CA ca.crt dari server CA Anda. Anda dapat menggunakan perintah cat untuk mengeluarkannya pada suatu terminal, lalu rekatkan ke dalam berkas pada komputer kedua yang mengimpor sertifikat. Anda juga dapat menggunakan alat seperti scp dan rsync untuk mentransfer berkas di antara beberapa sistem. Namun, kita akan menggunakan salin dan rekat dengan nano pada langkah ini karena itu akan bekerja pada semua sistem.

      Sebagai pengguna non-root pada Server CA Anda, jalankan perintah berikut:

      • cat ~/easy-rsa/pki/ca.crt

      Akan ada keluaran di terminal Anda yang mirip dengan berikut ini:

      Output

      -----BEGIN CERTIFICATE----- MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQEL BQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw . . . . . . -----END CERTIFICATE-----

      Salin segalanya, termasuk garis dan tanda hubung pada -----BEGIN CERTIFICATE----- dan -----END CERTIFICATE-----.

      Pada sistem Linux kedua, gunakan nano atau editor teks pilihan Anda untuk membuka berkas yang bernama /tmp/ca.crt:

      Tempelkan konten yang Anda baru saja salin dari Server CA ke dalam editor. Setelah Anda selesai, simpan dan tutup berkas. Jika Anda menggunakan nano, Anda dapat melakukan itu dengan menekan CTRL+X, lalu Y, dan ENTER untuk mengonfirmasi.

      Karena kini Anda memiliki salinan dari berkas ca.crt pada sistem Linux kedua, kini saatnya mengimpor sertifikat ke dalam penyimpanan sertifikat dari sistem operasinya.

      Pada sistem yang berbasis Ubuntu dan Debian, jalankan perintah berikut sebagai pengguna non-root untuk mengimpor sertifikat:

      Ubuntu and Debian derived distributions

      • sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
      • sudo update-ca-certificates

      Untuk mengimpor sertifikat Server CA pada sistem berbasis CentOS, Fedora, atau RedHat, salin dan rekatkan konten berkas pada sistem ini seperti dalam contoh sebelumnya di dalam berkas yang bernama /tmp/ca.cert. Selanjutnya, Anda akan menyalin sertifikat itu ke dalam /etc/pki/ca-trust/source/anchors/, lalu jalankan perintah update-ca-trust.

      CentOS, Fedora, RedHat distributions

      • sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
      • sudo update-ca-trust

      Sekarang sistem Linux kedua Anda akan memercayai sertifikat apa pun yang telah ditandatangani oleh server CA itu.

      Catatan: Jika Anda menggunakan CA dengan server web dan Firefox sebagai peramban, Anda perlu mengimpor sertifikat ca.crt publik secara langsung ke dalam Firefox. Firefox tidak menggunakan penyimpanan sertifikat dari sistem operasi lokal. Untuk detail tentang cara menambah sertifikat CA Anda ke Firefox, lihat artikel dukungan ini dari Mozilla yang tentang Menyiapkan Otoritas Sertifikat (CA) pada Firefox.

      Jika Anda menggunakan CA untuk berintegrasi dengan lingkungan Windows atau komputer desktop, lihat dokumentasi tentang cara menggunakan certutil.exe untuk menginstal sertifikat CA.

      Jika Anda menggunakan tutorial ini sebagai prasyarat untuk tutorial lain, atau tidak asing dengan cara menandatangani dan mencabut sertifikat, Anda dapat berhenti di sini. Jika Anda ingin belajar lebih lanjut tentang cara menandatangani dan mencabut sertifikat, bagian opsional berikut akan menjelaskan masing-masing proses itu secara mendetail.

      (Opsional) — Membuat Permintaan Penandatanganan Sertifikat dan Mencabut Sertifikat

      Bagian berikut dari tutorial ini bersifat opsional. Jika Anda telah menyelesaikan semua langkah sebelumnya, Anda memiliki Otoritas Sertifikat yang telah terkonfigurasi dan berfungsi sepenuhnya sehingga Anda dapat menggunakannya sebagai prasyarat untuk tutorial lain. Anda dapat mengimpor berkas ca.crt dan memverifikasi sertifikat di dalam jaringan Anda yang telah ditandatangani oleh CA Anda.

      Jika Anda ingin berlatih dan belajar lebih lanjut tentang cara menandatangani permintaan sertifikat dan cara mencabut sertifikat, bagian opsional ini akan menjelaskan bagaimana kedua proses itu berjalan.

      (Opsional) — Membuat dan Menandatangani Permintaan Sertifikat Latihan

      Kini setelah Anda memiliki CA yang siap digunakan, Anda dapat berlatih membuat kunci dan permintaan sertifikat privat untuk membiasakan diri dengan proses penandatanganan dan distribusi.

      Permintaan Penandatanganan Sertifikat (CSR) terdiri dari tiga bagian: kunci publik, mengidentifikasi informasi tentang sistem permintaan, dan penandatanganan dari permintaan itu sendiri, yang dibuat menggunakan kunci privat dari pihak yang meminta. Kunci privat akan dirahasiakan dan digunakan untuk mengenkripsi informasi bahwa siapa pun yang memiliki sertifikat publik yang ditandatangani dapat mendekripsi.

      Langkah-langkah berikut akan dijalankan pada sistem Ubuntu atau Debian kedua Anda, atau distribusi yang berasal dari salah satunya. Ini dapat berupa server jauh lain, atau mesin Linux lokal seperti laptop atau komputer desktop. Karena easy-rsa tidak tersedia secara asali pada semua sistem, kita akan menggunakan alat openssl untuk membuat kunci dan sertifikat privat latihan.

      openssl biasanya terinstal secara asali pada sebagian besar distribusi Linux, tetapi hanya untuk memastikan, jalankan berikut ini pada sistem Anda:

      • sudo apt update
      • sudo apt install openssl

      Saat diminta untuk menginstal openssl, masukkan y untuk melanjutkan dengan langkah instalasi. Kini Anda siap untuk membuat CSR latihan dengan openssl.

      Langkah pertama yang Anda perlu selesaikan untuk membuat CSR adalah membuat kunci privat. Untuk membuat kunci privat menggunakan openssl, buat direktori practice-csr, lalu buat kunci di dalamnya. Kita akan membuat permintaan ini untuk server fiksi bernama sammy-server, dan bukannya membuat sertifikat yang digunakan untuk mengidentifikasi pengguna atau CA lain.

      • mkdir ~/practice-csr
      • cd ~/practice-csr
      • openssl genrsa -out sammy-server.key

      Output

      Generating RSA private key, 2048 bit long modulus (2 primes) . . . . . . e is 65537 (0x010001)

      Karena kini Anda memiliki kunci privat, Anda dapat membuat CSR yang sesuai, menggunakan utilitas openssl lagi. Anda akan diminta mengisi beberapa bidang seperti Country, State, dan City. Anda dapat memasukkan . jika Anda ingin membiarkan suatu bidang tetap kosong, tetapi berhati-hatilah bahwa jika ini adalah CSR yang nyata, sebaiknya gunakan nilai yang benar untuk lokasi dan organisasi Anda:

      • openssl req -new -key sammy-server.key -out sammy-server.req

      Output

      . . . ----- Country Name (2 letter code) [XX]:US State or Province Name (full name) []:New York Locality Name (eg, city) [Default City]:New York City Organization Name (eg, company) [Default Company Ltd]:DigitalOcean Organizational Unit Name (eg, section) []:Community Common Name (eg, your name or your server's hostname) []:sammy-server Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:

      Jika Anda ingin secara otomatis menambah nilai-nilai itu sebagai bagian dari permohonan openssl alih-alih melalui prompt interaktif, Anda dapat melewatkan argumen -subj ke OpenSSL. Pastikan untuk mengedit nilai yang disorot supaya sesuai dengan lokasi latihan, organisasi, dan nama server Anda:

      • openssl req -new -key sammy-server.key -out server.req -subj
      • /C=US/ST=New York/L=New York City/O=DigitalOcean/OU=Community/CN=sammy-server

      Untuk memverifikasi konten dari suatu CSR, Anda dapat membaca berkas permintaan dengan openssl dan memeriksa bidang-bidang di dalamnya:

      • openssl req -in sammy-server.req -noout -subject

      Output

      subject=C = US, ST = New York, L = New York City, O = DigitalOcean, OU = Community, CN = sammy-server

      Setelah Anda puas dengan subjek dari permintaan sertifikat latihan, salin berkas sammy-server.req ke server CA Anda menggunakan scp:

      • scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req

      Dalam langkah ini, Anda membuat Permintaan Penandatanganan Sertifikat untuk server fiksi bernama sammy-server. Dalam skenario dunia nyata, permintaan itu mungkin berasal dari sesuatu seperti server web pengembangan atau penahapan yang membutuhkan sertifikat TLS untuk menguji; atau dapat berasal dari server OpenVPN yang meminta suatu sertifikat sehingga pengguna dapat terhubung ke VPN. Pada langkah selanjutnya, kita akan melanjutkan ke menandatangani permintaan penandatanganan sertifikat menggunakan kunci privat dari Server CA.

      (Opsional) — Menandatangani CSR

      Pada langkah sebelumnya, Anda membuat permintaan sertifikat latihan dan kunci untuk server fiksi. Anda menyalinnya ke direktori /tmp pada server CA, yang mengemulasi proses yang Anda akan gunakan jika Anda memiliki klien atau server nyata yang mengirimi Anda permintaan CSR yang perlu ditandatangani.

      Melanjutkan skenario fiksi, sekarang Server CA perlu mengimpor sertifikat latihan dan menandatanganinya. Setelah permintaan sertifikat divalidasi oleh CA dan dikembalikan ke server, klien yang memercayai Otoritas Sertifikat juga akan dapat memercayai sertifikat yang baru diterbitkan.

      Karena kita akan beroperasi di dalam PKI dari CA tempat utilitas easy-rsa tersedia, langkah-langkah penandatanganan akan menggunakan utilitas easy-rsa untuk memudahkan, dibanding menggunakan openssl secara langsung seperti yang kita lakukan pada contoh sebelumnya.

      Langkah pertama untuk menandatangani CSR fiksi ini adalah mengimpor permintaan sertifikat menggunakan skrip easy-rsa:

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/sammy-server.req sammy-server

      Output

      . . . The request has been successfully imported with a short name of: sammy-server You may now use this name to perform signing operations on this request.

      Sekarang Anda dapat menandatangani permintaan itu dengan menjalankan skrip easyrsa menggunakan opsi sign-req, diikuti oleh jenis permintaan dan Nama Umum yang disertakan di dalam CSR. Jenis permintaan dapat berupa salah satu dari client, server, atau ca. Karena kita sedang berlatih dengan sertifikat untuk server fiksi, pastikan untuk menggunakan jenis permintaan server:

      • ./easyrsa sign-req server sammy-server

      Pada keluaran, Anda akan diminta memverifikasi bahwa permintaan itu berasal dari sumber tepercaya. Ketik yes, lalu tekan ENTER untuk mengonfirmasi ini:

      Output

      You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 3650 days: subject= commonName = sammy-server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/sammy-server.crt

      Jika Anda mengenkripsi kunci CA, Anda akan diminta memasukkan kata sandi pada titik ini.

      Dengan selesainya langkah-langkah ini, Anda telah menandatangani CSR sammy-server.req menggunakan kunci privat dari Server CA dalam /home/sammy/easy-rsa/pki/private/ca.key. Berkas sammy-server.crt yang dihasilkan memuat kunci enkripsi publik dari server latihan serta tanda tangan baru dari server CA. Maksud dari tanda tangan adalah memberi tahu siapa pun yang memercayai CA bahwa mereka juga dapat memercayai sertifikat sammy-server.

      Jika permintaan ini benar-benar untuk server web atau server VPN, langkah terakhir pada Server CA adalah mendistribusikan berkas sammy-server.crt dan ca.crt yang baru dari Server CA ke server jauh yang membuat permintaan CA:

      • scp pki/issued/sammy-server.crt sammy@your_server_ip:/tmp
      • scp pki/ca.crt sammy@your_server_ip:/tmp

      Pada titik ini, Anda dapat menggunakan sertifikat yang diterbitkan dengan sesuatu seperti server web, VPN, alat manajemen konfigurasi, sistem basis data, atau untuk autentikasi klien.

      (Opsional) — Mencabut Sertifikat

      Terkadang, Anda mungkin perlu mencabut sertifikat untuk mencegah pengguna atau server menggunakannya. Mungkin laptop seseorang dicuri, server web bocor, atau karyawan maupun kontraktor telah meninggalkan organisasi Anda.

      Untuk mencabut sertifikat, proses umum mengikuti langkah-langkah ini:

      1. Cabut sertifikat dengan perintah ./easyrsa revoke client_name.
      2. Buat CRL baru dengan perintah ./easyrsa gen-crl.
      3. Transfer berkas crl.pem yang diperbarui ke server yang bergantung pada CA Anda, dan pada sistem itu, salinlah ke direktori yang diperlukan atau direktori untuk program-program yang merujuk kepadanya.
      4. Mulai ulang layanan apa pun yang menggunakan CA dan berkas CRL Anda.

      Anda dapat menggunakan proses ini untuk mencabut sertifikat apa pun yang Anda telah terbitkan sebelumnya kapan saja. Kita akan membahas setiap langkah secara detail pada bagian berikut, mulai dari perintah revoke.

      Mencabut Sertifikat

      Untuk mencabut sertifikat, bernavigasilah ke direktori easy-rsa di server CA Anda:

      Selanjutnya, jalankan skrip easyrsa dengan opsi revoke, diikuti dengan nama klien yang Anda ingin cabut. Mengikuti contoh latihan di atas, Nama Umum sertifikat adalah sammy-server:

      • ./easyrsa revoke sammy-server

      Ini akan meminta Anda untuk mengonfirmasi pencabutan dengan mengetikyes:

      Output

      Please confirm you wish to revoke the certificate with the following subject: subject= commonName = sammy-server Type the word 'yes' to continue, or any other input to abort. Continue with revocation: yes . . . Revoking Certificate 8348B3F146A765581946040D5C4D590A . . .

      Perhatikan nilai yang disorot pada baris Revoking Certificate. Nilai ini adalah nomor seri unik dari sertifikat yang sedang dicabut. Jika Anda ingin memeriksa daftar pencabutan pada langkah terakhir dari bagian ini untuk memverifikasi bahwa sudah sertifikat berada di dalamnya, Anda akan membutuhkan nilai ini.

      Setelah mengonfirmasi tindakan, CA akan mencabut sertifikat. Namun, sistem jauh yang bergantung pada CA tidak memiliki cara untuk memeriksa apakah ada sertifikat yang telah dicabut. Pengguna dan server masih akan dapat menggunakan sertifikat sampai Daftar Pencabutan Sertifikat (CRL) dari CA diedarkan ke semua sistem yang bergantung pada CA itu.

      Pada langkah selanjutnya, Anda akan membuat CRL atau memperbarui berkas crl.pem yang sudah ada.

      Membuat Daftar Pencabutan Sertifikat

      Karena kini Anda telah mencabut sertifikat, penting untuk memperbarui daftar sertifikat yang dicabut pada server CA Anda. Setelah Anda memiliki daftar pencabutan yang diperbarui, Anda akan dapat memberi tahu pengguna dan sistem yang memiliki sertifikat valid di CA Anda.

      Untuk membuat CRL, jalankan perintah easy-rsa dengan opsi gen-crl saat masih di dalam direktori ~/easy-rsa:

      Jika Anda telah menggunakan frasa sandi saat membuat berkas ca.key, Anda akan diminta untuk memasukkannya. Perintah gen-crl akan membuat berkas yang bernama crl.pem, yang memuat daftar sertifikat yang dicabut yang telah diperbarui untuk CA itu.

      Selanjutnya, Anda perlu mentransfer berkas crl.pem yang diperbarui ke semua server dan klien yang bergantung pada CA ini setiap kali Anda menjalankan perintah gen-crl. Jika tidak, klien dan sistem akan masih dapat mengakses layanan dan sistem yang menggunakan CA Anda, karena layanan tersebut perlu mengetahui status sertifikat yang telah dicabut.

      Mentransfer Daftar Pencabutan Sertifikat

      Karena kini Anda telah membuat CRL pada server CA, Anda perlu mentransfernya ke sistem jauh yang bergantung pada CA Anda. Untuk mentransfer berkas ini ke server, Anda dapat menggunakan perintah scp.

      Catatan: Tutorial ini menjelaskan cara membuat dan mendistribusikan CRL secara manual. Walaupun ada metode yang lebih kuat dan otomatis untuk mendistribusikan dan memeriksa daftar pencabutan seperti OCSP-Stapling, mengonfigurasi metode tersebut tidak termasuk dalam cakupan artikel ini.

      Pastikan Anda log masuk ke server CA Anda sebagai pengguna non-root dan jalankan berikut ini, mengganti nama IP server atau nama DNS Anda sebagai pengganti your_server_ip:

      • scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp

      Kini setelah berkas tersebut berada di sistem jauh, langkah terakhir adalah memperbarui layanan apa pun dengan salinan baru dari daftar pencabutan.

      Memperbarui Layanan yang Mendukung CRL

      Membuat daftar langkah-langkah yang Anda perlu gunakan untuk memperbarui layanan yang menggunakan berkas crl.pem tidak termasuk dalam cakupan tutorial ini. Secara umum, Anda akan perlu menyalin berkas crl.pem ke lokasi yang diharapkan layanan, lalu memulai ulang menggunakan systemctl.

      Setelah Anda memperbarui layanan Anda dengan berkas crl.pem yang baru, layanan Anda akan dapat menolak koneksi dari klien atau server yang menggunakan sertifikat telah dicabut.

      Memeriksa dan Memverifikasi Konfigurasi CRL

      Jika Anda ingin memeriksa berkas CRL, misalnya untuk mengonfirmasi daftar sertifikat yang sudah dicabut, gunakan perintah openssl berikut ini dari dalam direktori easy-rsa pada server CA Anda:

      • cd ~/easy-rsa
      • openssl crl -in pki/crl.pem -noout -text

      Anda juga dapat menjalankan perintah ini pada server atau sistem apa pun yang telah menginstal alat openssl dengan salinan berkas crl.pem. Sebagai contoh, jika Anda mentransfer berkas crl.pem ke sistem kedua dan ingin memverifikasi bahwa sertifikat sammy-server sudah dicabut, Anda dapat menggunakan perintah openssl seperti berikut ini, mengganti nomor seri yang Anda catat sebelumnya ketika Anda mencabut sertifikat sebagai pengganti yang disorot di sini:

      • openssl crl -in /tmp/crl.pem -noout -text |grep -A 1 8348B3F146A765581946040D5C4D590A

      Output

      Serial Number: 8348B3F146A765581946040D5C4D590A Revocation Date: Apr 1 20:48:02 2020 GMT

      Perhatikan bagaimana perintah grep digunakan untuk memeriksa nomor seri unik yang Anda catat dalam langkah pencabutan. Sekarang Anda dapat memverifikasi konten dari Daftar Pencabutan Sertifikat Anda pada sistem apa pun yang bergantung padanya untuk membatasi akses ke pengguna dan layanan.

      Kesimpulan

      Dalam tutorial ini, Anda telah membuat Otoritas Sertifikat privat menggunakan paket Easy-RSA pada server mandiri Ubuntu 20.04. Anda telah mempelajari cara kerja model kepercayaan di antara pihak-pihak yang bergantung pada CA. Anda juga telah membuat dan menandatangani Permintaan Penandatanganan Sertifikat (CSR) untuk server latihan, lalu mempelajari cara mencabut sertifikat. Terakhir, Anda telah mempelajari cara membuat dan mendistribusikan Daftar Pencabutan Sertifikat (CRL) untuk sistem apa pun yang bergantung pada CA Anda untuk memastikan bahwa pengguna atau server yang tidak boleh mengakses layanan tersebut sudah dicegah untuk melakukan hal itu.

      Sekarang, Anda dapat menerbitkan sertifikat untuk pengguna dan menggunakannya dengan layanan seperti OpenVPN. Anda juga dapat menggunakan CA untuk mengonfigurasi pengembangan dan penahapan server web dengan sertifikat untuk mengamankan lingkungan nonproduksi Anda. Menggunakan CA dengan sertifikat TLS selama pengembangan dapat membantu memastikan bahwa kode dan lingkungan Anda cocok dengan lingkungan produksi Anda semirip mungkin.

      Jika Anda ingin mempelajari lebih lanjut tentang cara menggunakan OpenSSL, tutorial Esensial OpenSSL: Bekerja dengan Sertifikat SSL, Kunci Privat, dan CSR dari kami memiliki banyak informasi tambahan untuk membantu Anda lebih memahami dasar-dasar OpenSSL.



      Source link

      Cara Menyiapkan dan Mengonfigurasi Server OpenVPN pada Ubuntu 20.04


      Pengantar

      Jaringan Privat Virtual (VPN) memungkinkan Anda menjelajahi jaringan tidak tepercaya seolah-olah Anda berada di suatu jaringan privat. Ini memberi Anda kebebasan untuk mengakses internet dengan aman dan selamat dari ponsel cerdas atau laptop Anda saat terhubung ke jaringan yang tidak tepercaya, seperti WiFi di hotel atau kedai kopi.

      Saat dikombinasikan dengan koneksi HTTPS, penyiapan ini memungkinkan Anda mengamankan log masuk nirkabel dan transaksi Anda. Anda dapat memintas batasan geografis dan penyensoran, serta melindungi lokasi Anda dan segala lalu lintas HTTP yang tidak terenkripsi dari jaringan yang tidak tepercaya.

      OpenVPN adalah solusi VPN Transport Layer Security (TLS) sumber terbuka lengkap yang mengakomodasi beragam konfigurasi. Dalam tutorial ini, Anda akan menyiapkan OpenVPN pada server Ubuntu 20.04, lalu mengonfigurasinya supaya dapat diakses dari mesin klien.

      Catatan: Jika Anda berencana menyiapkan Server OpenVPN pada DigitalOcean Droplet, mohon diketahui bahwa kami, seperti banyak penyedia layanan hos lain, mengenakan biaya penggunaan bandwidth yang berlebih. Karena alasan ini, harap Anda perhatikan seberapa banyak lalu lintas yang ditangani server Anda.

      Lihat laman ini untuk info lebih lanjut.

      Prasyarat

      Untuk mengikuti tutorial ini, Anda akan membutuhkan:

      Catatan: Walaupun secara teknis memungkinkan untuk menggunakan Server OpenVPN Anda atau mesin lokal Anda sebagai CA, ini tidak disarankan karena membuka VPN Anda kepada beberapa kerentanan keamanan. Sesuai dokumentasi OpenVPN resmi, Anda harus menempatkan CA Anda pada mesin mandiri yang dikhususkan untuk mengimpor dan menandatangani permintaan sertifikat. Karena alasan ini, panduan ini mengasumsikan bahwa CA Anda berada pada server Ubuntu 20.04 terpisah yang juga memiliki pengguna non-root dengan privilese sudo dan firewall dasar yang sudah diaktifkan.

      Selain itu, Anda akan membutuhkan mesin klien yang Anda akan gunakan untuk terhubung ke Server OpenVPN Anda. Dalam panduan ini, kita akan menyebutnya Klien OpenVPN. Untuk tutorial ini, sebaiknya Anda menggunakan mesin lokal Anda sebagai klien OpenVPN.

      Setelah prasyarat ini terpenuhi, Anda siap untuk mulai menyiapkan dan mengonfigurasi Server OpenVPN pada Ubuntu 20.04.

      Catatan: Harap diperhatikan bahwa jika Anda menonaktifkan autentikasi kata sandi saat mengonfigurasi server ini, Anda mungkin akan mengalami kesulitan ketika mentransfer berkas di antara beberapa server pada panduan ini. Untuk menyelesaikan masalah ini, Anda dapat mengaktifkan kembali autentikasi kata sandi pada masing-masing server. Sebagai alternatif, Anda dapat menghasilkan pasangan kunci SSH untuk masing-masing server, lalu tambahkan kunci SSH publik pada Server OpenVPN ke berkas authorized_keys milik mesin CA dan sebaliknya. Lihat Cara Menyiapkan Kunci SSH pada Ubuntu 20.04 untuk instruksi tentang cara melakukan salah satu dari solusi ini.

      Langkah 1 — Menginstal OpenVPN dan Easy-RSA

      Langkah pertama dalam tutorial ini adalah menginstal OpenVPN dan Easy-RSA. Easy-RSA adalah alat manajemen infrastruktur kunci publik (PKI) yang Anda akan gunakan pada Server OpenVPN untuk menghasilkan permintaan sertifikat yang selanjutnya Anda akan verifikasi dan tanda tangani pada Server CA.

      Untuk memulai, perbarui indeks paket Server OpenVPN Anda serta instal OpenVPN dan Easy-RSA. Kedua paket itu tersedia di repositori asali Ubuntu, sehingga Anda dapat menggunakan apt untuk instalasi:

      • sudo apt update
      • sudo apt install openvpn easy-rsa

      Selanjutnya, Anda perlu menciptakan direktori baru pada Server OpenVPN sebagai pengguna non-root yang bernama ~/easy-rsa:

      Sekarang Anda perlu membuat symlink dari skrip easyrsa yang diinstal paket ke direktori ~/easy-rsa yang baru saja Anda buat:

      • ln -s /usr/share/easy-rsa/* ~/easy-rsa/

      Catatan: Walaupun panduan lain mungkin menginstruksikan Anda untuk menyalin berkas paket easy-rsa ke direktori PKI Anda, tutorial ini mengadopsi pendekatan symlink. Hasilnya, pembaruan apa pun pada paket easy-rsa akan secara otomatis tercermin pada skrip PKI Anda.

      Terakhir, pastikan pemilik direktor adalah pengguna sudo non-root Anda dan batasi akses ke pengguna itu menggunakan chmod:

      • sudo chown sammy ~/easy-rsa
      • chmod 700 ~/easy-rsa

      Setelah program-program ini terinstal dan dipindahkan ke lokasi yang tepat pada sistem Anda, langkah selanjutnya adalah membuat Infrastruktur Kunci Publik (PKI) di server OpenVPN supaya Anda dapat meminta dan mengelola sertifikat TLS untuk klien dan server lain yang akan terhubung ke VPN Anda.

      Langkah 2 — Menciptakan PKI untuk OpenVPN

      Sebelum Anda dapat membuat kunci dan sertifikat privat dari server OpenVPN, Anda perlu membuat direktori Infrastruktur Kunci Publik lokal pada server OpenVPN Anda. Anda akan menggunakan direktori ini untuk mengelola permintaan sertifikat server dan klien alih-alih membuatnya secara langsung pada server CA Anda.

      Untuk membangun direktori PKI pada server OpenVPN, Anda perlu mengisi berkas bernama vars dengan beberapa nilai asali. Pertama-tama, Anda akan memasukkan cd ke direktori easy-rsa, lalu Anda akan menciptakan dan mengedit berkas vars menggunakan nano atau editor teks pilihan Anda.

      Setelah berkas dibuka, lekatkan dua baris berikut:

      ~/easy-rsa/vars

      set_var EASYRSA_ALGO "ec"
      set_var EASYRSA_DIGEST "sha512"
      

      Hanya dua baris inilah yang Anda butuhkan di dalam berkas vars di server OpenVPN Anda karena tidak akan digunakan sebagai Otoritas Sertifikat. Kedua baris ini akan memastikan bahwa permintaan kunci dan sertifikat privat Anda dikonfigurasi untuk menggunakan Elliptic Curve Cryptography (ECC) yang menghasilkan kunci dan tanda tangan aman untuk klien dan server OpenVPN Anda.

      Mengonfigurasi server OpenVPN dan CA Anda untuk menggunakan ECC berarti bahwa ketika klien dan server berupaya membuat kunci simetris bersama, kedua sever itu dapat menggunakan algoritma Elliptic Curve untuk melakukan pertukaran di antara keduanya. Menggunakan ECC untuk pertukaran kunci secara signifikan lebih cepat daripada menggunakan Diffie-Hellman biasa dengan algoritma RSA klasik, karena angka-angkanya jauh lebih kecil dan komputasinya lebih cepat.

      Latar Belakang: Ketika terhubung ke OpenVPN, klien menggunakan enkripsi asimetris (juga dikenal sebagai kunci publik/privat) untuk melakukan TLS handshake. Namun, ketika mengirim lalu lintas VPN terenkripsi, server dan klien menggunakan enkripsi simetris, yang juga dikenal sebagai enkripsi kunci bersama.

      Ada beban operasi komputasional yang lebih sedikit dengan enkripsi simetris dibandingkan asimetris: angka-angka yang digunakan jauh lebih kecil, dan CPU modern mengintegrasikan instruksi untuk melakukan operasi enkripsi simetris yang dioptimalkan. Untuk membuat peralihan dari enkripsi asimetris ke enkripsi simetris, server dan klien OpenVPN akan menggunakan algoritma Eliptic Curve Diffie-Hellman (ECDH) untuk menyetujui kunci rahasia bersama secepat mungkin.

      Setelah Anda mengisi berkas vars, Anda dapat melanjutkan dengan menciptakan direktori PKI. Untuk melakukan itu, jalankan skrip easyrsa dengan opsi init-pki. Meskipun Anda telah menjalankan perintah ini pada server CA sebagai bagian dari prasyarat, ini perlu dijalankan di sini karena server OpenVPN dan server CA memiliki direktori PKI terpisah:

      Perhatikan bahwa pada server OpenVPN, Anda tidak perlu menciptakan Otoritas Sertifikat. Server CA Anda hanya bertanggung jawab atas pemvalidasian dan penandatanganan sertifikat. PKI pada server VPN Anda hanya digunakan sebagai tempat yang sesuai dan tersentralisasi untuk menyimpan permintaan sertifikat dan sertifikat publik.

      Setelah Anda menginisialisasi PKI pada server OpenVPN, Anda siap untuk melanjutkan ke langkah selanjutnya, yaitu menciptakan permintaan sertifikat server OpenVPN dan kunci privat.

      Langkah 3 — Menciptakan Permintaan Sertifikat dan Kunci Privat Server OpenVPN

      Karena sekarang semua prasyarat untuk server OpenVPN sudah terinstal, langkah selanjutnya adalah membuat kunci privat dan Permintaan Penandatanganan Serfifikat (CSR) di server OpenVPN Anda. Setelah itu, Anda akan mentransfer permintaan ke CA Anda untuk ditandatangani, yang membuat sertifikat yang dibutuhkan. Setelah Anda menandatangani sertifikat, Anda akan mentransfernya kembali ke server OpenVPN dan menginstalnya untuk digunakan server itu.

      Untuk memulai, bernavigasilah ke direktori ~/easy-rsa di Server OpenVPN Anda sebagai pengguna non-root:

      Sekarang Anda akan memanggil easyrsa dengan opsi gen-req yang diikuti dengan Nama Umum (CN) untuk mesin itu. CN bisa apa pun yang Anda sukai, tetapi akan membantu jika menggunakan sesuatu yang lebih deskriptif. Dalam tutorial ini, CN dari Server OpenVPN adalah server. Pastikan untuk memasukkan opsi nopass juga. Jika itu gagal dilakukan, berkas permintaan akan dilindungi dengan kata sandi sehingga bisa menyebabkan masalah izin nantinya.

      Catatan: Jika Anda memilih nama selain dari server di sini, Anda harus menyesuaikan beberapa instruksi di bawah ini. Misalnya, saat menyalin berkas yang dihasilkan ke direktori /etc/openvpn, Anda harus mengganti dengan nama yang benar. Anda juga harus mengubah berkas /etc/openvpn/server.conf nantinya untuk menunjuk ke berkas .crt dan .key yang benar.

      • ./easyrsa gen-req server nopass

      Output

      Common Name (eg: your user, host, or server name) [server]: Keypair and certificate request completed. Your files are: req: /home/sammy/easy-rsa/pki/reqs/server.req key: /home/sammy/easy-rsa/pki/private/server.key

      Ini akan menciptakan kunci privat untuk server dan suatu berkas permintaan sertifikat yang bernama server.req. Salin kunci server ke direktori /etc/openvpn/server:

      • sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/

      Setelah menyelesaikan langkah-langkah ini, Anda telah berhasil menciptakan kunci privat untuk server OpenVPN. Anda juga harus membuat Permintaan Penandatangan Sertifikat (CSR) untuk server OpenVPN. CSR sekarang siap untuk penandatanganan oleh CA Anda. Pada bagian selanjutnya dalam tutorial ini, Anda akan belajar cara menandatangani CSR dengan kunci privat server CA Anda.

      Langkah 4 — Menandatangani Permintaan Sertifikat Server OpenVPN

      Dalam langkah sebelumnya, Anda telah membuat Permintaan Penandatanganan Sertifikat (CSR) dan kunci privat untuk server OpenVPN. Sekarang, server CA harus mengetahui sertifikat server dan memvalidasinya. Setelah CA memvalidasi dan mengirimkan kembali sertifikat ke server OpenVPN, klien yang memercayai CA Anda akan dapat memercayai server OpenVPN juga.

      Pada server OpenVPN, sebagai pengguna non-root, gunakan SCP atau metode transfer lain untuk menyalin permintaan sertifikat server.req ke server CA untuk penandatanganan:

      • scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp

      Jika Anda sudah mengikuti tutorial prasyarat Cara Menyiapkan dan Mengonfigurasi Otoritas Sertifikat (CA) pada Ubuntu 20.04 langkah selanjutnya adalah log masuk ke server CA sebagai pengguna non-root yang Anda ciptakan untuk mengelola CA Anda. Anda akan memasukkan cd ke direktori ~/easy-rsa tempat Anda membuat PK, lalu mengimpor permintaan sertifikat menggunakan skrip easyrsa:

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/server.req server

      Output

      . . . The request has been successfully imported with a short name of: server You may now use this name to perform signing operations on this request.

      Selanjutnya, tanda tangani permintaan dengan menjalankan skrip easyrsa menggunakan opsi sign-req, diikuti oleh tipe permintaan dan Nama Umum. Tipe permintaan dapat berupa klien atau server. Karena kita bekerja dengan permintaan sertfikat server OpenVPN, pastikan Anda menggunakan tipe permintaan server:

      • ./easyrsa sign-req server server

      Pada keluaran, Anda akan diminta memverifikasi bahwa permintaan itu berasal dari sumber tepercaya. Ketik yes, lalu tekan ENTER untuk mengonfirmasi:

      Output

      You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 3650 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt

      Perhatikan bahwa jika Anda mengenkripsi kunci privat CA, Anda akan diminta memasukkan kata sandi Anda pada langkah ini.

      Setelah langkah-langkah itu selesai, Anda telah menandatangani permintaan sertifikat server OpenVPN menggunakan kunci privat server CA. Berkas server.crt yang dihasilkan memuat kunci enkripsi publik dari server OpenVPN dan juga tanda tangan dari server CA. Maksud tanda tangan adalah memberi tahu siapa pun yang memercayai server CA bahwa mereka juga dapat memercayai server OpenVPN saat mereka terhubung dengannya.

      Untuk menyelesaikan pengonfigurasian sertifikat, salin berkasserver.crt dan ca.crt dari server CA ke server OpenVPN:

      • scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
      • scp pki/ca.crt sammy@your_vpn_server_ip:/tmp

      Sekarang kita kembali ke server OpenVPN Anda, salin berkas dari /tmp ke /etc/openvpn/server:

      • sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

      Sekarang server OpenVPN Anda hampir siap menerima koneksi. Pada langkah selanjutnya, Anda akan melakukan langkah-langkah tambahan untuk meningkatkan keamanan server.

      Langkah 5 — Mengonfigurasi Materi Kriptografis OpenVPN

      Untuk lapisan keamanan tambahan, kita akan menambah kunci rahasia bersama ekstra yang akan digunakan server dan semua klien dengan arahan tls-crypt dari OpenVPN. Opsi ini digunakan untuk mengaburkan sertifikat TLS yang digunakan saat server dan klien saling terhubung pada awalnya. Ini juga digunakan oleh server OpenVPN untuk melakukan pemeriksaan cepat pada paket masuk: jika paket ditandatangani menggunakan kunci yang dibagikan sebelumnya, maka server memprosesnya; jika tidak ditandatangani, maka server tahu kalau paket itu berasal dari sumber tidak tepercaya dan bisa mengabaikannya tanpa perlu melakukan pekerjaan dekripsi tambahan.

      Opsi ini akan membantu memastikan bahwa server OpenVPN Anda dapat mengatasi lalu lintas tidak terautentikasi, port, pemindaian porta, dan serangan Denial of Service, yang dapat membebani sumber daya server. Ini juga menyulitkan untuk mengidentifikasi lalu lintas jaringan OpenVPN.

      Untuk membuat kunci tls-crypt yang dibagikan sebelumnya, jalankan yang berikut ini pada server OpenVPN di direktori ~/easy-rsa:

      • cd ~/easy-rsa
      • openvpn --genkey --secret ta.key

      Hasilnya akan berupa berkas yang bernama ta.key. Salinlah ke direktori /etc/openvpn/server/:

      • sudo cp ta.key /etc/openvpn/server

      Dengan berkas-berkas ini berada di server OpenVPN, Anda siap membuat sertifikat klien dan berkas kunci untuk pengguna Anda, yang Anda akan gunakan untuk terhubung ke VPN.

      Langkah 6 — Membuat Sertifikat Klien dan Pasangan Kunci

      Walaupun Anda bisa membuat kunci privat dan permintaan sertifikat pada mesin klien Anda lalu mengirimnya ke CA untuk ditandatangani, panduan ini menguraikan proses untuk membuat permintaan sertifikat pada server OpenVPN. Manfaat dari pendekatan ini adalah kita bisa membuat skrip yang akan secara otomatis membuat berkas konfiguasi klien yang memuat semua kunci dan sertifikat yang dibutuhkan. Ini membuat Anda tidak perlu mentransfer kunci, sertifikat, dan berkas konfigurasi ke klien dan merampingkan proses untuk bergabung dengan VPN.

      Kita akan membuat kunci klien tunggal dan pasangan sertifikat untuk panduan ini. Jika Anda memiliki lebih dari satu klien, Anda dapat mengulangi proses ini untuk masing-masingnya. Namun, harap diperhatikan, Anda perlu memberi nilai nama yang unik ke skrip untuk setiap klien. Sepanjang tutorial ini, pasangan kunci/sertifikat pertama disebut sebagai client1.

      Mulailah dengan membuat struktur direktori di dalam direktori rumah Anda untuk menyimpan berkas sertifikat dan kunci klien:

      • mkdir -p ~/client-configs/keys

      Karena Anda akan menyimpan pasangan kunci/sertifikat dan berkas konfigurasi di dalam direktori ini, Anda harus mengunci izinnya sekarang sebagai tindakan keamanan:

      • chmod -R 700 ~/client-configs

      Selanjutnya, navigasi kembali ke direktori EasyRSA dan jalankan skrip easyrsa dengan opsi gen-req dan nopass, bersama dengan nama umum untuk klien:

      • cd ~/easy-rsa
      • ./easyrsa gen-req client1 nopass

      Tekan ENTER untuk mengonfirmasi nama umum. Lalu, salin berkas client1.key ke direktori ~/client-configs/keys/ yang sudah Anda buat sebelumnya:

      • cp pki/private/client1.key ~/client-configs/keys/

      Selanjutnya, transfer berkas client1.req ke Server CA Anda menggunakan metode aman:

      • scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp

      Sekarang log masuk ke Server CA. Lalu, bernavigasilah ke direktori EasyRSA, dan impor permintaan sertifikat:

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/client1.req client1

      Selanjutnya, tanda tangani permintaan sama seperti yang Anda lakukan untuk server pada langkah sebelumnya. Namun kali ini, pastikan untuk menentukan tipe permintaan klien:

      • ./easyrsa sign-req client client1

      Ketika diminta, ketikkan yes untuk mengonfirmasi bahwa Anda berniat menandatangani permintaan sertifikat dan bahwa itu berasal dari sumber tepercaya:

      Output

      Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes

      Sekali lagi, jika Anda mengenkripsi kunci CA, Anda akan diminta memasukkan kata sandi Anda di sini.

      Ini akan membuat berkas sertifikat klien yang bernama client1.crt. Transfer berkas ini kembali ke server:

      • scp pki/issued/client1.crt sammy@your_server_ip:/tmp

      Kembali pada server OpenVPN Anda, salin sertifikat klien ke direktori ~/client-configs/keys/:

      • cp /tmp/client1.crt ~/client-configs/keys/

      Selanjutnya, salin berkas ca.crt dan ta.key ke direktori ~/client-configs/keys/ juga, dan atur izin yang sesuai untuk pengguna sudo Anda:

      • cp ~/easy-rsa/ta.key ~/client-configs/keys/
      • sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
      • sudo chown sammy.sammy ~/client-configs/keys/*

      Dengan itu, sertifikat dan kunci server dan klien Anda telah dibuat dan disimpan di dalam direktori yang sesuai pada server OpenVPN Anda. Masih ada beberapa tindakan yang perlu dilakukan dengan berkas-berkas ini, tetapi itu akan dilakukan pada langkah selanjutnya. Untuk saat ini, Anda bisa melanjutkan untuk mengonfigurasi OpenVPN.

      Langkah 7 — Mengonfigurasi OpenVPN

      Seperti berbagai alat sumber terbuka lainnya yang banyak digunakan, OpenVPN memiliki banyak opsi konfigurasi yang tersedia untuk mengatur server Anda sesuai kebutuhan spesifik Anda. Pada bagian ini, kami akan memberikan instruksi tentang cara menyiapkan konfigurasi server OpenVPN yang didasarkan pada salah satu berkas konfigurasi sampel yang disertakan dalam dokumentasi perangkat lunak ini.

      Pertama-tama, salin berkas server.conf sampel sebagai titik awal untuk berkas konfigurasi Anda:

      • sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
      • sudo gunzip /etc/openvpn/server/server.conf.gz

      Buka berkas baru untuk mengedit dengan editor teks pilihan Anda. Kita akan menggunakan nano dalam contoh kita:

      • sudo nano /etc/openvpn/server/server.conf

      Kita perlu mengubah beberapa baris di dalam berkas ini. Pertama-tama, temukan bagian HMAC dari konfigurasi dengan mencari arahan tls-auth. Baris ini harus dihapus tanda komentarnya. Buat baris itu menjadi komentar dengan menambahkan ; ke awal baris. Kemudian, tambah baris baru yang hanya memuat nilai tls-crypt ta.key:

      /etc/openvpn/server/server.conf

      ;tls-auth ta.key 0 # This file is secret
      tls-crypt ta.key
      

      Selanjutnya, temukan bagian pada sandi kriptografis dengan mencari baris cipher. Nilai asalinya diatur ke AES-256-CBC, akan tetapi, sandi AES-256-GCM menawarkan tingkat dan kinerja enkripsi yang lebih baik, serta didukung dengan baik pada klien OpenVPN yang terbaru. Kita akan memberikan komentar nilai asali dengan menambahkan tanda ; di awal baris ini, lalu kita akan menambahkan baris lagi setelah baris itu yang mengandung nilai AES-256-GCM yang telah diperbarui:

      /etc/openvpn/server/server.conf

      ;cipher AES-256-CBC
      cipher AES-256-GCM
      

      Tepat setelah baris ini, tambahkan arahan auth untuk memilih algoritma inti pesan HMAC. Untuk ini, SHA256 adalah pilihan yang baik:

      /etc/openvpn/server/server.conf

      auth SHA256
      

      Selanjutnya, temukan baris yang berisi arahan dh, yang mendefinisikan parameter Diffie-Hellman. Karena kita telah mengonfigurasi semua sertifikat untuk menggunakan Elliptic Curve Cryptography, tidak perlu memiliki berkas benih Diffie-Hellman. Tambahkan tanda komentar pada baris yang sudah ada yang terlihat seperti dhq2048.pem atau dh dh.pem. Nama berkas untuk kunci Diffie-Hellman mungkin berbeda dengan nama berkas yang terdaftar pada berkas konfigurasi server contoh. Lalu tambahkan baris setelahnya dengan konten dh none:

      /etc/openvpn/server/server.conf

      ;dh dh2048.pem
      dh none
      

      Selanjutnya, kita ingin OpenVPN berjalan tanpa privilese setelah dimulai, sehingga kita perlu menyuruhnya untuk berjalan dengan pengguna nobody dan grup nogroup. Untuk mengaktifkan ini, temukan dan hapus tanda komentar pada baris user nobody dan group nogroup dengan menghapus tanda ; dari awal masing-masing baris:

      /etc/openvpn/server/server.conf

      user nobody
      group nogroup
      

      (Opsional) Mendorong Perubahan DNS untuk Mengalihkan Semua Lalu Lintas Melewati VPN

      Pengaturan di atas akan menciptakan koneksi VPN antara klien dan server Anda, tetapi tidak akan memaksa koneksi apa pun untuk menggunakan terowongan itu. Jika Anda ingin menggunakan VPN untuk mengalirkan semua lalu lintas Anda melewati VPN, Anda mungkin ingin mendorong beberapa pengaturan ekstra ke komputer klien.

      Untuk memulai, temukan dan hapus tanda komentar baris yang mengandung push "redirect-gateway deff bypass dhcp. Melakukan ini akan memberi tahu klien Anda untuk mengalihkan semua lalu lintasnya melalui Server OpenVPN Anda. Harap diperhatikan bahwa mengaktifkan fungsionalitas ini dapat menyebabkan masalah konektivitas dengan layanan jaringan lainnya, seperti SSH:

      /etc/openvpn/server/server.conf

      push "redirect-gateway def1 bypass-dhcp"
      

      Tepat di bawah baris ini, temukan bagian dhcp-option. Sekali lagi, hapus ; dari awal kedua baris untuk menghapus komentar yang ada di situ:

      /etc/openvpn/server/server.conf

      push "dhcp-option DNS 208.67.222.222"
      push "dhcp-option DNS 208.67.220.220"
      

      Ini akan memberi tahu klien Anda untuk menggunakan OpenDNS resolver gratis pada alamat IP yang terdaftar. Jika Anda lebih memilih DNS resolver lain, Anda dapat menggantinya pada IP yang disoroti.

      Ini akan membantu klien dalam mengonfigurasi ulang pengaturan DNS-nya untuk menggunakan terowongan VPN sebagai gateway asali.

      (Opsional) Menyesuaikan Porta dan Protokol

      Secara asali, server OpenVPN menggunakan porta 1194 dan protokol UDP untuk menerima koneksi klien. Jika Anda perlu menggunakan porta jaringan lain dikarenakan lingkungan jaringan yang membatasi tempat klien Anda mungkin berada, Anda dapat mengubah opsi port. Jika Anda tidak melakukan hos konten web pada server OpenVPN Anda, porta 443 adalah pilihan populer karena biasanya diizinkan melalui aturan firewall.

      Untuk mengubah OpenVPN agar mendengarkan porta 443, buka berkas server.conf dan temukan baris yang terlihat seperti ini:

      /etc/openvpn/server/server.conf

      port 1194
      

      Edit sehingga porta menjadi 443:

      /etc/openvpn/server/server.conf

      # Optional!
      port 443
      

      Seringkali, protokol dibatasi untuk porta itu juga. Jika demikian, temukan baris proto di bawah baris port dan ubah protokol dari udp ke tcp:

      /etc/openvpn/server/server.conf

      # Optional!
      proto tcp
      

      Jika Anda memang mengalihkan protokol ke TCP, Anda perlu mengubah nilai arahan explicit-exit-notify dari 1 menjadi 0, karena arahan ini hanya digunakan oleh UDP. Jika Anda tidak melakukan itu saat menggunakan TCP, kesalahan akan terjadi saat Anda memulai layanan OpenVPN.

      Temukan baris explicit-exit-notify di akhir berkas dan ubah nilainya menjadi 0:

      /etc/openvpn/server/server.conf

      # Optional!
      explicit-exit-notify 0
      

      Jika Anda tidak perlu menggunakan porta dan protokol lain, sebaiknya jangan mengubah pengaturan ini.

      Jika Anda memilih nama lain selama perintah server ./easyrsa gen-req sebelumnya, ubah baris cert dan key pada berkas konfigurasi server.conf, sehingga itu menunjuk ke berkas .crt dan .key yang benar. Jika Anda menggunakan nama baku, server, ini sudah diatur dengan benar:“”

      /etc/openvpn/server/server.conf

      cert server.crt
      key server.key
      

      Setelah Anda selesai, simpan dan tutup berkas.

      Kini Anda telah selesai mengonfigurasi pengaturan umum OpenVPN Anda. Pada langkah selanjutnya, kita akan mengkustomisasi opsi jaringan server.

      Langkah 8 — Menyesuaikan Konfigurasi Jaringan Server OpenVPN

      Ada beberapa aspek dari konfigurasi jaringan server yang perlu diubah supaya OpenVPN dapat mengalirkan lalu lintas melalui VPN dengan benar. Yang pertama adalah penerusan IP, suatu metode untuk menentukan ke mana lalu lintas IP harus dialirkan. Ini esensial untuk fungsionalitas VPN yang akan diberikan oleh server Anda.

      Untuk menyesuaikan pengaturan penerusan IP asali dari server OpenVPN Anda, buka berkas /etc/sysctl.conf menggunakan nano atau editor pilihan Anda:

      • sudo nano /etc/sysctl.conf

      Lalu tambahkan baris berikut di bagian bawah berkas:

      /etc/sysctl.conf

      net.ipv4.ip_forward = 1
      

      Simpan dan tutup berkas saat Anda sudah selesai.

      Untuk membaca berkas dan memuat nilai baru untuk sesi ini, ketik:

      Output

      net.ipv4.ip_forward = 1

      Sekarang server OpenVPN Anda akan bisa meneruskan lalu lintas masuk dari satu perangkat ethernet ke perangkat lain. Pengaturan ini memastikan bahwa server dapat mengarahkan lalu lintas dari klien yang terhubung pada antarmuka VPN virtual melalui perangkat ethernet fisik lain miliknya. Konfigurasi ini akan mengalirkan semua lalu lintas web dari klien Anda melalui alamat IP server Anda, dan alamat IP publik pada klien Anda akan secara efektif disembunyikan.

      Pada langkah selanjutnya, Anda perlu mengonfigurasi beberapa aturan firewall untuk memastikan lalu lintas ke dan dari server OpenVPN Anda mengalir dengan benar.

      Langkah 9 — Konfigurasi Firewall

      Sejauh ini, Anda telah menginstal OpenVPN pada server Anda, mengonfigurasinya, serta membuat kunci dan sertifikat yang dibutuhkan supaya klien Anda dapat mengakses VPN. Namun, Anda belum memberi instruksi kepada OpenVPN tentang ke mana mengirim lalu lintas web masuk dari klien. Anda dapat menetapkan bagaimana server harus menangani lalu lintas klien dengan membuat beberapa aturan firewall dan konfigurasi aliran.

      Dengan asumsi Anda mengikuti prasyarat pada awal tutorial ini, seharusnya ufw sudah terinstal dan berjalan pada server Anda. Untuk mengizinkan OpenVPN melintasi firewall, Anda perlu mengaktifkan penyamaran, suatu konsep iptables yang menyediakan penafsiran alamat jaringan (NAT) secara langsung untuk mengalirkan koneksi klien dengan benar.

      Sebelum membuka berkas konfigurasi firewall untuk menambah aturan penyamaran, Anda harus menemukan antarmuka jaringan publik dari mesin Anda terlebih dahulu. Untuk melakukan ini, ketik:

      Antarmuka publik Anda adalah string yang ditemukan di dalam keluaran perintah ini yang mengikuti kata “dev”. Sebagai contoh, hasil ini menunjukkan antarmuka bernama eth0, yang disorot di bawah ini:

      Output

      default via 159.65.160.1 dev eth0 proto static

      Ketika Anda memiliki antarmuka yang terhubung dengan rute asali, buka berkas /etc/ufw/before.rules untuk menambahkan konfigurasi yang relevan:

      • sudo nano /etc/ufw/before.rules

      Aturan UFW biasanya ditambahkan menggunakan perintah ufw. Namun, aturan yang terdaftar di berkas before.rules dibaca dan diterapkan sebelum aturan UFW konvensional dimuat. Pada bagian atas berkas, tambahkan baris yang disorot di bawah ini. Ini akan mengatur kebijakan asali untuk rantai POSTROUTING pada tabel nat dan menyamarkan lalu lintas apa pun yang berasal dari VPN. Jangan lupa menggganti eth0 pada baris -A POSTROUTING di bawah ini dengan antarmuka yang Anda temukan pada perintah di atas:

      /etc/ufw/before.rules

      #
      # rules.before
      #
      # Rules that should be run before the ufw command line added rules. Custom
      # rules should be added to one of these chains:
      #   ufw-before-input
      #   ufw-before-output
      #   ufw-before-forward
      #
      
      # START OPENVPN RULES
      # NAT table rules
      *nat
      :POSTROUTING ACCEPT [0:0]
      # Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
      -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
      COMMIT
      # END OPENVPN RULES
      
      # Don't delete these required lines, otherwise there will be errors
      *filter
      . . .
      

      Simpan dan tutup berkas saat Anda sudah selesai.

      Selanjutnya, Anda perlu memberi tahu UFW untuk mengizinkan paket yang diteruskan secara asali juga. Untuk melakukan ini, buka berkas /etc/default/ufw:

      • sudo nano /etc/default/ufw

      Di dalam berkas itu, temukan arahan DEFAULT_FORWARD_POLICY dan ubah nilai dari DROP menjadi ACCEPT:

      /etc/default/ufw

      DEFAULT_FORWARD_POLICY="ACCEPT"
      

      Simpan dan tutup berkas saat Anda sudah selesai.

      Selanjutnya, sesuaikan firewall itu untuk mengizinkan lalu lintas ke OpenVPN. Jika Anda tidak mengubah porta dan protokol pada berkas /etc/openvpn/server.conf, Anda perlu membuka lalu lintas UDP ke porta 1194. Jika Anda sudah mengubah porta dan/atau protokol, ganti nilai yang Anda pilih di sini.

      Jika Anda lupa menambahkan porta SSH saat mengikuti tutorial prasyarat, tambahkan di sini juga:

      • sudo ufw allow 1194/udp
      • sudo ufw allow OpenSSH

      Setelah menambahkan aturan itu, aktifkan kembali UFW untuk memulai ulang dan memuat perubahan dari semua berkas yang sudah Anda modifikasi:

      • sudo ufw disable
      • sudo ufw enable

      Server Anda kini terkonfigurasi untuk menangani lalu lintas OpenVPN dengan benar. Dengan sudah adanya aturan firewall, kita dapat memulai layanan OpenVPN pada server.

      Langkah 10 — Memulai OpenVPN

      OpenVPN berjalan sebagai layanan systemd, sehingga kita dapat menggunakan systemctl untuk mengelolanya. Kita akan mengonfigurasi OpenVPN untuk memulai saat melakukan boot sehingga Anda dapat terhubung ke VPN kapan saja selama server Anda aktif. Untuk melakukan ini, aktifkan layanan OpenVPN dengan menambahkan itu ke systemctl:

      • sudo systemctl -f enable openvpn-server@server.service

      Lalu, mulai layanan OpenVPN:

      • sudo systemctl start openvpn-server@server.service

      Periksa ulang bahwa layanan OpenVPN sudah aktif dengan perintah berikut. Anda akan melihat active (running) pada keluaran:

      • sudo systemctl status openvpn-server@server.service

      Output

      ● openvpn-server@server.service - OpenVPN service for server Loaded: loaded (/lib/systemd/system/openvpn-server@.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-04-29 15:39:59 UTC; 6s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 16872 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 1137) Memory: 1.0M CGroup: /system.slice/system-openvpnx2dserver.slice/openvpn-server@server.service └─16872 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --c> . . . . . . Apr 29 15:39:59 ubuntu-20 openvpn[16872]: Initialization Sequence Completed

      Kini kita sudah menyelesaikan konfigurasi bagian server untuk OpenVPN. Selanjutnya, Anda akan mengonfigurasi mesin klien Anda dan terhubung ke Server OpenVPN.

      Langkah 11 — Menciptakan Infrastruktur Konfigurasi Klien

      Menciptakan berkas konfigurasi untuk klien OpenVPN dapat sedikit merepotkan, karena setiap klien harus memiliki konfigurasi sendiri dan masing-masing konfigurasi harus sesuai dengan pengaturan yang sudah dijabarkan pada berkas konfigurasi server. Alih-alih menulis berkas konfigurasi tunggal yang hanya dapat digunakan pada satu klien, langkah ini menjabarkan proses untuk membangun infrastruktur konfigurasi klien yang dapat Anda gunakan untuk membuat berkas konfigurasi dengan cepat. Pertama-tama, Anda akan membuat berkas konfigurasi “base”, lalu membuat skrip yang akan mengizinkan Anda untuk membuat berkas konfigurasi klien, sertifikat, dan kunci yang unik sesuai kebutuhan.

      Mulailah dengan membuat direktori baru tempat Anda akan menyimpan berkas konfigurasi klien di dalam direktori client-configs yang Anda buat sebelumnya:

      • mkdir -p ~/client-configs/files

      Selanjutnya, salin berkas konfigurasi klien contoh ke direktori client-configs yang digunakan sebagai konfigurasi dasar Anda:

      • cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

      Buka berkas baru ini menggunakan nano atau editor teks pilihan Anda:

      • nano ~/client-configs/base.conf

      Di dalam berkas itu, temukan arahan remote. Ini menunjukkan alamat server OpenVPN Anda — alamat IP publik dari server OpenVPN Anda. Jika Anda memutuskan untuk mengubah porta yang didengarkan oleh OpenVPN, Anda juga perlu mengubah 1194 ke porta yang Anda pilih:

      ~/client-configs/base.conf

      . . .
      # The hostname/IP and port of the server.
      # You can have multiple remote entries
      # to load balance between the servers.
      remote your_server_ip 1194
      . . .
      

      Pastikan bahwa protokol sesuai dengan nilai yang Anda gunakan pada konfigurasi server:

      ~/client-configs/base.conf

      proto udp
      

      Selanjutnya, hapus komentar pada arahan user dan group dengan menghapus tanda ; pada awal masing-masing baris:

      ~/client-configs/base.conf

      # Downgrade privileges after initialization (non-Windows only)
      user nobody
      group nogroup
      

      Temukan arahan yang mengatur ca, cert, dan key. Beri tanda komentar pada arahan ini karena Anda akan menambahkan cert dan key di dalam berkas itu sendiri nanti:

      ~/client-configs/base.conf

      # SSL/TLS parms.
      # See the server config file for more
      # description. It's best to use
      # a separate .crt/.key file pair
      # for each client. A single ca
      # file can be used for all clients.
      ;ca ca.crt
      ;cert client.crt
      ;key client.key
      

      Dengan cara yang serupa, beri tanda komentar pada arahan tls-auth, karena Anda akan menambahkan ta.key langsung ke dalam berkas konfigurasi klien (dan server disiapkan untuk menggunakan tls-crypt):

      ~/client-configs/base.conf

      # If a tls-auth key is used on the server
      # then every client must also have the key.
      ;tls-auth ta.key 1
      

      Salin pengaturan cipher dan auth yang Anda atur pada berkas /etc/openvpn/server/server/server.conf:

      ~/client-configs/base.conf

      cipher AES-256-GCM
      auth SHA256
      

      Selanjutnya, tambahkan arahan key-direction di suatu tempat di dalam berkas. Anda harus mengatur ini ke “1” supaya VPN berfungsi dengan benar pada mesin klien:

      ~/client-configs/base.conf

      key-direction 1
      

      Terakhir, tambahkan beberapa baris komentar untuk menangani berbagai metode klien VPN berbasis Linux yang akan digunakan untuk resolusi DNS. Anda akan menambahkan dua baris yang mirip, tetapi pisahkan rangkaian baris komentar. Rangkaian pertama untuk klien yang tidak menggunakan systemd-resolved untuk mengelola DNS. Klien ini bergantung pada utilitas resolvconf untuk memperbarui informasi DNS klien Linux.

      ~/client-configs/base.conf

      ; script-security 2
      ; up /etc/openvpn/update-resolv-conf
      ; down /etc/openvpn/update-resolv-conf
      

      Sekarang tambahkan rangkaian baris untuk klien yang menggunakan systemd-resolved untuk resolusi DNS:

      ~/client-configs/base.conf

      ; script-security 2
      ; up /etc/openvpn/update-systemd-resolved
      ; down /etc/openvpn/update-systemd-resolved
      ; down-pre
      ; dhcp-option DOMAIN-ROUTE .
      

      Simpan dan tutup berkas saat Anda sudah selesai.

      Nanti pada Langkah 13 - Menginstal Konfigurasi Klien dari tutorial ini, Anda akan belajar cara menentukan cara kerja resolusi DNS pada klien Linux dan bagian mana yang harus dihapus komentarnya.

      Selanjutnya, kita akan membuat skrip yang akan mengompilasi konfigurasi dasar Anda dengan berkas sertifikat, kunci, dan enkripsi yang relevan, lalu menaruh konfigurasi yang dibuat di dalam direktori ~/client-configs/files. Buka berkas baru yang bernama make_config.sh di dalam direktori ~/client-configs:

      • nano ~/client-configs/make_config.sh

      Di dalam berkas itu, tambahkan konten berikut:

      ~/client-configs/make_config.sh

      #!/bin/bash
      
      # First argument: Client identifier
      
      KEY_DIR=~/client-configs/keys
      OUTPUT_DIR=~/client-configs/files
      BASE_CONFIG=~/client-configs/base.conf
      
      cat ${BASE_CONFIG} 
          <(echo -e '<ca>') 
          ${KEY_DIR}/ca.crt 
          <(echo -e '</ca>n<cert>') 
          ${KEY_DIR}/${1}.crt 
          <(echo -e '</cert>n<key>') 
          ${KEY_DIR}/${1}.key 
          <(echo -e '</key>n<tls-crypt>') 
          ${KEY_DIR}/ta.key 
          <(echo -e '</tls-crypt>') 
          > ${OUTPUT_DIR}/${1}.ovpn
      

      Simpan dan tutup berkas saat Anda sudah selesai.

      Sebelum melanjutkan, pastikan untuk menandai berkas ini agar dapat dieksekusi dengan mengetik:

      • chmod 700 ~/client-configs/make_config.sh

      Skrip ini akan membuat salinan berkas base.conf yang sudah Anda buat, mengumpulkan semua berkas sertifikat dan kunci yang Anda buat untuk klien Anda, mengekstrak kontennya, menambahkannya ke salinan berkas konfigurasi dasar, dan mengekspor semua konten ini ke dalam berkas konfigurasi klien yang baru. Ini berarti bahwa, alih-alih mengelola berkas konfigurasi, sertifikat, dan kunci secara terpisah, semua informasi yang dibutuhkan akan disimpan di satu tempat. Manfaat menggunakan metode ini adalah bahwa jika Anda perlu menambah klien di masa depan, Anda dapat menjalankan skrip ini untuk dengan cepat membuat berkas konfigurasi baru dan memastikan bahwa semua informasi penting sudah disimpan di dalam satu lokasi yang mudah diakses.

      Harap diperhatikan bahwa setiap kali Anda menambahkan klien baru, Anda perlu membuat kunci dan sertifikat baru untuk klien itu sebelum Anda dapat menjalankan skrip ini dan membuat berkas konfigurasinya. Anda akan melakukan beberapa latihan menggunakan skrip ini pada langkah selanjutnya.

      Langkah 12 — Membuat Konfigurasi Klien

      Jika Anda mengikuti panduan ini, Anda sudah membuat sertifikat dan kunci klien yang bernama client1.crt dan client1, secara berurutan, pada Langkah 6. Anda dapat membuat berkas konfigurasi untuk kredensial ini dengan pindah ke direktori ~/client-configs dan menjalankan skrip yang sudah Anda buat pada akhir langkah sebelumnya:

      • cd ~/client-configs
      • ./make_config.sh client1

      Ini akan membuat berkas bernama client1.ovpn pada direktori ~/client-configs/files Anda:

      • ls ~/client-configs/files

      Output

      client1.ovpn

      Anda perlu mentransfer berkas ini ke perangkat yang Anda rencanakan untuk digunakan sebagai klien. Misalnya, ini bisa berupa komputer lokal atau perangkat seluler Anda.

      Walaupun aplikasi yang tepat digunakan untuk mewujudkan transfer ini tergantung pada sistem operasi perangkat Anda dan pengaturan pribadi Anda, suatu metode yang dapat diandalkan dan aman adalah menggunakan SFTP (protokol transfer berkas SSH) atau SCP (Salinan Aman) pada backend. Ini akan memindahkan berkas autentikasi VPN klien Anda melalui koneksi yang terenkripsi.

      Berikut ini adalah contoh perintah SFTP yang Anda dapat jalankan dari komputer lokal Anda (macOS atau Linux). Ini akan menyalin berkas client1.ovpn yang sudah kita buat pada langkah terakhir ke direktori home Anda:

      • sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

      Berikut ini adalah beberapa alat dan tutorial untuk mentransfer berkas dengan aman dari server OpenVPN ke komputer lokal:

      Langkah 13 — Menginstal Konfigurasi Klien

      Bagian ini mencakup cara menginstal profil VPN klien pada Windows, MacOS, Linux, iOS, dan Android. Tidak satu pun instruksi klien ini tergantung satu sama lain, jadi silakan melewati ke bagian mana pun yang berlaku untuk perangkat Anda.

      Koneksi OpenVPN akan memiliki nama yang sama seperti nama berkas ovpn Anda. Sehubungan dengan tutorial ini, ini berarti bahwa koneksi bernama client1.ovpn, selaras dengan berkas klien pertama yang Anda buat.

      Windows

      Menginstal

      Unduh aplikasi klien OpenVPN untuk Windows dari laman Unduhan OpenVPN. Pilih versi penginstal yang sesuai untuk versi Windows Anda.

      Catatan: OpenVPN perlu privilese administratif untuk menginstal.

      Setelah menginstal OpenVPN, salin berkas .ovpn ke:

      C:Program FilesOpenVPNconfig
      

      Ketika Anda meluncurkan OpenVPN, itu akan secara otomatis menemukan profil dan membuatnya tersedia.

      Anda harus menjalankan OpenVPN sebagai administrator setiap kali digunakan, bahkan dengan akun administratif. Untuk melakukan ini tanpa harus mengeklik kanan dan memilih Run as administrator setiap kali Anda menggunakan VPN, Anda harus mengatur ini lebih dahulu dari akun administratif. Ini juga berarti bahwa pengguna standar perlu memasukkan kata sandi administrator untuk menggunakan OpenVPN. Di samping itu, pengguna standar tidak dapat terhubung dengan benar ke server kecuali aplikasi OpenVPN pada klien memiliki hak admin, sehingga privilese yang ditingkatkan merupakan kebutuhan.

      Untuk mengatur aplikasi OpenVPN untuk selalu berjalan sebagai administrator, klik kanan pada ikon pintasan dan buka Properties. Pada bagian bawah tab Compatibility, klik tombol untuk Mengubah pengaturan untuk semua pengguna. Pada jendela baru, centang Run this program as an administrator.

      Menghubungkan

      Setiap kali Anda meluncurkan GUI OpenVPN, Windows akan bertanya apakah Anda ingin mengizinkan program untuk membuat perubahan pada komputer Anda. Klik Yes. Meluncurkan aplikasi klien OpenVPN hanya menempatkan applet di nampan sistem sehingga Anda dapat menghubungkan dan memutus hubungan VPN sesuai kebutuhan; itu tidak benar-benar membuat koneksi VPN.

      Setelah OpenVPN dimulai, jalankan koneksi dengan masuk ke applet nampan sistem dan klik kanan pada ikon applet OpenVPN. Ini membuka menu konteks. Pilih client1 di bagian atas menu (itu profil client1.ovpn Anda) dan pilih Connect.

      Jendela status akan terbuka yang menunjukkan keluaran log saat koneksi dibuat, dan pesan akan ditampilkan saat klien terhubung.

      Putuskan hubungan dari VPN dengan cara yang sama: Buka ke applet nampan sistem, klik kanan ikon applet OpenVPN, pilih profil klien, dan klik Disconnect.

      macOS

      Menginstal

      Tunnelblick adalah klien OpenVPN sumber terbuka yang gratis untuk macOS. Anda dapat mengunduh citra diska terbaru dari laman Unduhan Tunnelblick. Klik dua kali berkas .dmg yang sudah diunduh dan ikuti petunjuk untuk menginstal.

      Menjelang akhir proses instalasi, Tunnelblick akan menanyakan apakah Anda memiliki berkas konfigurasi. Jawab I have configuration files dan biarkan Tunnelblick menyelesaikan. Buka jendela Finder dan klik dua kali clien1.ovpn. Tunnelblick akan menginstal profil klien. Perlu privilese administratif.

      Menghubungkan

      Luncurkan Tunnelblick dengan mengeklik dua kali ikon Tunnelblick pada folder Applications. Setelah Tunnelblick diluncurkan, akan ada ikon Tunnelblick di bilah menu pada bagian kanan atas layar untuk mengendalikan koneksi. Klik ikon itu, lalu klik item menu Connect client1 untuk memulai koneksi VPN.

      Linux

      Menginstal

      Jika Anda menggunakan Linux, ada berbagai alat yang dapat Anda gunakan tergantung pada distribusi Anda. Lingkungan desktop atau manajer jendela Anda juga mungkin menyertakan utilitas koneksi.

      Namun, cara yang paling universal untuk terhubung adalah menggunakan perangkat lunak OpenVPN.

      Pada Ubuntu atau Debian, Anda dapat menginstalnya seperti yang Anda lakukan pada server dengan mengetik:

      • sudo apt update
      • sudo apt install openvpn

      Pada CentOS, Anda dapat mengaktifkan repositori EPEL, lalu menginstalnya dengan mengetik:

      • sudo dnf install epel-release
      • sudo dnf install openvpn

      Mengonfigurasi Klien yang menggunakan systemd-resolved

      Pertama-tama, tentukan apakah sistem Anda menggunakan systemd-resolved untuk menangani resolusi DNS dengan memeriksa berkas /etc/resolv.conf:

      Output

      # This file is managed by man:systemd-resolved(8). Do not edit. . . . nameserver 127.0.0.53 options edns0

      Jika sistem Anda dikonfigurasi untuk menggunakan systemd-resolved untuk resolusi DNS, alamat IP setelah opsi nameserver adalah 127.0.0.53. Juga harus ada komentar di dalam berkas seperti keluaran yang ditampilkan yang menjelaskan cara systemd-resolved mengelola berkas. Jika Anda memiliki alamat IP yang berbeda dari 127.0.0.53 maka kemungkinannya adalah sistem Anda tidak menggunakan systemd-resolved dan sebagai gantinya, Anda dapat melanjutkan ke bagian selanjutnya tentang mengonfigurasi klien Linux yang memiliki skrip update-resolv-conf.

      Untuk mendukung klien ini, instal paket openvpn-systemd-resolved terlebih dahulu. Ini menyediakan skrip yang akan memaksa systemd-resolved untuk menggunakan server VPN untuk resolusi DNS.

      • sudo apt install openvpn-systemd-resolved

      Setelah paket itu terinstal, konfigurasi klien untuk menggunakannya, dan untuk mengirim semua kueri DNS melalui antarmuka VPN. Buka berkas VPN klien:

      Sekarang hapus tanda komentar pada baris berikut yang Anda tambahkan sebelumnya:

      client1.ovpn

      script-security 2
      up /etc/openvpn/update-systemd-resolved
      down /etc/openvpn/update-systemd-resolved
      down-pre
      dhcp-option DOMAIN-ROUTE .
      

      Mengonfigurasi Klien yang menggunakan update-resolv.conf

      Jika sistem Anda tidak menggunakan systemd-resolved untuk mengelola DNS, lihat apakah distribusi Anda alih-alih menyertakan skrip /etc/openvpn/update-resolv-conf:

      Output

      update-resolv-conf

      Jika klien Anda menyertakan berkas update-resolv-conf, edit berkas konfigurasi klien OpenVPN yang Anda transfer sebelumnya:

      Hapus tanda komentar pada tiga baris yang Anda tambahkan untuk menyesuaikan pengaturan DNS:

      client1.ovpn

      script-security 2
      up /etc/openvpn/update-resolv-conf
      down /etc/openvpn/update-resolv-conf
      

      Jika Anda menggunakan CentOS, ubah arahan group dari nogroup ke nobody untuk mencocokkan grup distribusi yang tersedia:

      client1.ovpn

      group nobody
      

      Simpan dan tutup berkas.

      Menghubungkan

      Sekarang, Anda dapat terhubung ke VPN hanya dengan menunjuk perintah openvpn ke berkas konfigurasi klien:

      • sudo openvpn --config client1.ovpn

      Ini akan menghubungkan Anda ke VPN Anda.

      Catatan: Jika klien Anda menggunakan systemd-resolved untuk mengelola DNS, periksa bahwa pengaturan sudah diterapkan dengan benar dengan menjalankan perintah systemmd-resolve --status seperti ini:

      • systemd-resolve --status tun0

      Anda akan melihat keluaran seperti yang berikut:

      Output

      Link 22 (tun0) . . . DNS Servers: 208.67.222.222 208.67.220.220 DNS Domain: ~.

      Jika Anda melihat alamat IP dari server DNS yang sudah Anda konfigurasikan pada server OpenVPN, bersama dengan pengaturan ~. untuk DNS Domain pada keluaran, berarti Anda sudah mengonfigurasi klien Anda dengan benar untuk menggunakan resolver DNS dari server VPN. Anda juga dapat memeriksa bahwa Anda mengirimkan kueri DNS melalui VPN menggunakan situs seperti DNS leak test.com.

      iOS

      Menginstal

      Dari iTunes App Store, cari dan instal OpenVPN Connect, aplikasi klien OpenVPN resmi untuk iOS. Untuk mentransfer konfigurasi klien iOS Anda ke perangkat, hubungkan secara langsung ke komputer.

      Proses untuk menyelesaikan transfer dengan iTunes dijabarkan di sini. Buka iTunes pada komputer dan klik pada iPhone > apps. Gulir turun ke bagian File Sharing dan klik aplikasi OpenVPN. Jendela kosong di sebelah kanan, OpenVPN Documents, adalah untuk berbagi berkas. Seret berkas .ovpn ke jendela OpenVPN Documents. iTunes menunjukkan profil VPN yang siap untuk dimuat pada iPhone

      Sekarang, luncurkan aplikasi OpenVPN pada iPhone. Anda akan menerima notifikasi bahwa profil baru siap untuk diimpor. Ketuk tanda plus berwarna hijau untuk mengimpornya.

      Aplikasi OpenVPN iOS menunjukkan bahwa profil baru siap untuk diimporMenghubungkan

      OpenVPN kini siap digunakan dengan profil baru. Mulai koneksi dengan menggeser tombol Connect ke posisi On. Putuskan koneksi dengan menggeser tombol yang sama ke posisi Off.

      Catatan: Sakelar VPN di bawah Settings tidak dapat digunakan untuk terhubung ke VPN. Jika Anda mencobanya, Anda akan menerima pemberitahuan untuk hanya terhubung menggunakan aplikasi OpenVPN.

      Aplikasi OpenVPN iOS terhubung ke VPN

      Android

      Menginstal

      Buka Google Play Store. Cari dan instal Android OpenVPN Connect, aplikasi klien OpenVPN resmi untuk Android.

      Anda dapat mentransfer profil .ovpn dengan menghubungkan perangkat Android ke komputer Anda dengan USB dan menyalin berkas itu. Alternatifnya, jika Anda memiliki pembaca kartu SD, Anda dapat melepas kartu SD di perangkat, menyalin profil ke dalamnya, lalu memasukkan kartu itu kembali ke perangkat Android.

      Mulai aplikasi OpenVPN dan ketuk menu FILE untuk mengimpor profil.

      Pemilihan menu impor profil pada aplikasi OpenVPN Android

      Lalu navigasikan ke lokasi profil yang tersimpan (tangkapan layar menggunakan /storage/emulated/O/openvpn) dan pilih berkas .ovpn Anda. Ketuk tombol IMPORT untuk menyelesaikan pengimporan profil ini.

      Aplikasi OpenVPN Android memilih profil VPN yang akan diimpor

      Menghubungkan Setelah profil ditambahkan, Anda akan melihat layar seperti ini:

      Aplikasi OpenVPN Android dengan profil baru yang ditambahkan

      Untuk terhubung, ketuk tombol geser untuk memilih profil yang Anda ingin gunakan. Anda akan melihat statistik waktu dari koneksi dan lalu lintas Anda yang dialirkan melalui server OpenVPN Anda: Aplikasi OpenVPN Android terhubung ke VPN

      Untuk memutus koneksi, ketuk saja tombol geser pada bagian kiri atas sekali lagi. Anda akan diminta untuk mengonfirmasi bahwa Anda ingin memutus koneksi dari VPN Anda.

      Langkah 14 — Menguji Koneksi VPN Anda (Opsional)

      Catatan: Metode untuk menguji koneksi VPN Anda ini hanya akan berjalan jika Anda memilih untuk mengalirkan lalu lintas Anda melalui VPN pada Langkah 7 saat Anda mengedit berkas server.conf untuk OpenVPN.

      Setelah semuanya terinstal, periksa untuk mengonfirmasi semuanya berjalan lancar dengan benar. Tanpa mengaktifkan koneksi VPN, buka peramban dan kunjungi DNSLeakTest.

      Situs ini akan menghasilkan alamat IP yang ditetapkan oleh penyedia layanan internet Anda dan saat Anda muncul ke seluruh dunia. Untuk memeriksa pengaturan DNS Anda melalui situs web yang sama, klik pada Extended Test dan ini akan memberi tahu Anda server DNS yang Anda gunakan.

      Sekarang, hubungkan klien OpenVPN ke VPN Droplet Anda dan segarkan peramban. Alamat IP yang sangat berbeda (dibanding server VPN Anda) kini akan muncul, dan inilah cara Anda muncul ke dunia. Sekali lagi, Extended Test dari DNSLeakTest akan memeriksa pengaturan DNS Anda dan mengonfirmasi bahwa Anda kini menggunakan resolver DNS yang didorong oleh VPN Anda.

      Langkah 15 — Mencabut Sertifikat Klien

      Terkadang, Anda mungkin perlu mencabut sertifikat klien untuk mencegah akses lebih lanjut ke server OpenVPN.

      Untuk melakukan itu, ikuti contoh dalam tutorial prasyarat tentang Cara Menyiapkan dan Mengonfigurasi Otoritas Sertifikat pada Ubuntu 20.04 pada bagian Mencabut Sertifikat.

      Setelah Anda mencabut sertifikat untuk suatu klien menggunakan instruksi itu, Anda perlu menyalin berkas crl.pem yang dihasilkan ke server OpenVPN Anda di dalam direktori /etc/openvpn/server:

      • sudo cp /tmp/crl.pem /etc/openvpn/server/

      Selanjutnya, buka berkas konfigurasi server OpenVPN:

      • sudo nano /etc/openvpn/server/server.conf

      Pada bagian bawah berkas, tambahkan opsi crl-verify, yang akan menginstruksikan server OpenVPN untuk memeriksa daftar pencabutan sertifikat yang kita telah buat setiap kali ada upaya koneksi:

      /etc/openvpn/server/server.conf

      crl-verify crl.pem
      

      Simpan dan tutup berkas.

      Terakhir, mulai ulang OpenVPN untuk menerapkan pencabutan sertifikat:

      • sudo systemctl restart openvpn-server@server.service

      Klien seharusnya tidak lagi bisa terhubung ke server menggunakan kredensial lama.

      Untuk mencabut klien tambahan, ikuti proses ini:

      1. Cabut sertifikat dengan perintah ./easyrsa revoke client_name
      2. Buat CRL yang baru
      3. Transfer berkas crl.pem yang baru ke server OpenVPN Anda dan salin ke direktori /etc/openvpn/server/ untuk menimpa daftar lama.
      4. Mulai ulang layanan OpenVPN.

      Anda dapat menggunakan proses ini untuk mencabut sertifikat apa pun yang Anda berikan sebelumnya untuk server Anda.

      Kesimpulan

      Anda kini seharusnya memiliki jaringan privat virtual yang beroperasi penuh dan berjalan pada Server OpenVPN Anda. Anda dapat menjelajahi web dan mengunduh konten tanpa khawatir tentang aktor jahat yang melacak aktivitas Anda.

      Ada beberapa langkah yang Anda dapat lakukan untuk menyesuaikan instalasi OpenVPN Anda lebih lanjut, seperti mengonfigurasi klien Anda untuk terhubung ke VPN secara otomatis atau mengonfigurasi aturan untuk klien tertentu dan kebijakan akses. Untuk penyesuaian ini dan penyesuian OpenVPN lain, Anda harus membaca dokumentasi OpenVPN resmi.

      Untuk mengonfigurasi klien lainnya, Anda hanya perlu mengikuti langkah 6 dan 11-13 untuk masing-masing perangkat tambahan. Untuk mencabut akses ke klien, ikuti langkah 15.



      Source link

      Cara Menyiapkan Kunci SSH pada Ubuntu 20.04


      Pengantar

      SSH, atau secure shell, adalah protokol terenkripsi yang digunakan untuk mengelola dan berkomunikasi dengan server. Ketika bekerja dengan server Ubuntu, kemungkinan Anda akan menghabiskan sebagian besar waktu Anda dalam sesi terminal yang terhubung ke server Anda melalui SSH.

      Dalam panduan ini, kita akan berfokus pada penyiapan kunci SSH untuk instalasi Ubuntu 20.04. Kunci SSH menyediakan cara yang aman untuk log masuk ke server Anda dan disarankan untuk semua pengguna.

      Langkah 1 — Menciptakan Pasangan Kunci

      Langkah pertama adalah menciptakan pasangan kunci pada mesin klien (biasanya komputer Anda):

      Secara asali, versi terbaru dari ssh-keygen akan menciptakan pasangan kunci RSA 3072-bit, yang cukup aman untuk kebanyakan kasus penggunaan (Anda dapat secara opsional memasukkan bendera -b 4096 untuk menciptakan kunci 4096-bit yang lebih besar).

      Setelah memasukkan perintah, Anda akan melihat keluaran berikut:

      Output

      Generating public/private rsa key pair. Enter file in which to save the key (/your_home/.ssh/id_rsa):

      Tekan enter untuk menyimpan pasangan kunci ke subdirektori .ssh/ di dalam direktori rumah Anda, atau tentukan jalur alternatif.

      Jika Anda sebelumnya telah menghasilkan pasangan kunci SSH, Anda mungkin melihat prompt berikut:

      Output

      /home/your_home/.ssh/id_rsa already exists. Overwrite (y/n)?

      Jika Anda memilih untuk menimpa kunci pada diska, Anda tidak akan bisa lagi melakukan autentikasi menggunakan kunci sebelumnya. Berhati-hatilah saat memilih ya, karena ini adalah proses destruktif yang tidak dapat dikembalikan.

      Kemudian, Anda akan melihat prompt berikut:

      Output

      Enter passphrase (empty for no passphrase):

      Di sini Anda secara opsional dapat memasukkan frasa sandi yang aman, yang merupakan sesuatu yang sangat disarankan. Frasa sandi menambahkan lapisan keamanan tambahan untuk mencegah pengguna yang tidak sah untuk log masuk. Untuk mempelajari lebih lanjut tentang keamanan, lihat tutorial kami tentang Cara Mengonfigurasi Autentikasi Berbasis Kunci SSH pada Server Linux.

      Kemudian, Anda akan melihat keluaran mirip seperti ini:

      Output

      Your identification has been saved in /your_home/.ssh/id_rsa Your public key has been saved in /your_home/.ssh/id_rsa.pub The key fingerprint is: SHA256:/hk7MJ5n5aiqdfTVUZr+2Qt+qCiS7BIm5Iv0dxrc3ks user@host The key's randomart image is: +---[RSA 3072]----+ | .| | + | | + | | . o . | |o S . o | | + o. .oo. .. .o| |o = oooooEo+ ...o| |.. o *o+=.*+o....| | =+=ooB=o.... | +----[SHA256]-----+

      Anda kini memiliki kunci publik dan pribadi yang Anda dapat gunakan untuk melakukan autentikasi. Langkah selanjutnya adalah menempatkan kunci publik pada server Anda sehingga Anda dapat menggunakan autentikasi berbasis kunci SSH untuk log masuk.

      Langkah 2 — Menyalin Kunci Publik ke Server Ubuntu Anda

      Cara tercepat untuk menyalin kunci publik Anda ke hos Ubuntu adalah menggunakan utilitas bernama ssh-copy-id. Karena kemudahannya, metode ini sangat disarankan jika tersedia. Jika Anda tidak memiliki ssh-copy-id yang tersedia bagi Anda di mesin klien, Anda dapat menggunakan salah satu dari dua metode alternatif yang disediakan di bagian ini (menyalin melalui SSH berbasis kata sandi, atau menyalin kunci secara manual).

      Menyalin Kunci Publik Menggunakan ssh-copy-id

      Alat ssh-copy-id disertakan secara asali dalam banyak sistem operasi, sehingga Anda mungkin telah memilikinya di sistem lokal Anda. Agar metode ini bekerja, Anda harus sudah memiliki akses SSH berbasis kata sandi ke server Anda.

      Untuk menggunakan utilitas ini, Anda menentukan hos jauh yang Anda ingin hubungkan, dan akun pengguna yang Anda miliki dengan akses SSH berbasis kata sandi. Ini adalah akun tempat menyalin kunci SSH publik Anda.

      Sintaksnya adalah:

      • ssh-copy-id username@remote_host

      Anda mungkin melihat pesan berikut:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Ini berarti bahwa komputer lokal Anda tidak mengenali hos jauh. Ini akan terjadi saat pertama kali Anda terhubung ke hos baru. Ketik “yes"dan tekan ENTER untuk melanjutkan.

      Selanjutnya, utilitas akan memindai akun lokal Anda untuk mencari kunci id_rsa.pub yang kita ciptakan sebelumnya. Ketika utilitas menemukan kuncinya, utilitas akan menanyakan kata sandi dari akun pengguna jauh:

      Output

      /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys username@203.0.113.1's password:

      Masukkan kata sandi (pengetikan Anda tidak akan ditampilkan untuk keamanan) dan tekan ENTER. Utilitas akan terhubung ke akun pada hos jauh menggunakan kata sandi yang Anda berikan. Kemudian, utilitas akan menyalin konten dari kunci ~/.ssh/id_rsa.pub Anda ke berkas di dalam direktori ~/.ssh rumah dari akun jauh yang disebut authorized_keys.

      Anda akan melihat keluaran berikut:

      Output

      Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@203.0.113.1'" and check to make sure that only the key(s) you wanted were added.

      Pada titik ini, kunci id_rsa.pub Anda telah diunggah ke akun jauh. Anda dapat melanjutkan ke Langkah 3.

      Menyalin Kunci Publik Menggunakan SSH

      Jika Anda tidak memiliki ssh-copy-id yang tersedia, tetapi Anda memiliki akses SSH berbasis kata sandi ke akun pada server, Anda dapat mengunggah kunci menggunakan metode SSH konvensional.

      Kita dapat melakukan ini dengan penggunaan perintah cat untuk membaca konten dari kunci SSH publik pada komputer lokal kita dan menyalurkannya melalui koneksi SSH ke server jauh.

      Di samping itu, kita dapat memastikan bahwa direktori ~/.ssh sudah ada dan memiliki izin yang benar di bawah akun yang kita gunakan.

      Kemudian, kita dapat menghasilkan konten yang kita salurkan ke dalam suatu berkas bernama authorized_keys di dalam direktori ini. Kita akan menggunakan simbol pengalihan >> untuk memberikan tambahan pada konten alih-alih menimpanya. Ini akan memungkinkan kita untuk menambahkan kunci tanpa merusak kunci yang ditambahkan sebelumnya.

      Perintah utuhnya terlihat seperti ini:

      • cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

      Anda mungkin melihat pesan berikut:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Ini berarti bahwa komputer lokal Anda tidak mengenali hos jauh. Ini akan terjadi saat pertama kali Anda terhubung ke hos baru. Ketik yes dan tekan ENTER untuk melanjutkan.

      Setelah itu, Anda akan diminta untuk memasukkan kata sandi akun pengguna jauh:

      Output

      username@203.0.113.1's password:

      Setelah memasukkan kata sandi Anda, konten dari kunci id_rsa.pub akan disalin ke bagian akhir berkas authorized_keys dari akun pengguna jauh. Lanjutkan ke Langkah 3 jika ini berhasil.

      Menyalin Kunci Publik secara Manual

      Jika Anda tidak memiliki akses SSH berbasis kata sandi ke server yang tersedia, Anda akan perlu menyelesaikan proses di atas secara manual.

      Kita akan secara manual memberikan tambahan pada konten dari berkas id_rsa.pub Anda ke berkas ~/.ssh/authorized_keys pada mesin jauh Anda.

      Untuk menampilkan konten dari kunci id_rsa.pub, ketik ini pada komputer lokal Anda:

      Anda akan melihat konten dari kunci itu, yang akan terlihat seperti ini:

      Output

      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

      Akses hos jauh Anda menggunakan metode apa pun yang Anda miliki.

      Setelah Anda memiliki akses ke akun Anda pada server jauh, Anda harus memastikan direktori ~/.ssh sudah ada. Perintah ini akan menciptakan direktori tersebut jika diperlukan, atau jangan lakukan apa pun jika direktorinya sudah ada:

      Sekarang, Anda dapat menciptakan atau memodifikasi berkas authorized_keys di dalam direktori ini. Anda dapat menambahkan konten dari berkas id_rsa.pub ke bagian akhir dari berkas authorized_keys, atau menciptakannya jika diperlukan, dengan perintah ini:

      • echo public_key_string >> ~/.ssh/authorized_keys

      Dalam perintah di atas, ganti public_key_string dengan keluaran dari perintah cat ~/.ssh/id_rsa.pub yang Anda eksekusi pada sistem lokal Anda. Keluaran itu dimulai dengan ssh-rsa AAAA....

      Terakhir, kita akan memastikan bahwa direktori ~/.ssh dan berkas authorized_keys telah memiliki izin yang sesuai:

      Ini secara berulang menghapus semua izin "group” dan “other"dari direktori ~/.ssh/.

      Jika Anda menggunakan akun root untuk menyiapkan kunci akun pengguna, maka penting untuk diingat bahwa direktori ~/.ssh dimiliki oleh pengguna dan bukan oleh root:

      • chown -R sammy:sammy ~/.ssh

      Dalam tutorial ini, pengguna kita bernama sammy, tetapi Anda harus mengganti nama pengguna sesuai dengan perintah di atas.

      Sekarang kita dapat mencoba autentikasi tanpa kata sandi dengan server Ubuntu kita.

      Langkah 3 — Melakukan Autentikasi ke Server Ubuntu Anda Menggunakan Kunci SSH

      Jika Anda telah berhasil menyelesaikan salah satu prosedur di atas, Anda akan dapat log masuk ke hos jauh tanpa memberikan kata sandi dari akun jauh.

      Proses dasarnya sama:

      Jika ini adalah kali pertama Anda terhubung ke hos ini (jika Anda menggunakan metode terakhir di atas), Anda mungkin melihat sesuatu seperti ini:

      Output

      The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

      Ini berarti bahwa komputer lokal Anda tidak mengenali hos jauh. Ketik "yes”, lalu tekan ENTER untuk melanjutkan.

      Jika Anda tidak memasukkan frasa sandi untuk kunci pribadi, Anda akan segera log masuk. Jika Anda memasukkan frasa sandi untuk kunci pribadi ketika Anda menciptakan kunci tersebut, Anda akan diminta untuk memasukkannya sekarang (harap diperhatikan bahwa hasil pengetikan Anda tidak akan muncul dalam sesi terminal untuk alasan keamanan). Setelah melakukan autentikasi, sesi shell baru akan terbuka untuk Anda dengan akun yang terkonfigurasi di server Ubuntu.

      Jika autentikasi berbasis kunci berhasil, lanjutkan untuk mempelajari cara mengamankan sistem Anda lebih lanjut dengan menonaktifkan autentikasi kata sandi.

      Langkah 4 — Menonaktifkan Autentikasi Kata Sandi pada Server Anda

      Jika Anda dapat log masuk ke akun Anda menggunakan SSH tanpa kata sandi, Anda telah berhasil mengonfigurasi autentikasi berbasis kunci SSH ke akun Anda. Namun, mekanisme autentikasi berbasis kata sandi Anda masih aktif, yang berarti bahwa server Anda masih terekspos oleh serangan brutal.

      Sebelum menyelesaikan langkah-langkah di bagian ini, pastikan bahwa Anda memiliki autentikasi berbasis kunci SSH yang terkonfigurasi untuk akun root pada server ini, atau yang lebih baik, bahwa Anda memiliki autentikasi berbasis kunci SSH yang terkonfigurasi untuk akun non-root pada server ini dengan privilese sudo. Langkah ini akan mengunci log masuk berbasis kata sandi, sehingga memastikan bahwa Anda masih bisa mendapatkan akses administratif adalah hal yang krusial.

      Setelah Anda mengonfirmasi bahwa akun jauh Anda memiliki privilese administratif, log masuk ke server jauh Anda dengan kunci SSH, baik sebagai root atau menggunakan akun dengan privilese sudo. Lalu, buka berkas konfigurasi dari daemon SSH:

      • sudo nano /etc/ssh/sshd_config

      Di dalam berkas, cari suatu arahan bernama PasswordAuthentication. Baris ini mungkin dibuat menjadi komentar dengan # di awal baris. Hapus komentar dengan menghapus #, dan tetapkan nilai menjadi no. Ini akan menonaktifkan kemampuan Anda untuk log masuk melalui SSH dengan menggunakan kata sandi akun:

      /etc/ssh/sshd_config

      . . .
      PasswordAuthentication no
      . . .
      

      Simpan dan tutup berkas saat Anda selesai dengan menekan CTRL+X, lalu Y untuk mengonfirmasi penyimpanan berkas tersebut, dan terakhir ENTER untuk keluar dari nano. Untuk benar-benar mengaktifkan perubahan ini, kita perlu memulai ulang layanan sshd:

      • sudo systemctl restart ssh

      Sebagai tindakan pencegahan, buka jendela terminal baru dan uji apakah layanan SSH berfungsi dengan benar sebelum menutup sesi Anda saat ini:

      Setelah Anda memverifikasi layanan SSH berfungsi dengan benar, Anda dapat menutup semua sesi server saat ini dengan aman.

      Daemon SSH pada server Ubuntu Anda kini hanya merespons autentikasi berbasis kunci SSH. Log masuk berbasis kata sandi telah dinonaktifkan.

      Kesimpulan

      Kini, Anda telah memiliki autentikasi berbasis kunci SSH yang terkonfigurasi pada server Anda, yang mengizinkan Anda untuk masuk tanpa memberikan kata sandi akun.

      Jika Anda ingin mempelajari lebih lanjut tentang bekerja dengan SSH, lihat Panduan Esensial SSH dari kami.



      Source link