Reza ssh
Click here to load reader
-
Upload
mas-suwondo -
Category
Documents
-
view
1.441 -
download
2
Transcript of 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.
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
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
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