Assalamualaikum wr.wb.
Hallo
teman-teman semua, kembali lagi pada blog Dulcent. Kali ini saya akan berbagi
tutorial konfigurasi SSH Key Based Authentication atau authentikasi
SSH berbasis kunci. Namun sebelum ke langkah konfigurasinya kita akan
terlebih dahulu memperkuat pemahaman dasar, mulai dari memahami konsep remote
server, tools untuk remote server, pengertian SSH, enkripsi, dan praktik.
Berikut alur pembahasan pada materi kali ini :
- Pemahaman Dasar
- Konsep SSH Key Based Authentication
- Konfigurasi SSH Key-Based Authentication di Linux (OpenSSH)
- Penutup
Pemahaman Dasar
- Pengertian Remote Server
Konsep remote
merujuk kepada pekerjaan yang dilakukan tanpa interaksi secara fisik dengan
lingkungan kerja. Artinya kita tidak perlu mendatangi (on-site) area kerja
tersebut. Contoh remote dalam kehidupan sehari-hari adalah remote televisi,
yang memiliki pengertian perangkat keras untuk mengatur dan mengoperasikan
televisi dari jarak jauh. Begitu juga dengan remote server mempunyai konsep
yang sama sebagai mekanisme pengaksesan dan pengontrolan server jaringan
dari jarak jauh.
Analogi sederhana metode remote server adalah mengoperasikan komputer server dari jarak jauh melalui jaringan seolah-olah sedang bekerja dihadapan komputer tersebut. Syarat utama server dapat di remote adalah terbukanya port services tertentu yang memungkinkan klien menjalankan request menuju server melalui jaringan baik secara lokal (melalui jaringan-LAN) maupun secar jarak jauh (melalui jaringan Internet / WAN). Sebagai contoh sebuah VPS dengan IP Publik 103.50.167.15 berbasis Debian 11 yang dijalankan dinegara Amerika dapat diakses dan dijalankan dari Indonesia.
- Berbagai macam solusi untuk Remote Server
Untuk melakukan remote server kita bisa menggunakan tools dan prokol berikut ini disesuaikan dengan kebutuhan dan jenis server yang akan di remote.
- RDP (Remote Desktop Protocol).
RDP merupakan layanan yang memudahkan user menggunakan remote host atau perangkat jarak jauh pada keluarga sistem operasi Windows. Secara default port layanan RDP adalah 3389. Dengan menggunakan protokol ini, pengguna dapat berinteraksi dengan server Windows seperti sedang berada di depan monitor. Selain Windows Server, saat ini banyak juga sistem operasi yang melengkapi sistemnya dengan protokol RDP seperti FreeBSD, Linux, Solaris, Unix, Solaris dan MacOS.
- Protokol Telnet
Protokol telnet adalah protokol remote server generasi pertama yang bekerja pada layer 7 OSI Layer (Application) sehingga memungkinkan pengguna mengakses dan mengoprasikan komputer melalui terminal atau melalui antar muka baris perintah (CLI). Syarat utama melakukan remote server melalui protokol telnet yaitu terdapat layanan telnet disisi server dan klien. Protokol telnet menggunakan port 23. Data yang ditransimisikan menggunakan telnet tidak dienkripsi, sehingga dapat rentan terhadap peretasan atau perekaman data (sniffing).
- Protokol Rlogin
Protokol Rlogin sama dengan konsep telnet, namun lebih berfokus pada koneksi antar mesin Unix. rlogin menggunakan port TCP 513, karena memiliki masalah yang sama dengan protokol telnet yaitu semua informasi termasuk kata sandi, dikirimkan tanpa enkripsi menjadikan protokol ini jarang digunakan untuk melakukan remote server melalui jaringan yang tidak terpercaya (seperti internet publik).
- Protokol SUPDUP
Protokol supdup menggunakan port 95 yang awalnya dibangun untuk menghubungkan antar-ITS System dan intelegent terminal. Protokol ini memiliki tampilan yang lebih baik dibandingkan telnet dengan tampilan User-Interfacenya.
- Protokol Secure Shell (SSH)
Protokol SSH banyak digunakan oleh para administrator jaringan sebagai pengganti Telnet yang dianggap kurang aman. SSH pertama kali diperkenalkan oleh Tatu Ylonen dari Universitas Helsinkin Finlandia, protokol ini menggunakan metode saluran aman dan teknik enkripsi dalam komunikasinya, membuat protokol ssh relatif lebih aman dibandingkan telnet, RAW, rlogin, atau koneksi lainnyaa.
- Cara Kerja SSH & Tools SSH Client
SSH (Secure
Shell) protokol menggunakan enkripsi untuk mengamankan koneksi antara klien dan
server. Semua authentikasi user, perintah, output, dan file transfer di
enkripsi untuk mencegah serangan dari intruder. Untuk memahami cara kerja
protokol ini bisa dilihat pada gambar dibawah.
Syarat utama
komunikasi dengan protokol SSH adalah terdapatnya SSH Client dan SSH Server.
Komunikasi bermula dari SSH Client mengirimkan permintaan koneksi ke server.
Permintaan ini berisi informasi seperti username, alamat IP Server dan port SSH
(secara default port 22). Jika port tersebut dalam kondisi open maka request di
respon dengan permintaan authentikasi. Klien akan meminta public key dan host
key pada server SSH saat pertama kali terhubung. Selanjutnya server akan
menentukan jenis algoritma yang akan dipakai untuk mengamankan transmisi data
yang terjadi, yaitu dengan TripleDES atau IDEA ataupun yang lainnya. Komputer
klien akan menciptakan session key serta mengenkripsinya dengan public key yang
diperoleh dari server. Begitu pula sebaliknya, SSH server akan mendekripsi
session key dari komputer klien dan mengenkripsinya kembali dengan public key
yang dikirimkan oleh klien. Kemudian session key tersebut dikirimkan ke
komputer klien untuk diverifikasi. Jika tahapan-tahapan tersebut sukses
dilalui, akan muncul prompt login pada layar monitor komputer klien. Dengan
demikian, koneksi remote dengan protokol SSH telah berhasil berjalan antara
server dan klien.
Banyak tools SSH
Client yang bisa kita gunakan diantaranya, Putty, PuttyTray, MobaXterm,
SMARTTY, mRemoteNG, KiTTY dan lain-lain.
Adapun cara
menggunakan SSH Client di console linux bisa menggunakan perintah berikut.
ssh username@ip_remote_server
- Keunggulan Secure Sheel (SSH)
Remote server SSH lebih unggul dibandingkan yang lain karena kelebihan-kelebihan berikut :
- Ekripsi End-to-End : Data akan dienkripsi sebelum di transmisikan antara klien dan server.
- Mempunyai standar authentikasi yang kuat dalam proses mengakses server.
- Mendukung berbagai metode authentikasi, mulai dari username password, kunci publik dan privat dan metode authentikasi dua faktor.
- Tunneling dan Port Forwarding.
- Bisa digunakan untuk melakukan trasfer file dengan aman dengan SFTP (SSH File Trasfer Protocol).
Masih banyak kelebihan lainnya yang membuat SSH menjadi pilihan utama untuk melakukan remote server di setiap data center dan perusahaan besar.
- Apa itu Enkripsi ?
Sedari tadi kita
banyak menggunakan istilah enkripsi, tapi tahukan kamu apa itu enkripsi ?.
Enkripsi adalah proses mengubah informasi agar tidak dapat dibaca atau pahami
oleh orang lain yang tidak berwenang, dan hanya bisa diintrepretasikan oleh
pihak yang memiliki key (kunci) untuk mengurai (decode) informasi tersebut.
Mudahnya enkripsi ini adalah teknik pengubahan bentuk asli menjadi bentuk lain
agar yang tidak mudah dibaca informasinya. Misalnya “tkjwikrama” menjadi “dGtqd2lrcmFtYQ==”.
Jenis-jenis Enkripsi :
1. Enkripsi Simetris
Dalam enkripsi simetris, pengirim dan penerima menggunakan kunci yang sama untuk mengenkripsi dan mendekripsi pesan. Kunci ini harus dijaga dengan ketat agar tidak jatuh ke tangan yang salah. Contoh ekripsi simetris : Algoritma DES (Data Encryption Standard) dan AES (Advanced Encryption Standard)
2. Enkripsi Asimetris
Dalam enkripsi asimetris, ada dua kunci terkait: kunci publik (dipublikasikan) dan kunci privat (rahasia). Pesan yang dienkripsi dengan kunci publik hanya dapat diurai dengan kunci privat yang sesuai, dan sebaliknya. Contoh ekripsi asimetris : RSA (Rivest-Shamir-Adleman)
3. Hashing
Hashing bukanlah enkripsi, tetapi lebih kepada pembuatan "sidik
jari" unik untuk setiap data. Informasi yang di-"hash" akan
menghasilkan nilai yang unik dan tetap, memungkinkan verifikasi integritas
data. Contoh : Algoritma hash seperti SHA-256 (Secure Hash Algorithm) digunakan
secara luas dalam keamanan data.
Konsep SSH Key Based Authentication
Kekurangan
sistem autentikasi dalam SSH yang hanya sekedar memvalidasi username dan
password adalah serangan bruteforce, yaitu peretas melakukan upaya login dengan
mengacak tiap karakter secara terus menerus. Untuk memastikan hanya user tertentu
yang bisa mengakses server dan mencegah serangan brute force kita bisa
menggunakan metode authentikasi berbasis kunci (Key-Based Authentication).
Dengan menggunakan pasangan kunci (key-pair) private dan public.
Cara kerja SSH Key-based Authentication
Untuk melakukannya,
kita harus membuat (generate) pasangan kunci kriptografi yang cocok. Salah satunya
sebagai private key (kunci pribadi) dan yang lain sebagai public key (kunci publik).
File private key digunakan sebagai kredensial authentikasi, dan seperti
password, kunci ini harus di rahasiakan dan disimpan dengan aman. Sedangkan Public
key tidak perlu dirahasiakan, karena nantinya public key akan di copy kedalam
system / server yang akan kita remote. dan digunakan untuk memverifikasi
private key. Ketika ada percobaan log-in, SSH Server akan menggunakan Public Key
untuk mengeluarkan tantangan (challenge) yang hanya dapat dijawab dengan benar
menggunakan Private Key yang cocok. SSH klien akan akan mengautentikasikan
login menggunakan Private Key-nya. Hal ini memungkinkan kita mengakses sistem dengan
aman tanpa harus memasukan kata sandi. Analogi sederhananya public key ini
seperti gembok yang dipasang di pintu, untuk bisa membukanya kita membutuhkan
kunci yang cocok atau private key yang cocok.
Okee setelah
memahami konsep cara kerjanya, ayo kita praktikan !!!
Konfigurasi SSH Key-Based
Authentication di Linux (OpenSSH)
Dalam praktik
ini saya akan mendemonstrasikan cara konfigurasi SSH Key-Based di OpenSSH yang
menjadi software SSH Server bawaan di banyak sistem operasi (Linux, Windows,
OpenBSD, dll). Jika di linux server teman-teman belum terinstall OpenSSH,
silahkan instal terlebih dahulu :
Untuk keluarga
distro Debian
apt-get update
apt-get install openssh-server
Untuk keluarga
distro RHEL
dnf update
dnf install openssh-server
Oke setelah
dipastikan SSH Server sudah terinstal di Mesin yang akan kita remote, mari kita
lanjutkan konfigurasi SSH-Key Based Authentication.
Akan ada 3 skenario yang akan di demokan, pertama remote server akan dilakukan dari linux lain, kedua remote server akan dilakukan dari Windows host, dan yang terakhir remote server menggunakan tools Putty. Pada semua skenario kegiatan inti yang kita lakukan adalah (1)membuat / generate key-pair (2)upload public key ke host yang akan diremote (3) Ujicoba login kedalam remote host.
- Melakukan remote dari Linux Host
1. Login kedalam Linux client
2. Generate key-pair (pasangan kunci) SSH di terminal.
Untuk menjalankan perintahnya kamu harus masuk sebagai user root
atau user biasa yang memiliki privileges root (sudoers). Untuk konfigurasi sudo
bisa klik disini. Berikut perintah generate key-pair :
sudo ssh-keygen -t rsa
Keterangan :
#Langsung tekan ENTER untuk memilih lokasi bawaan (default),
biasanya disimpan pada direktori /root/.ssh/id_rsa untuk user root.
#Opsional, kita bisa set-password untuk key-pair. Jika tidak mau
set-password, bisa langsung tekan ENTER saja. NOTE : Jika tidak menambahkan
password, maka setiap orang yang memiliki private key akan bisa mengakses
target-host.
ssh-keygen : adalah tool yang digunakan untuk membuat (generate),
manage, dan menconvert kunci autentikasi untuk SSH.
-t : menentukan tipe kunci yang akan buat.
rsa : memiliki kepanjangan Rivest Shamir Adleman adalah salah satu
tipe algoritma kunci yang paling banyak dipakai untuk membuat digital signature
dan enkripsi.
#Jika kita tidak menentukan -t rsa maka key-gen akan memilih tipe kunci rsa sebagai default
- Macam-macam tipe algoritma kunci yang bisa di pakai untuk
authentikasi OpenSSH :
rsa – algortima didasarkan pada
kesulitan memfaktorkan bilangan besar, ukuran kunci minimal 2048 bit lebih baik
lagi jika 4096 bit. * akan mudah di pecahkan di masa depan.
dsa – algoritma tanda tangan digital
pemerintah AS yang lawas. Ukuran 1024 bit *dalam bentuk asli sudah tidak lagi
direkomendasikan.
ecdsa – algoritma tanda tangan digital
baru pemerintah AS. Ukuran kunci 256, 384, dan 521 (sic!) bit. *
direkomendasikan untuk memilih ukuran 521bit.
ed25519 – Algoritma yang baru
ditambahkan di OpenSSH. Dukungan untuk klien masih terbatas, bagi penggunaan
aplikasi tujuan umum mungkin belum disarankan.
Untuk menentukan jenis algoritma dan ukuran kunci bisa mengunakan
opsi -b.
Contoh : ssh-keygen -t ecdsa -b 512 atau ssh-keygen -t rsa -b 4096
Sumber : https://www.ssh.com/academy/ssh/keygen
3. Copy public key yang sudah di generate ke remote host.
Gunakan perintah berikut : ssh-copy-id -i /path/to/publickey
username@ip_remote_host
sudo ssh-copy-id -i /root/.ssh/id_rsa.pub sysadmin@10.0.0.1
Keterangan :
No1-adalah perintah untuk mengcopy public key ke remote host.
No2-Untuk koneksi pertama kali, akan ada dialog untuk memastikan membuat
koneksi ? ketik yes. Untuk koneksi kedua dan seterusnya, tidak ditanya
lagi karena host sudah di tambahkan kedalam file known_hosts.
No3-Masukan passwod untuk user yang akan kita remote.
No4-Keterangan public key sudah berhasil ditambahkan ke remote host.
ssh-copy-id : adalah tools/script ssh
yang bisa digunakan untuk mengotorisasi kunci yang tersedia di lokal, kedalam
mesin yang akan di remote (remote host). Cara kerjanya yaitu mencopy atau menambahkan
file public key, kedalam file (~/.ssh/authorized_keys) milik remote host. Dan memungkinkan
untuk membuat direktori dan file tersebut di remote host jika belum ada.
-i : adalah opsi untuk menambahkan identity_file
atau lokasi file publickey disimpan.
- Karena saya menggunakan user biasa, untuk bisa mengakses file .ssh milik root, gunakan sudo diawal perintah.
4. Remote kedalam remote host menggunakan perintah berikut : ssh username@ip_remote_host
sudo ssh sysadmin@10.0.0.1
Remote host berhasil di akses tanpa memasukan password, konfigurasi SSH-Keybased Authentication berhasil !!!
- Melakukan remote dari Windows Host
1. Buka Command Prompt (CMD)
Mengunakan shortcut dengan menekan tombol (Windows + R) dan ketik
cmd kemudian enter.
ssh-keygen -t rsa
3. Tampilkan isi file public key (id_rsa.pub) kemudian copy ke clipboard
type .ssh\id_rsa.pub
4. Login kedalam remote host, kemudian buat direktori .ssh dan file authorized_key di home direktori user yang mau diremote.
mkdir ~/.ssh
nano ~/.ssh/authorized_keys
5. Tempel (paste) file public key kedalam file authorized_keys
6. Uji Coba akses SSH ke Remote
host.
ssh username@ip_remote_host
Remote SSH Key-Based Authentication berhasil !!!
- Melakukan remote SSH-KeyBased menggunakan Putty
Untuk melakukan koneksi SSH berbasis kunci menggunakan Putty, kita harus menyiapkan software PuttyGen (untuk generate key-pair) dan Putty. Bisa di download disini.
1. Buka aplikasi PuttyGen kemudian buat (generate) key-pair baru.
Klik Generate.
Gerak-gerakan cursor mouse untuk menghasilkan kunci baru.
2. Copy script Public-Key ke clipboard atau ke notepad
Baris ke-2 adalah public key dari PuttyGen, dan baris-1 adalah public keys tutorial sebelumnya.
4. Save private-key untuk kredensial remote server.
5. Ujicoba remote server
menggunakan putty.
Buka aplikasi putty > masukan username@ip_remote_host
Kemudian insert private-key, expend klik tanda +disebelah SSH > + Auth > Credentials
Pilih lokasi file private key, kemudian klik Open.
Pada saat koneksi pertama kali akan ada alert, klik Accept saja.
Remote SSH Berhasil !!!
Penutup
Selamat kamu sudah memahami konsep remote server, seluk beluk Secure Shell atau SSH dan praktik konfigurasi Autentikasi SSH berbasis kunci, yang mempercepat pekerjaan remote server tanpa harus mengingat-ingat password. Namun ada satu hal yang perlu diperhatikan yaitu kerahasiaan file Private Server harus di simpan dengan aman.
Semoga bermanfaat !
Wassalamualaikum wr.wb.
Sumber referensi :
https://www.ssh.com/academy/ssh
https://medium.com/@ucihamadara/ssh-key-based-authentication-5816d6238c2
https://www.ssl2buy.com/wiki/symmetric-vs-asymmetric-encryption-what-are-differences
0 Comments