Tutorial ini membahas cara meningkatkan keamanan login remote menggunakan SSH dengan melakukan pengaturan pada konfigurasi sshd seperti membatasi user dan group yang diizinkan, mengatur interval pengiriman pesan hidup, dan memaksa otentikasi menggunakan kunci publik. Langkah-langkah pentingnya adalah membuat pasangan kunci publik-pribadi menggunakan ssh-keygen dan mengkonfigurasi sshd untuk hanya mengizinkan otentik
1. Tutorial SSH
GTK
SSH: menyediakan dukungan kedua protokol
SSH versi 1 dan versi 2 sebagai media
Meningkatkan
komunikasi aman dan terenkripsi yang
terjadi antara ssh dan sshd.
Tulisan ini tidak akan membahas
Keamanan
secara mendalam mengenai protokol
SSH versi 1 dan versi 2. Tulisan ini juga
tidak akan menjelaskan cara instalasi
Remote Login OpenSSH. Bagi Anda yang ingin
mengetahui lebih jauh mengenai
spesifikasi Protokol SSH silakan
berkonsultasi dengan manual page
Sekarang bukan lagi era telnet, karena sangat tidak aman. ssh(1) dan sshd(8). Begitu pula bagi
Informasi yang Anda ketik ketika telnet dapat dicuri dengan Anda yang tertimpa nahas tidak memiliki
mudah. Tiba saatnya Anda beralih ke ssh. instalasi OpenSSH pada sistem, silakan
berkonsultasi dengan file INSTALL dan
F
asilitas remote login yang terenkripsi antara dua host menggunakan README yang tersedia bersama dengan
memungkinkan user suatu sistem jaringan yang seperti kita tahu tidak distribusi source code OpenSSH.
untuk menjalankan perintah dari aman.
jarak jauh, telah berkembang dari waktu Seperti yang disebutkan sebelumnya, Konfigurasi sshd
ke waktu. Di satu sisi fasilitas ini di sini terjadi interaksi antara dua Langkah pertama mengamankan
memberikan keuntungan bagi user, “untrusted” host. Salah satu dari kedua komunikasi ssh antardua host adalah
karena tidak lagi harus dibatasi oleh untrusted host tersebut bertindak sebagai dengan melakukan pengetatan pada sisi
lokasi, namun di sisi lain fasilitas ini “SSH server host”, sedangkan yang sshd. Konfigurasi standar sshd pada
membuka celah bagi tangan-tangan jahil lainnya sebagai “SSH client host”. SSH kebanyakan distribusi biasanya belum
untuk mengacaukan sistem. server host menjalankan sebuah program optimal dalam hal pemanfaatan fasilitas
Sejak penggunaan telnet sebagai daemon yang bernama sshd untuk keamanan yang mampu diberikan oleh
program remote login ditinggalkan, memberi layanan logging, sedangkan OpenSSH.
secara de facto ssh merupakan program SSH client host menggunakan program Konfigurasi sshd tersimpan dalam file
remote login yang paling banyak SSH client (selanjutnya hanya akan /etc/ssh/sshd_config. Perilaku sshd akan
digunakan, karena ssh yang relatif lebih digunakan ssh untuk menyebut SSH mengikuti definisi yang dibuat di dalam
aman dibanding dengan metode lainnya. client) untuk mengakses sshd. file tersebut. Anda bisa memerintahkan
Namun demikian, bukan berarti ssh Kedua ssh dan sshd, pada distrubusi sshd untuk berperilaku berbeda dengan
menjamin sepenuhnya tidak akan terjadi UNIX like seperti BSD dan GNU/Linux memberikan parameter tambahan pada
penyusupan. Oleh karena itulah, tulisan hampir dipastikan telah tersedia pada command line saat menjalankan sshd.
ini dibuat untuk lebih meningkatkan instalasi standar. Pada BSD dan GNU/ Setelah melakukan perubahan pada
keamanan remote login menggunakan Linux, distribusi paket ssh biasanya file konfigurasi, hendaknya Anda
ssh. menggunakan OpenSSH. Begitu pula mengirimkan sinyal SIGHUP kepada sshd
Tulisan ini mengasumsikan pembaca pada tulisan ini, mengasumsikan Anda agar ia membaca kembali file konfigurasi
sudah terbiasa paling tidak menggunakan menggunakan OpenSSH sebagai paket dan memberikan efek atas perubahan
ssh client untuk melakukan sesi remote penyedia ssh dan sshd. yang dibuat. Jalan alternatif untuk
login. Bagi pembaca yang belum terbiasa memerintahkan sshd untuk membaca
menggunakan ssh client, silahkan OpenSSH ulang file konfigurasi adalah dengan cara
berkonsultasi dengan manual page OpenSSH yang merupakan software me-restart daemon itu. Hampir dipastikan
ssh(1). FREE hasil kerja tim OpenBSD memiliki pada distribusi GNU/Linux atau BSD
fasilitas yang tidak kalah bagusnya menyertakan script yang akan
SSH dibandingkan dengan produk komersial mempermudah proses restart ini,
SSH (ssh client) adalah program yang yang serupa. Pada kenyataannya, secara periksalah direktori script ini distribusi OS
digunakan “logging” ke suatu mesin lain. de facto, OpenSSH menjadi standar Anda, biasanya di /etc/init.d.
Dengan SSH, user dapat meng-eksekusi fasilitas “remote login” pada sebagian Berikut ini beberapa kata kunci
perintah-perintah yang tersedia di mesin besar OS UNIX like. Sebut saja, konfigurasi sshd yang akan disesuaikan.
lain tersebut. SSH ditujukan sebagai OpenBSD dan FreeBSD serta semua Kata kunci konfigurasi ini bukanlah daftar
pengganti rlogin dan rsh, untuk distribusi GNU/Linux, semuanya lengkap, melainkan hanya beberapa
menyediakan komunikasi yang aman dan menggunakan OpenSSH. OpenSSH bagian saja yang dianggap perlu
72 INFOLINUX MEI 2003 www.infolinux.web.id
2. Tutorial SSH
GTK
disesuaikan dalam rangka langkah remote login dan hanya 1 group yang hubungan pada saat user gagal
pengamanan. Daftar lengkap konfigurasi diizinkan. Suatu hal yang masuk akal jika melakukan otentikasi. Memperkecil waktu
sshd dapat Anda temui di manual page anda menggunakan AllowGroups, karena default (600) mungkin akan
sshd_config(5). Anda hanya perlu menyebutkan satu meningkatkan keamaan, maka perkecil
pattern group saja. Bandingkan jika Anda waktu default konfigurasi ini.
AllowGroups menggunakan DenyGroups pada kasus LoginGraceTime 300
Kata kunci ini dapat diikuti dengan ini, di mana anda harus menyebutkan 99
sebuah daftar pattern nama group. Setiap pattern group. MaxStartups
pattern nama group, jika lebih dari satu, Kata kunci ini memberi nilai maksimum
dipisahkan oleh spasi. Jika disebutkan, DenyUsers koneksi yang gagal terotentikasi pada
maka user yang diperbolehkan login Mirip dengan DenyGroups, DenyUsers “waktu yang sama”. Penggunaan
adalah user yang termasuk dalam group ini kebalikan dari AllowUsers. Trik “waktu yang sama” mungkin kurang
yang disebutkan pada kata kunci ini. penggunaannya pun serupa dengan kata tepat. Untuk menghindari kesalah-
Penggunaan wildcards “*” dan “?” kunci DenyGroups. pahaman, istilah “concurrent” lebih tepat
diperbolehkan dan hanya nama group untuk digunakan.
yang dapat dipergunakan, group ID ClientAliveInterval Selanjutnya, bila ada percobaan
numerik tidak dikenal di sini. Jika dalam waktu yang cukup lama Anda koneksi lain, maka koneksi itu di “drop”
Contoh berikut ini mengakibatkan meninggalkan console remote Anda oleh sshd sampai koneksi itu berhasil di-
hanya user-user yang termasuk dalam tanpa ada aktivitas, sshd akan tetap authentikasi atau LoginGraceTime
group “wheel” saja yang bisa melakukan mempertahankan koneksi agar tetap terlampaui. Secara default, nilai
remote login. terjalin. Hal ini merupakan risiko MaxStartups adalah 10. Perkecil nilai ini
AllowGroups wheel keamanan tersendiri bisa pada saat itu untuk memperkecil peluang keberhasilan
ada orang jahil yang memanfaatkan “brute attack”.
AllowUsers kelengahan Anda. Oleh karena itu, Anda MaxStartups 5
Kata kunci ini memberikan efek yang perlu memberi waktu pada sshd agar
mirip dengan efek AllowGroups, hanya mengirimkan pesan untuk meminta PasswordAuthentication
saja kata kunci ini berlaku untuk pattern respon jika tidak menerima paket data Bila kata kunci ini diberi nilai “yes”, maka
nama user. dari ssh pada interval tertentu. metode otentikasi menggunakan
AllowUsers shiro henry salman yanofsky rojul Berikan interval waktu dalam detik password akan diperbolehkan. Otentikasi
pada kata kunci ClientAliveInterval agar menggunakan password adalah yang
Baris di atas mengindikasikan hanya sshd mengirim “Alive Message” jika paling umum digunakan. Namun
user-user shiro, henry, salman, yanofski, terjadi idle. Jika anda memberikan demikian, penggunaan metode ini
dan rojul yang diperkenankan untuk interval 0, maka sshd tidak akan pernah menurut penulis memberikan peluang
melakukan remote login. Jika pattern user mengirim alive message. untuk terjadinya “brute attack”.
diberikan dalam format USER@HOST, ClientAliveInterval 60 Meskipun brute attack sudah diantisipasi
maka USER dan HOST diperiksa secara dengan LoginGraceTime dan Max-
terpisah untuk membatasi USER supaya ClientAliveCountMax Startups, ada baiknya metode otentikasi
hanya melakukan remote login dari HOST Kata kunci ini menyebutkan jumlah password benar-benar ditiadakan.
saja. Contoh berikut membatasi agar user maksimum alive message boleh dikirim Sebagai pengganti otentikasi pass-
henry hanya melakukan remote login dari oleh sshd tanpa mendapat respon. Jika word, digunakan metode “Key Authenti-
host boypyt.nurulfikri.co.id. jumlah ini tercapai dan tetap tidak ada cation”. Metode ini cenderung lebih
AllowUsers henry@boypyt.nurulfikri.co.id respon dari client, sshd akan memutus- aman, karena menggunakan sepasang key
kan koneksi yang terjadi dengan client. yang dibuat secara acak. Password dapat
DenyGroups ClientAliveContMax 5 digunakan untuk mencegah key
Kata kunci ini kebalikan dari Allow- digunakan oleh orang yang tidak berhak.
Groups. Gunakan kata kunci ini jika Alive message yang dikirim oleh sshd Perlu Anda perhatikan, bahwa password
jumlah group yang tidak diizinkan menggunakan kanal terenkripsi. Oleh yang digunakan oleh key dan sshd (yang
melakukan remote login lebih sedikit karena itu, jaminan tidak terjadinya diperbolehkan oleh Password-
dibanding jumlah group yang diizinkan, “spoof” terhadap pesan ini bisa Authentication) adalah berbeda. Password
jika sebaliknya, maka gunakan diandalkan. yang digunakan oleh key adalah untuk
AllowGroups. Hal ini bukan keharusan, memeriksa apakah key tersebut digunakan
melainkan hanya untuk kemudahan saja. LoginGraceTime oleh orang yang berhak. Jika key berhasil
Bayangkan jiga ada 99 group yang Kata kunci ini menyebutkan waktu dalam diverifikasi, selanjutnya sshd akan
dimaksudkan untuk tidak diizinkan detik di mana sshd akan memutuskan menggunakan key tersebut untuk meng
www.infolinux.web.id INFOLINUX MEI 2003 73
3. Tutorial SSH
GTK
koneksi. Sedangkan jika menggunakan ke sana. Berikut ini langkah-langkah Membuat Private/Public Key
otentikasi password, sudah tidak pengiriman sinyalnya: Sekarang saatnya untuk membuat kedua
memperhatikan key, asalkan seseorang # kill -HUP ‘cat /var/run/sshd.pid‘ kunci yang dibutuhkan tersebut.
berhasil memasukkan password yang Perhatikan: yang digunakan adalah Gunakan ssh-keygen untuk membuat
benar, maka sshd akan mengotentikasi tanda “ ` “ (backtick) bukan “ ‘ “ (single Authentication Key yang akan digunakan
koneksi. Di sini terlihat dengan jelas quote). bersama ssh(1).
peningkatan keamanan dengan Jika di sistem Anda tersedia script $ ssh-keygen -t dsa
menggunakan Key Authentication. sshd, maka Anda bisa juga
Mengenai key yang akan digunakan menggunakan script itu untuk me-restart Option -t diperlukan untuk mendefinisi-
pada prosedur otentikasi akan dibahas sshd tanpa harus mengirim sinyal kan metode enkrip yang akan digunakan
pada bagian lain tulisan ini. SIGHUP supaya sshd kembali membaca pada key-pair (public/private key) yang
PasswordAuthentication no file konfigurasi. Berikut ini penggunaan akan dibuat. Anda bisa memilih dsa atau
script init sshd di distribusi GNU/Linux rsa sebagai metode enkrip key-pair.
PermitRootLogin SuSE, RedHat dan Mandrake. Selanjutnya Anda diminta memutuskan
Kata kunci ini sebaiknya diberi nilai “no” SuSE, RedHat, dan Mandrake: tempat di mana key akan disimpan. Tekan
untuk mencegah login secara langsung # /etc/init.d/sshd restart saja ENTER jika key hendak disimpan di
menggunakan account “root”. Hal ini tempat default ~/.ssh/id_dsa
semata-mata untuk mempersulit atau hanya di SuSE: Enter passphrase (empty for no passphrase):
percobaan mengambil alih kendali sistem. # rcsshd restart Enter same passphrase again:
PermitRootLogin no
atau hanya di Mandrake: Anda diminta untuk memberi pass-
Dengan demikian, setiap sesi login # service sshd restart word untuk key yang akan di-generate
harus didahului dengan otentikasi sebanyak dua kali (yang terakhir
sebagai user biasa. Barulah kemudian Authentication Key digunakan untuk meyakinkan password
user yang berhasil diotentikasi otentikasi Secara keseluruhan, perubahan yang yang dimaksud sesuai dengan keinginan
boleh mengubah previlege-nya ke “root”. dilakukan pada perilaku sshd (modifikasi Anda). Seperti yang dijelaskan sebelum-
sshd_config) mengakibatkan satu nya, password ini akan digunakan untuk
PubkeyAuthentication penyesuaian prosedur koneksi dilihat dari memastikan pengguna key ini adalah
Memberi nilai “yes” pada kata kunci ini, sisi client. Penyesuaian tersebut adalah yang berhak menggunakannya.
berarti memperbolehkan otentikasi pada metode otentikasi. Dengan Proses generate key-pair memakan
menggunakan key. Pada kata kunci perubahan di sisi sshd, maka client tidak waktu tidak terlalu lama, walaupun
sebelumnya, PasswordAuthentication lagi diberikan peluang untuk melakukan tergantung pada kecepatan prosesor
sudah dicegah, oleh karena itulah kata otentikasi menggunakan password, client mesin Anda. Setelah proses selesai key-
kunci ini seharusnya diperbolehkan. hanya diberi peluang untuk pair akan tersimpan di dalam direktori ~/
PubkeyAuthentication yes mengotentikasikan dirinya dengan .ssh sebagai ~./ssh/id_dsa untuk private
menggunakan “Authentication Key” atau key dan ~/.ssh/id_dsa.pub untuk public
Kata kunci lain yang tidak disebutkan Kunci Authentikasi. key.
di sini, seperti yang telah diutarakan Paling tidak, setiap user yang ingin
sebelumnya, dijelaskan secara detail di melakukan remote login ke server, harus Menyelenggarakan koneksi SSH
manual page sshd_config(5). Kata kunci- memiliki dua kunci. Kunci tersebut adalah lebih aman
kata kunci itu (yang tidak disebutkan di “Private Key” dan “Public Key”. Private UNIX Client
sini), adalah kata kunci yang menurut key adalah kunci pribadi yang harus dijaga Dengan memiliki key-pair, user sudah
pandangan penulis tidak memberikan oleh setiap user. Kunci tersebut tidak dapat melakukan koneksi yang aman ke
efek signifikan untuk keamanan atau boleh jatuh ke tangan orang lain. Izin sshd. Pada saat client memulai koneksi,
memiliki nilai default yang cukup aman, baca-tulis-eksekusi untuk “group” dan sshd (server) akan memeriksa daftar
sehingga tidak perlu lagi dilakukan “other” pada kunci ini harus ditiadakan. public key yang diperbolehkan untuk
modifikasi padanya. Kunci ini adalah identitas pribadi yang login. Daftar tersebut diambil dari file ~./
digunakan oleh sshd untuk melakukan ssh/authorized_keys. Oleh karena itulah,
Aktivasi efek konfigurasi authentikasi dan memutuskan untuk public key yang dimiliki user harus
Setelah melakukan perubahan memperbolehkan atau tidak memper- masuk dalam daftar itu. Di mesin server,
konfigurasi, agar memberikan efek pada bolehkan sesi login user. Sedangkan tambahkan isi id_dsa.pub ke dalam file
sshd, selanjutnya Anda perlu public key adalah kunci pasangan private ~/.ssh/authorized_keys.
memberikan sinyal SIGHUP kepada sshd. key. Public key ini akan disimpan di sisi $ cat id_dsa.pub > ~/.ssh/
Identifikasilah pid sshd lalu kirim sinyal sshd dan boleh dibaca secara global. authorized_key
74 INFOLINUX MEI 2003 www.infolinux.web.id
4. Tutorial SSH
GTK
jika hanya satu public key yang sebelumnya (id_dsa atau id_rsa) di salah
diperbolehkan, atau gunakan double satu folder windows. Setelah itu, Gambar 5.
PuTTY
redirection “>>” jika ingin ada lebih dari jalankan PuTTYgen.
satu public key dalam daftar tersebut Setelah tampil window PuTTYgen,
untuk memasukkan public key lainnya. pilihlah Convertions Import keys, lalu
Jika public key teridentifikasi sebagai pilihlah Private key rsa atau dsa yang
key yang diperbolehkan login, server akan akan di konversi ke format PuTTY.
memberikan tantangan berupa nomor acak
kepada client yang mencoba login. Nomor Gambar 2.
acak tersebut dienkripsi menggunakan Import
public key user bersangkutan. Tantangan Keys
nomor acak itu hanya bisa didekripsi
dengan menggunakan private key
pasangan yang tepat, yaitu private key
yang dimiliki user. Private key ini meng- Untuk membuka Private key Anda Gambar 6.
Auth Key
gunakan id_dsa yang terdapat di dalam file akan diminta memberikan password key, PuTTY
~/.ssh/identity. Tambahkan isi id_dsa ke masukkan password yang digunakan
dalam file ~/.ssh/identity di host client, saat pembuatan key tersebut. password Private Key. Jika semua
agar ssh client dapat menjawab tantangan berjalan mulus, maka sesi ssh berhasil
nomor acak dengan tepat. Gambar 3. dilakukan oleh PuTTY, seperti berikut
$ cat id_dsa > ~/.ssh/identity Key Password ini.
login as: shiro
Windows Client Setelah Anda berhasil memberikan Authentication with public key “imported-
Untuk user yang akan menyelenggarakan password key, PuTTYgen akan openssh-key”
koneksi ssh menggunakan Windows melakukan konversi format tersebut ke Passphrase for key “imported-openssh-key”:
sebagai clientnya, biasa nya menggu- format yang dikenal oleh PuTTY. [shiro@aurum shiro]$
nakan PuTTY sebagai program ssh client. Simpanlah hasil konversi tersebut. Untuk
PuTTY bisa di-download secara gratis dari menyimpan hasil konversi tekan tombol Dengan
http://www.chiark.greenend.org.uk/ “Save the generated key”, karena saat ini pembatasan
sgtatham/putty/download.html. Jika Anda meng-generate Private Key, maka di sisi server
Anda menggunakan PuTTY, maka jangan pilih lah tombol “Save private key”. (sshd) akan
lupa untuk men-download juga Hasil memaksa
PuTTYgen. PuTTY tidak mengenal konversi yang user di sisi
authentication key yang dibuat OpenSSH dilakukan oleh Gambar 7. Load client untuk
secara langsung. Oleh karena itulah, key PuTTYgen Private Key menggunakan
yang anda buat sebelumnya harus bisa Anda metode koneksi dengan lebih aman.
dikonversi dahulu ke dalam format yang gunakan Setelah mempersiapkan key-pair,
dimengerti oleh PuTTY. untuk selanjutnya koneksi ssh bisa dilakukan
Gambar 4. Save Key
Langkah-langkah konversi key dari mengotentikasi seperti biasa. Tidak ada perbedaan cara
format OpenSSH ke format putty adalah koneksi ssh. Untuk Memulai sesi ssh, penggunaan ssh client dengan
sebagai berikut: sekarang jalankan PuTTY, masukkan perubahan ini, hanya saja di sini tidak
Pertama siapkan file yang berisi nama host atau IP address host tujuan lagi digunakan password user di sistem.
private key yang telah di-generate login. Jangan lupa untuk memilih Password yang ditanyakan pada awal
protokol ssh (port 22). Lalu dari menu koneksi adalah password yang
pilihan PuTTY, yang terletak di sebelah digunakan pada saat membuat key-pair.
kiri, pilihlah SSH Auth. Berikut ini ilustrasi percobaan login
Dari menu Authentikasi SSH PuTTY, setelah langkah-langkah pengamanan.
bukalah Private key yang dihasilkan dari [shiro@aurum shiro]$ ssh 192.168.1.253
konversi oleh PuTTYgen sebelumnya. Enter passphrase for key ’/home/shiro/
Lalu pilih Open untuk memulai .ssh/identity’:
koneksi. Kemudian Anda akan diminta (masukkan password key-pair)
untuk memasukkan nama user yang [shiro@cobalt shiro]$
ingin digunakan dalam sesi login, serta Reza Iskandar Achmad
Gambar 1. PuTTY key-gen kembali diminta untuk memasukkan (reza@chipset.or.id)
www.infolinux.web.id INFOLINUX MEI 2003 75