Reza ssh

4

Click here to load reader

Transcript of Reza ssh

Page 1: Reza ssh

Tutorial GTK

www.infolinux.web.id72 INFOLINUX MEI 2003

Tutorial SSH

Fasilitas remote login yang

memungkinkan user suatu sistem

untuk menjalankan perintah dari

jarak jauh, telah berkembang dari waktu

ke waktu. Di satu sisi fasilitas ini

memberikan keuntungan bagi user,

karena tidak lagi harus dibatasi oleh

lokasi, namun di sisi lain fasilitas ini

membuka celah bagi tangan-tangan jahil

untuk mengacaukan sistem.

Sejak penggunaan telnet sebagai

program remote login ditinggalkan,

secara de facto ssh merupakan program

remote login yang paling banyak

digunakan, karena ssh yang relatif lebih

aman dibanding dengan metode lainnya.

Namun demikian, bukan berarti ssh

menjamin sepenuhnya tidak akan terjadi

penyusupan. Oleh karena itulah, tulisan

ini dibuat untuk lebih meningkatkan

keamanan remote login menggunakan

ssh.

Tulisan ini mengasumsikan pembaca

sudah terbiasa paling tidak menggunakan

ssh client untuk melakukan sesi remote

login. Bagi pembaca yang belum terbiasa

menggunakan ssh client, silahkan

berkonsultasi dengan manual page

ssh(1).

SSHSSH (ssh client) adalah program yang

digunakan “logging” ke suatu mesin lain.

Dengan SSH, user dapat meng-eksekusi

perintah-perintah yang tersedia di mesin

lain tersebut. SSH ditujukan sebagai

pengganti rlogin dan rsh, untuk

menyediakan komunikasi yang aman dan

terenkripsi antara dua host menggunakan

jaringan yang seperti kita tahu tidak

aman.

Seperti yang disebutkan sebelumnya,

di sini terjadi interaksi antara dua

“untrusted” host. Salah satu dari kedua

untrusted host tersebut bertindak sebagai

“SSH server host”, sedangkan yang

lainnya sebagai “SSH client host”. SSH

server host menjalankan sebuah program

daemon yang bernama sshd untuk

memberi layanan logging, sedangkan

SSH client host menggunakan program

SSH client (selanjutnya hanya akan

digunakan ssh untuk menyebut SSH

client) untuk mengakses sshd.

Kedua ssh dan sshd, pada distrubusi

UNIX like seperti BSD dan GNU/Linux

hampir dipastikan telah tersedia pada

instalasi standar. Pada BSD dan GNU/

Linux, distribusi paket ssh biasanya

menggunakan OpenSSH. Begitu pula

pada tulisan ini, mengasumsikan Anda

menggunakan OpenSSH sebagai paket

penyedia ssh dan sshd.

OpenSSHOpenSSH yang merupakan software

FREE hasil kerja tim OpenBSD memiliki

fasilitas yang tidak kalah bagusnya

dibandingkan dengan produk komersial

yang serupa. Pada kenyataannya, secara

de facto, OpenSSH menjadi standar

fasilitas “remote login” pada sebagian

besar OS UNIX like. Sebut saja,

OpenBSD dan FreeBSD serta semua

distribusi GNU/Linux, semuanya

menggunakan OpenSSH. OpenSSH

menyediakan dukungan kedua protokol

SSH versi 1 dan versi 2 sebagai media

komunikasi aman dan terenkripsi yang

terjadi antara ssh dan sshd.

Tulisan ini tidak akan membahas

secara mendalam mengenai protokol

SSH versi 1 dan versi 2. Tulisan ini juga

tidak akan menjelaskan cara instalasi

OpenSSH. Bagi Anda yang ingin

mengetahui lebih jauh mengenai

spesifikasi Protokol SSH silakan

berkonsultasi dengan manual page

ssh(1) dan sshd(8). Begitu pula bagi

Anda yang tertimpa nahas tidak memiliki

instalasi OpenSSH pada sistem, silakan

berkonsultasi dengan file INSTALL dan

README yang tersedia bersama dengan

distribusi source code OpenSSH.

Konfigurasi sshdLangkah pertama mengamankan

komunikasi ssh antardua host adalah

dengan melakukan pengetatan pada sisi

sshd. Konfigurasi standar sshd pada

kebanyakan distribusi biasanya belum

optimal dalam hal pemanfaatan fasilitas

keamanan yang mampu diberikan oleh

OpenSSH.

Konfigurasi sshd tersimpan dalam file

/etc/ssh/sshd_config. Perilaku sshd akan

mengikuti definisi yang dibuat di dalam

file tersebut. Anda bisa memerintahkan

sshd untuk berperilaku berbeda dengan

memberikan parameter tambahan pada

command line saat menjalankan sshd.

Setelah melakukan perubahan pada

file konfigurasi, hendaknya Anda

mengirimkan sinyal SIGHUP kepada sshd

agar ia membaca kembali file konfigurasi

dan memberikan efek atas perubahan

yang dibuat. Jalan alternatif untuk

memerintahkan sshd untuk membaca

ulang file konfigurasi adalah dengan cara

me-restart daemon itu. Hampir dipastikan

pada distribusi GNU/Linux atau BSD

menyertakan script yang akan

mempermudah proses restart ini,

periksalah direktori script ini distribusi OS

Anda, biasanya di /etc/init.d.

Berikut ini beberapa kata kunci

konfigurasi sshd yang akan disesuaikan.

Kata kunci konfigurasi ini bukanlah daftar

lengkap, melainkan hanya beberapa

bagian saja yang dianggap perlu

SSH:MeningkatkanKeamananRemote LoginSekarang bukan lagi era telnet, karena sangat tidak aman.Informasi yang Anda ketik ketika telnet dapat dicuri denganmudah. Tiba saatnya Anda beralih ke ssh.

Page 2: Reza ssh

Tutorial GTK

73INFOLINUX MEI 2003www.infolinux.web.id

Tutorial SSH

disesuaikan dalam rangka langkah

pengamanan. Daftar lengkap konfigurasi

sshd dapat Anda temui di manual page

sshd_config(5).

AllowGroupsKata kunci ini dapat diikuti dengan

sebuah daftar pattern nama group. Setiap

pattern nama group, jika lebih dari satu,

dipisahkan oleh spasi. Jika disebutkan,

maka user yang diperbolehkan login

adalah user yang termasuk dalam group

yang disebutkan pada kata kunci ini.

Penggunaan wildcards “*” dan “?”

diperbolehkan dan hanya nama group

yang dapat dipergunakan, group ID

numerik tidak dikenal di sini.

Contoh berikut ini mengakibatkan

hanya user-user yang termasuk dalam

group “wheel” saja yang bisa melakukan

remote login.

AllowGroups wheel

AllowUsersKata kunci ini memberikan efek yang

mirip dengan efek AllowGroups, hanya

saja kata kunci ini berlaku untuk pattern

nama user.

AllowUsers shiro henry salman yanofsky rojul

Baris di atas mengindikasikan hanya

user-user shiro, henry, salman, yanofski,

dan rojul yang diperkenankan untuk

melakukan remote login. Jika pattern user

diberikan dalam format USER@HOST,

maka USER dan HOST diperiksa secara

terpisah untuk membatasi USER supaya

hanya melakukan remote login dari HOST

saja. Contoh berikut membatasi agar user

henry hanya melakukan remote login dari

host boypyt.nurulfikri.co.id.

AllowUsers [email protected]

DenyGroupsKata kunci ini kebalikan dari Allow-

Groups. Gunakan kata kunci ini jika

jumlah group yang tidak diizinkan

melakukan remote login lebih sedikit

dibanding jumlah group yang diizinkan,

jika sebaliknya, maka gunakan

AllowGroups. Hal ini bukan keharusan,

melainkan hanya untuk kemudahan saja.

Bayangkan jiga ada 99 group yang

dimaksudkan untuk tidak diizinkan

remote login dan hanya 1 group yang

diizinkan. Suatu hal yang masuk akal jika

anda menggunakan AllowGroups, karena

Anda hanya perlu menyebutkan satu

pattern group saja. Bandingkan jika Anda

menggunakan DenyGroups pada kasus

ini, di mana anda harus menyebutkan 99

pattern group.

DenyUsersMirip dengan DenyGroups, DenyUsers

ini kebalikan dari AllowUsers. Trik

penggunaannya pun serupa dengan kata

kunci DenyGroups.

ClientAliveIntervalJika dalam waktu yang cukup lama Anda

meninggalkan console remote Anda

tanpa ada aktivitas, sshd akan tetap

mempertahankan koneksi agar tetap

terjalin. Hal ini merupakan risiko

keamanan tersendiri bisa pada saat itu

ada orang jahil yang memanfaatkan

kelengahan Anda. Oleh karena itu, Anda

perlu memberi waktu pada sshd agar

mengirimkan pesan untuk meminta

respon jika tidak menerima paket data

dari ssh pada interval tertentu.

Berikan interval waktu dalam detik

pada kata kunci ClientAliveInterval agar

sshd mengirim “Alive Message” jika

terjadi idle. Jika anda memberikan

interval 0, maka sshd tidak akan pernah

mengirim alive message.

ClientAliveInterval 60

ClientAliveCountMaxKata kunci ini menyebutkan jumlah

maksimum alive message boleh dikirim

oleh sshd tanpa mendapat respon. Jika

jumlah ini tercapai dan tetap tidak ada

respon dari client, sshd akan memutus-

kan koneksi yang terjadi dengan client.

ClientAliveContMax 5

Alive message yang dikirim oleh sshd

menggunakan kanal terenkripsi. Oleh

karena itu, jaminan tidak terjadinya

“spoof” terhadap pesan ini bisa

diandalkan.

LoginGraceTimeKata kunci ini menyebutkan waktu dalam

detik di mana sshd akan memutuskan

hubungan pada saat user gagal

melakukan otentikasi. Memperkecil waktu

default (600) mungkin akan

meningkatkan keamaan, maka perkecil

waktu default konfigurasi ini.

LoginGraceTime 300

MaxStartupsKata kunci ini memberi nilai maksimum

koneksi yang gagal terotentikasi pada

“waktu yang sama”. Penggunaan

“waktu yang sama” mungkin kurang

tepat. Untuk menghindari kesalah-

pahaman, istilah “concurrent” lebih tepat

untuk digunakan.

Selanjutnya, bila ada percobaan

koneksi lain, maka koneksi itu di “drop”

oleh sshd sampai koneksi itu berhasil di-

authentikasi atau LoginGraceTime

terlampaui. Secara default, nilai

MaxStartups adalah 10. Perkecil nilai ini

untuk memperkecil peluang keberhasilan

“brute attack”.

MaxStartups 5

PasswordAuthenticationBila kata kunci ini diberi nilai “yes”, maka

metode otentikasi menggunakan

password akan diperbolehkan. Otentikasi

menggunakan password adalah yang

paling umum digunakan. Namun

demikian, penggunaan metode ini

menurut penulis memberikan peluang

untuk terjadinya “brute attack”.

Meskipun brute attack sudah diantisipasi

dengan LoginGraceTime dan Max-

Startups, ada baiknya metode otentikasi

password benar-benar ditiadakan.

Sebagai pengganti otentikasi pass-

word, digunakan metode “Key Authenti-

cation”. Metode ini cenderung lebih

aman, karena menggunakan sepasang key

yang dibuat secara acak. Password dapat

digunakan untuk mencegah key

digunakan oleh orang yang tidak berhak.

Perlu Anda perhatikan, bahwa password

yang digunakan oleh key dan sshd (yang

diperbolehkan oleh Password-

Authentication) adalah berbeda. Password

yang digunakan oleh key adalah untuk

memeriksa apakah key tersebut digunakan

oleh orang yang berhak. Jika key berhasil

diverifikasi, selanjutnya sshd akan

menggunakan key tersebut untuk meng

Page 3: Reza ssh

Tutorial GTK

www.infolinux.web.id74 INFOLINUX MEI 2003

Tutorial SSH

koneksi. Sedangkan jika menggunakan

otentikasi password, sudah tidak

memperhatikan key, asalkan seseorang

berhasil memasukkan password yang

benar, maka sshd akan mengotentikasi

koneksi. Di sini terlihat dengan jelas

peningkatan keamanan dengan

menggunakan Key Authentication.

Mengenai key yang akan digunakan

pada prosedur otentikasi akan dibahas

pada bagian lain tulisan ini.

PasswordAuthentication no

PermitRootLoginKata kunci ini sebaiknya diberi nilai “no”

untuk mencegah login secara langsung

menggunakan account “root”. Hal ini

semata-mata untuk mempersulit

percobaan mengambil alih kendali sistem.

PermitRootLogin no

Dengan demikian, setiap sesi login

harus didahului dengan otentikasi

sebagai user biasa. Barulah kemudian

user yang berhasil diotentikasi otentikasi

boleh mengubah previlege-nya ke “root”.

PubkeyAuthenticationMemberi nilai “yes” pada kata kunci ini,

berarti memperbolehkan otentikasi

menggunakan key. Pada kata kunci

sebelumnya, PasswordAuthentication

sudah dicegah, oleh karena itulah kata

kunci ini seharusnya diperbolehkan.

PubkeyAuthentication yes

Kata kunci lain yang tidak disebutkan

di sini, seperti yang telah diutarakan

sebelumnya, dijelaskan secara detail di

manual page sshd_config(5). Kata kunci-

kata kunci itu (yang tidak disebutkan di

sini), adalah kata kunci yang menurut

pandangan penulis tidak memberikan

efek signifikan untuk keamanan atau

memiliki nilai default yang cukup aman,

sehingga tidak perlu lagi dilakukan

modifikasi padanya.

Aktivasi efek konfigurasiSetelah melakukan perubahan

konfigurasi, agar memberikan efek pada

sshd, selanjutnya Anda perlu

memberikan sinyal SIGHUP kepada sshd.

Identifikasilah pid sshd lalu kirim sinyal

ke sana. Berikut ini langkah-langkah

pengiriman sinyalnya:

# kill -HUP ‘cat /var/run/sshd.pid‘

�Perhatikan: yang digunakan adalah

tanda “ ` “ (backtick) bukan “ ‘ “ (single

quote).

Jika di sistem Anda tersedia script

sshd, maka Anda bisa juga

menggunakan script itu untuk me-restart

sshd tanpa harus mengirim sinyal

SIGHUP supaya sshd kembali membaca

file konfigurasi. Berikut ini penggunaan

script init sshd di distribusi GNU/Linux

SuSE, RedHat dan Mandrake.

SuSE, RedHat, dan Mandrake:

# /etc/init.d/sshd restart

atau hanya di SuSE:

# rcsshd restart

atau hanya di Mandrake:

# service sshd restart

Authentication KeySecara keseluruhan, perubahan yang

dilakukan pada perilaku sshd (modifikasi

sshd_config) mengakibatkan satu

penyesuaian prosedur koneksi dilihat dari

sisi client. Penyesuaian tersebut adalah

pada metode otentikasi. Dengan

perubahan di sisi sshd, maka client tidak

lagi diberikan peluang untuk melakukan

otentikasi menggunakan password, client

hanya diberi peluang untuk

mengotentikasikan dirinya dengan

menggunakan “Authentication Key” atau

Kunci Authentikasi.

Paling tidak, setiap user yang ingin

melakukan remote login ke server, harus

memiliki dua kunci. Kunci tersebut adalah

“Private Key” dan “Public Key”. Private

key adalah kunci pribadi yang harus dijaga

oleh setiap user. Kunci tersebut tidak

boleh jatuh ke tangan orang lain. Izin

baca-tulis-eksekusi untuk “group” dan

“other” pada kunci ini harus ditiadakan.

Kunci ini adalah identitas pribadi yang

digunakan oleh sshd untuk melakukan

authentikasi dan memutuskan untuk

memperbolehkan atau tidak memper-

bolehkan sesi login user. Sedangkan

public key adalah kunci pasangan private

key. Public key ini akan disimpan di sisi

sshd dan boleh dibaca secara global.

Membuat Private/Public KeySekarang saatnya untuk membuat kedua

kunci yang dibutuhkan tersebut.

Gunakan ssh-keygen untuk membuat

Authentication Key yang akan digunakan

bersama ssh(1).

$ ssh-keygen -t dsa

Option -t diperlukan untuk mendefinisi-

kan metode enkrip yang akan digunakan

pada key-pair (public/private key) yang

akan dibuat. Anda bisa memilih dsa atau

rsa sebagai metode enkrip key-pair.

Selanjutnya Anda diminta memutuskan

tempat di mana key akan disimpan. Tekan

saja ENTER jika key hendak disimpan di

tempat default ~/.ssh/id_dsa

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Anda diminta untuk memberi pass-

word untuk key yang akan di-generate

sebanyak dua kali (yang terakhir

digunakan untuk meyakinkan password

yang dimaksud sesuai dengan keinginan

Anda). Seperti yang dijelaskan sebelum-

nya, password ini akan digunakan untuk

memastikan pengguna key ini adalah

yang berhak menggunakannya.

Proses generate key-pair memakan

waktu tidak terlalu lama, walaupun

tergantung pada kecepatan prosesor

mesin Anda. Setelah proses selesai key-

pair akan tersimpan di dalam direktori ~/

.ssh sebagai ~./ssh/id_dsa untuk private

key dan ~/.ssh/id_dsa.pub untuk public

key.

Menyelenggarakan koneksi SSHlebih aman� UNIX Client

Dengan memiliki key-pair, user sudah

dapat melakukan koneksi yang aman ke

sshd. Pada saat client memulai koneksi,

sshd (server) akan memeriksa daftar

public key yang diperbolehkan untuk

login. Daftar tersebut diambil dari file ~./

ssh/authorized_keys. Oleh karena itulah,

public key yang dimiliki user harus

masuk dalam daftar itu. Di mesin server,

tambahkan isi id_dsa.pub ke dalam file

~/.ssh/authorized_keys.

$ cat id_dsa.pub > ~/.ssh/

authorized_key

Page 4: Reza ssh

Tutorial GTK

75INFOLINUX MEI 2003www.infolinux.web.id

Tutorial SSH

jika hanya satu public key yang

diperbolehkan, atau gunakan double

redirection “>>” jika ingin ada lebih dari

satu public key dalam daftar tersebut

untuk memasukkan public key lainnya.

Jika public key teridentifikasi sebagai

key yang diperbolehkan login, server akan

memberikan tantangan berupa nomor acak

kepada client yang mencoba login. Nomor

acak tersebut dienkripsi menggunakan

public key user bersangkutan. Tantangan

nomor acak itu hanya bisa didekripsi

dengan menggunakan private key

pasangan yang tepat, yaitu private key

yang dimiliki user. Private key ini meng-

gunakan id_dsa yang terdapat di dalam file

~/.ssh/identity. Tambahkan isi id_dsa ke

dalam file ~/.ssh/identity di host client,

agar ssh client dapat menjawab tantangan

nomor acak dengan tepat.

$ cat id_dsa > ~/.ssh/identity

� Windows Client

Untuk user yang akan menyelenggarakan

koneksi ssh menggunakan Windows

sebagai clientnya, biasa nya menggu-

nakan PuTTY sebagai program ssh client.

PuTTY bisa di-download secara gratis dari

http://www.chiark.greenend.org.uk/

sgtatham/putty/download.html. Jika

Anda menggunakan PuTTY, maka jangan

lupa untuk men-download juga

PuTTYgen. PuTTY tidak mengenal

authentication key yang dibuat OpenSSH

secara langsung. Oleh karena itulah, key

yang anda buat sebelumnya harus

dikonversi dahulu ke dalam format yang

dimengerti oleh PuTTY.

Langkah-langkah konversi key dari

format OpenSSH ke format putty adalah

sebagai berikut:

Pertama siapkan file yang berisi

private key yang telah di-generate

sebelumnya (id_dsa atau id_rsa) di salah

satu folder windows. Setelah itu,

jalankan PuTTYgen.

Setelah tampil window PuTTYgen,

pilihlah Convertions Import keys, lalu

pilihlah Private key rsa atau dsa yang

akan di konversi ke format PuTTY.

Untuk membuka Private key Anda

akan diminta memberikan password key,

masukkan password yang digunakan

saat pembuatan key tersebut.

Setelah Anda berhasil memberikan

password key, PuTTYgen akan

melakukan konversi format tersebut ke

format yang dikenal oleh PuTTY.

Simpanlah hasil konversi tersebut. Untuk

menyimpan hasil konversi tekan tombol

“Save the generated key”, karena saat ini

Anda meng-generate Private Key, maka

pilih lah tombol “Save private key”.

Hasil

konversi yang

dilakukan oleh

PuTTYgen

bisa Anda

gunakan

untuk

mengotentikasi

koneksi ssh. Untuk Memulai sesi ssh,

sekarang jalankan PuTTY, masukkan

nama host atau IP address host tujuan

login. Jangan lupa untuk memilih

protokol ssh (port 22). Lalu dari menu

pilihan PuTTY, yang terletak di sebelah

kiri, pilihlah SSH Auth.

Dari menu Authentikasi SSH PuTTY,

bukalah Private key yang dihasilkan dari

konversi oleh PuTTYgen sebelumnya.

Lalu pilih Open untuk memulai

koneksi. Kemudian Anda akan diminta

untuk memasukkan nama user yang

ingin digunakan dalam sesi login, serta

kembali diminta untuk memasukkan

password Private Key. Jika semua

berjalan mulus, maka sesi ssh berhasil

dilakukan oleh PuTTY, seperti berikut

ini.

login as: shiro

Authentication with public key “imported-

openssh-key”

Passphrase for key “imported-openssh-key”:

[shiro@aurum shiro]$

Dengan

pembatasan

di sisi server

(sshd) akan

memaksa

user di sisi

client untuk

menggunakan

metode koneksi dengan lebih aman.

Setelah mempersiapkan key-pair,

selanjutnya koneksi ssh bisa dilakukan

seperti biasa. Tidak ada perbedaan cara

penggunaan ssh client dengan

perubahan ini, hanya saja di sini tidak

lagi digunakan password user di sistem.

Password yang ditanyakan pada awal

koneksi adalah password yang

digunakan pada saat membuat key-pair.

Berikut ini ilustrasi percobaan login

setelah langkah-langkah pengamanan.

[shiro@aurum shiro]$ ssh 192.168.1.253

Enter passphrase for key ’/home/shiro/

.ssh/identity’:

(masukkan password key-pair)

[shiro@cobalt shiro]$ �Reza Iskandar Achmad

([email protected])� Gambar 1. PuTTY key-gen

Gambar 2.

Impor t

K e y s

Gambar 3.

Key Password

� Gambar 4. Save Key

Gambar 5.

PuTTY

Gambar 6.

Auth Key

PuTTY

� Gambar 7. Load

Private Key