Konfigurasi SSH Key-Based Authentication

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
Lets go.. kita lanjut ke topik pertama.

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 :

  1. Ekripsi End-to-End : Data akan dienkripsi sebelum di transmisikan antara klien dan server.
  2. Mempunyai standar authentikasi yang kuat dalam proses mengakses server.
  3. Mendukung berbagai metode authentikasi, mulai dari username password, kunci publik dan privat dan metode authentikasi dua faktor.
  4. Tunneling dan Port Forwarding.
  5. 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.

   
    2. Generate key-pair SSH di terminal menggunakan perintah berikut.
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


      3. Login kedalam remote server, kemudian tempel (paste) public key dalam file (~/.ssh/authorized_keys)

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

https://i12bretro.github.io/tutorials/0554.html

Post a Comment

0 Comments