Membuat Passphrases Keys dan Certificates di Ubuntu
· 2 min read · Label Linux
Pada dasarnya komputer yang biasa Anda gunakan secara pribadi, baik itu komputer desktop, notebook, atau bahkan TV, selama komputer tersebut menjalankan Ubuntu Desktop atau yang serupa dapat dan harus menggunakan Passphrases Keys dan Certificates untuk meningkatkan sistem keamanan komputer anda.
Hanya 3 frasa sandi berikut yang perlu anda ingat dan disimpan.
Tetapkan beberapa variabel lingkungan:
Jadikan konfigurasi default untuk digunakan oleh OpenSSL:
Jadikan konfigurasi default untuk digunakan oleh OpenSSL:
Passphrases
Sepanjang penulisan artikel ini kami menggunakan istilah Frasa Sandi karena satu kata saja tidak akan pernah menjadi frasa sandi yang baik.
- Basis data kata sandi Anda (misalnya KeePass).
- Login pengguna di komputer desktop Anda.
- Akses ke media penyimpanan terenkripsi Anda (stik USB, disk, dll.)
Kuat tetapi Mudah Diingat
Tersedia alat seperti APG atau pwgen, tetapi kata sandi yang dibuat akan sulit diingat.
Solusi terbaik saat ini adalah menggunakan Diceware yang membuat frasa sandi yang sangat kuat tetapi tetap mudah diingat.
Frasa sandi yang dihasilkan akan terlihat mirip dengan contoh di bawah ini:
timid bingle heath js duck
Catatlah dan simpan kode itu baik-baik. Setiap kali Anda menggunakannya, cobalah untuk menuliskannya dari ingatan terlebih dahulu, sebelum melihatnya. Setelah beberapa hari, Anda tidak perlu lagi melihat catatan itu.
Jika Anda memercayai kemampuan komputer untuk menghasilkan angka acak, Anda dapat menggunakan xkcdpass.
Instal xkcdpass dari Ubuntu Software Center
atau dengan command-line:
$ sudo apt install xkcdpass
Kuat tetapi Mudah Diketik dan diingat
Meskipun Anda tidak perlu mengingat frasa sandi lainnya, saya tetap menyarankan untuk membuat beberapa frasa sandi dengan metode Diceware, bukan generator bawaan KeePassXC. Bukan karena frasa sandi mudah diingat, tetapi karena frasa sandi mudah diketik.
Generator kata sandi, seperti yang ada di KeePassXC, mungkin menghasilkan kata sandi yang aman, tetapi biasanya terlihat seperti ini:
svkUi]jw?Ue_E&3 Y4/'H;-RYD)vb ?P
Tidak apa-apa, selama Anda tidak perlu mengetiknya sendiri. Anda dapat menggunakan fitur Ketik Otomatis KeePassXC atau menyalin & menempel pada perangkat Anda. Aplikasi peramban, klien surel, atau gantungan kunci seperti Seahorse akan menyediakan frasa sandi atas nama Anda sebagian besar waktu.
Namun, jika Anda tidak bekerja di komputer Anda sendiri? Anda tetap dapat menggunakan basis data kata sandi Anda, seperti yang Anda miliki di ponsel pintar Anda, tetapi Anda harus membaca kredensial dari layar satu perangkat dan mengetiknya di perangkat lain.
Skenario lain adalah jika ada yang rusak, dicuri, atau hilang. Anda mungkin perlu mengakses data (misalnya cadangan) tanpa memiliki akses ke lingkungan kerja nyaman Anda yang biasa.
Contoh di atas timid bingle heath js duck dan qvkUj]jw?Ud_E&3 Y4/'H;-RYD)vb ?R keduanya sama-sama kuat 208 bit. Namun, sementara yang pertama mudah untuk memeriksa webmail atau mengunduh sesuatu dari cloud Anda saat berada di rumah teman, yang kedua hampir mustahil untuk membacanya dengan benar.
Beberapa frasa sandi yang mungkin termasuk dalam kategori ini:
- Akun email pribadi (webmail).
- Akun penyimpanan cloud (unduh atau unggah cepat).
- Akun pengguna NAS (akses ke cadangan).
- Jejaring sosial yang sering digunakan.
- Penyedia identitas pihak ketiga (mis. Mozilla Persona, Akun Google).
- Login administrator server (pengguna root).
- Manajemen basis data (pengguna root server MySQL).
Berapa banyak kata?
Setiap kata tambahan yang digunakan dalam frasa sandi akan menambah keamanan.
Tabel berikut didasarkan pada perkiraan daya komputasi yang tersedia untuk organisasi pemerintah yang besar. Perlu diingat bahwa kita tidak tahu pasti dan bahwa teknologi baru dapat mengubah permainan kapan saja.
Berdasarkan asumsi ini maka disarankan hal berikut untuk menyeimbangkan kenyamanan, kemudahan penggunaan dan keamanan.
Tentu saja, semakin tinggi semakin baik dan Anda dipersilakan menggunakan lebih banyak kata. Namun, dokumen ini lebih ditujukan untuk penggunaan pribadi dan kurang ditujukan untuk organisasi teroris, aktivis, perusahaan besar, atau lembaga pemerintah.
Kami menganggap klien, server, dan jaringan tidak aman sejak awal (terutama jaringan nirkabel). Surat masuk dan keluar dari layanan pihak ketiga yang tidak aman seperti Gmail atau Hotmail. Jika Anda harus menangani data yang sangat sensitif, enkripsi dengan GPG atau simpan di drive terenkripsi.
KEY
Kunci pada dasarnya adalah Frasa Sandi yang sangat besar yang dibuat dengan metode matematika yang sangat canggih. Frasa sandi yang dicetak tidak mungkin dihafal atau diketik oleh manusia. Jika dicetak di atas kertas, frasa sandi tersebut dapat dengan mudah mengisi beberapa halaman dengan omong kosong.
Oleh karena itu, kunci disimpan dalam berkas. Namun, karena berkas dapat dicuri, berkas kunci dienkripsi dan dilindungi dengan kata sandi. Dengan cara ini, hanya pengguna yang dimaksud yang mengetahui kata sandi yang dapat menggunakan kunci tersebut.
SSH Client Keys
ed25519
ed25519 adalah sistem tanda tangan kunci publik yang sangat cepat dan sangat aman. Sistem ini menggunakan kunci kecil (32 bit) dan tanda tangan kecil (64 bit).
Saat ini ed25519 menawarkan pilihan kecepatan, ukuran kunci, dan keamanan terbaik untuk autentikasi kunci publik SSH, tetapi karena tergolong baru (tersedia sejak OpenSSH 6.5 yang diterbitkan Januari 2014) kunci RSA masih diperlukan untuk sistem dan perangkat lama.
$ ssh-keygen -t ed25519 -o -a 100
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_ed25519.
Your public key has been saved in /home/user/.ssh/id_ed25519.pub.
The key fingerprint is:
7b:e1:23:2c:66:4c:6a:7c:41:bb:3e:13:fe:5b:86:4b user@Host
RSA
Nilai default akan menghasilkan kunci RSA 2048 bit, sedangkan yang direkomendasikan adalah minimal 3072 bit.
$ ssh-keygen -t rsa -b 4096 -o -a 100
Sertifikat
Sertifikat pada dasarnya adalah kunci yang telah disertifikasi oleh pihak lain, yang menyatakan bahwa kunci tersebut memang milik seseorang atau perangkat.
Sertifikat yang ditandatangani oleh otoritas sertifikat komersial biasanya dibuat langsung di situs web mereka menggunakan fungsi bawaan peramban web yang memerlukan interaksi minimal dari pengguna.
Di sini, kami akan membuat CSR secara manual untuk ditandatangani oleh otoritas sertifikasi.
Persiapan
Buat direktori pribadi untuk menyimpan konfigurasi, kunci, CSR, dan sertifikat:
$ mkdir -p ~/.ssl/{certs,private}
$ chmod 700 ~/.ssl/private
$ export CN=$HOSTNAME.example.net
$ export emailAddress=john.doe@example.net
Permintaan Sertifikat Pengguna Pribadi
Sertifikat pribadi dapat digunakan untuk masuk ke situs web dan untuk menandatangani serta mengenkripsi email. Sertifikat tersebut mencakup informasi tentang seseorang.
Konfigurasi OpenSSL
Buat berkas konfigurasi OpenSSL baru ~/.ssl/openssl-user.cnf:
#
# OpenSSL configuration for generation of client certificate requests.
#
# Environment variables 'emailAddress' **MUST** be defined or else
# OpenSSL aborts:
# export emailAddress=user@example.net
#
# To use this configuration as default:
# export OPENSSL_CONF=./openssl-user.cnf
#
emailAddress = $ENV::emailAddress
HOME = $ENV::HOME/.ssl
RANDFILE = $HOME/private/.rnd
oid_section = new_oids
[ new_oids ]
xmppAddr = 1.3.6.1.5.5.7.8.5
[ req ]
default_bits = 2048
default_keyfile = $HOME/private/$emailAddress.key.pem
encrypt_key = yes
default_md = sha256
req_extensions = user_req_ext
prompt = no
distinguished_name = req_distinguished_name
string_mask = utf8only
utf8 = yes
[ user_req_ext ]
keyUsage = digitalSignature
extendedKeyUsage = clientAuth, emailProtection
subjectKeyIdentifier = hash
subjectAltName = @subj_alt_names
[ req_distinguished_name ]
countryName = US
stateOrProvinceName = California
localityName = Los Angeles
organizationName = example.net
Name = John Doe
emailAddress = $emailAddress
[ subj_alt_names ]
email = $emailAddress
otherName = xmppAddr;UTF8:$emailAddress
$ export OPENSSL_CONF=~/.ssl/openssl-user.cnf
Permintaan Penandatanganan Sertifikat
Buat permintaan sertifikat pribadi dan kuncinya:
$ openssl req -new -out ~/.ssl/$emailAddress.req.pem
Generating a 2048 bit RSA private key
.......................................+++
...............................+++
writing new private key to '/home/john/.ssl/john.doe@example.net.key.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Lindungi kunci pribadi:$ chmod 400 ~/.ssl/private/$emailAddress.key.pem
Jalankan perintah request.
$ openssl req -verify -in ~/.ssl/$emailAddress.req.pem \
-noout -text -nameopt multiline \
-reqopt no_version,no_pubkey,no_sigdump
Sertifikat untuk Perangkat Klien
Sertifikat host klien dapat digunakan untuk mengidentifikasi perangkat tertentu. Yaitu untuk membuat koneksi ke layanan VPN. Sertifikat tersebut mungkin juga menyertakan informasi tentang pemiliknya.
Di dunia yang terhubung saat ini, perangkat seluler hilang dan dicuri setiap hari. Dengan menggunakan sertifikat untuk perangkat, bukan pemiliknya, satu perangkat yang hilang atau dicuri dapat dikunci, tanpa memengaruhi perangkat lain milik orang yang sama.
OpenSSL Configuration
Buat file konfigurasi OpenSSL baru ~/.ssl/openssl-client.cnf:
#
# OpenSSL configuration for generation of client certificate requests.
#
# To use this configuration as default:
# export OPENSSL_CONF=./openssl-client.cnf
#
# Environment variables '$CN' and 'emailAddress' **MUST** be defined or else
# OpenSSL aborts:
# export CN=${HOSTNAME}.example.net
# export emailAddress=user@example.net
#
emailAddress = $ENV::emailAddress
CN = $ENV::CN
HOME = $ENV::HOME/.ssl
RANDFILE = $HOME/private/.rnd
oid_section = new_oids
[ new_oids ]
id-on-xmppAddr = 1.3.6.1.5.5.7.8.5
[ req ]
default_bits = 2048
default_keyfile = $HOME/private/$CN.key.pem
encrypt_key = yes
default_md = sha256
req_extensions = device_req_ext
prompt = no
distinguished_name = req_distinguished_name
string_mask = utf8only
utf8 = yes
[ device_req_ext ]
keyUsage = digitalSignature
extendedKeyUsage = clientAuth
subjectKeyIdentifier = hash
subjectAltName = @subj_alt_names
[ req_distinguished_name ]
countryName = US
stateOrProvinceName = California
localityName = Los Angelees
commonName = $CN
name = John Doe
emailAddress = $emailAddress
[ subj_alt_names ]
DNS.1 = $CN
email = $emailAddress
otherName = xmppAddr;UTF8:$emailAddress
$ export OPENSSL_CONF=~/.ssl/openssl-client.cnf
Permintaan Penandatanganan Sertifikat
Buat permintaan perangkat klien:
$ openssl req -new -out ~/.ssl/$CN.req.pem
Generating a 2048 bit RSA private key
.......................................+++
...............................+++
writing new private key to '/home/john/.ssl/host.example.net.key.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Lindungi kunci pribadi:
$ chmod 400 ~/.ssl/private/$CN.key.pem
Jalankan perintah request.
$ openssl req -verify -in ~/.ssl/$CN.req.pem \
-noout -text \
-reqopt no_version,no_pubkey,no_sigdump \
-nameopt multiline
Menggunakan Sertifikat
Setelah CA memverifikasi dan menandatangani permintaan penandatanganan sertifikat, Anda akan mendapatkan sertifikat dalam file seperti host.example.net.cert.pem.
Untuk melihat sertifikat:
$ openssl x509 -in $CN.cert.pem \
-noout -text \
-certopt no_version,no_pubkey,no_sigdump \
-nameopt multiline
Untuk memverifikasi sertifikat:
$ openssl verify -issuer_checks -policy_print -verbose \
-untrusted intermed-ca.cert.pem \
-CAfile root-ca.cert.pem \
certs/$CN.cert.pem
Sampai sini pembahasan kami rasa cukup, anda dapat menreapkan materi diatas pada server Ubuntu kesayanagan anda baik Desktop maupun Server.
Silahkan Berkomentar, Kakak...! Bunda...!
Posting Komentar