keamanan linux

42
Keamanan LINUX Keamanan merupakan isu utama dalam jaringan. Apalagi jika seluruh host tersambung ke Internet. Melindungi jaringan, berarti melindungi setiap host yang ada dalam jaringan, baik workstation maupun server. Fokus bahasan bab ini adalah melindungi linux server Anda, baik ancaman dari luar jaringan (misalnya dari Internet), maupun internal jaringan (ancaman dari salah satu user Anda). Pembahasan hanya menyentuh secara global, dengan beberapa contoh program yang dapat dipergunakan. Tujuannya adalah untuk memberikan kerangka berfikir dalam menyusun konsep keamanan dalam jaringan, dan mempraktekannya lewat beberapa program yang dicontohkan. Arsitektur kemanan di Linux, mempunyai enam komponen : Account Pemakai (User Account) Kontrol Akses secara Diskresi (Discretionary Access Control) Kontrol Akses Jaringan (Network Access Control) Enkripsi (Encryption) Logging Deteksi penyusupan (Intrusion Detection) Account Pemakai (User Account) Kekuasaan dalam mengadministrasi sistem secara keseluruhan berada dalam satu account, yakni root. Dengan root, Anda bisa mengontrol sistem file, user, sumber daya (devices), bahkan akses jaringan. Model diktatorial ini memudahkan administrator dalam menangani sistem. Jika ada satu user yang melanggar aturan, root bisa membuat account-nya beku, tanpa mengganggu yang lain. Atau mengatur siapa-siapa saja yang boleh mengakses suatu file, memberikan hak khusus pada user-user tertentu.. Setiap user diatur pula lingkungan di mana dia boleh main-main sepuasnya, atau cuma melihat-lihat. Hal ini memberikan keuntungan bagi pemakai maupun sistem :

Upload: achmad-muzaqi

Post on 11-Jun-2015

1.184 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Keamanan LINUX

Keamanan LINUX Keamanan merupakan isu utama dalam jaringan. Apalagi jika seluruh host tersambung ke Internet. Melindungi jaringan, berarti melindungi setiap host yang ada dalam jaringan, baik workstation maupun server. Fokus bahasan bab ini adalah melindungi linux server Anda, baik ancaman dari luar jaringan (misalnya dari Internet), maupun internal jaringan (ancaman dari salah satu user Anda). Pembahasan hanya menyentuh secara global, dengan beberapa contoh program yang dapat dipergunakan. Tujuannya adalah untuk memberikan kerangka berfikir dalam menyusun konsep keamanan dalam jaringan, dan mempraktekannya lewat beberapa program yang dicontohkan.

Arsitektur kemanan di Linux, mempunyai enam komponen :

Account Pemakai (User Account) Kontrol Akses secara Diskresi (Discretionary Access Control) Kontrol Akses Jaringan (Network Access Control) Enkripsi (Encryption) Logging Deteksi penyusupan (Intrusion Detection)

Account Pemakai (User Account) Kekuasaan dalam mengadministrasi sistem secara keseluruhan berada dalam satu account, yakni root. Dengan root, Anda bisa mengontrol sistem file, user, sumber daya (devices), bahkan akses jaringan. Model diktatorial ini memudahkan administrator dalam menangani sistem. Jika ada satu user yang melanggar aturan, root bisa membuat account-nya beku, tanpa mengganggu yang lain. Atau mengatur siapa-siapa saja yang boleh mengakses suatu file, memberikan hak khusus pada user-user tertentu.. Setiap user diatur pula lingkungan di mana dia boleh main-main sepuasnya, atau cuma melihat-lihat. Hal ini memberikan keuntungan bagi pemakai maupun sistem :

Kecerobohan salah satu pemakai tidak akan berpengaruh terhadap sistem secara keseluruhan

Masing-masing pemakai memiliki privacy yang ketat

Untuk itu account root biasanya hanya digunakan saat-saat tertentu saja. Misalnya perbaikan sistem. Dan biasanya account root dipergunakan pada modus single user. Dapat Anda bayangkan apa yang terjadi dengan jaringan Anda jika penyusup dari luar memperoleh akses root.

Kontrol Akses secara Diskresi (Discretionary Access Control)

Page 2: Keamanan LINUX

Setiap pemakai Linux, memiliki account tersendiri, yang masing-masing dibedakan dengan user name dan password. Setiap file memiliki atribut kepemilikan, group, dan user umum. Satu file, bisa diberikan atribut tertentu, sehingga hanya dapat dibaca atau dieksekusi oleh pemiliknya saja. Pembatasan ketat ini dinamakan Discretionary Access Control (DAC). Hal ini pula yang menyebabkan virus jarang ditemui atau jarang tersebar di Linux. Sebab virus biasanya menulis file ke dalam sistem. Dengan DAC, virus hanya berpengaruh pada file-file yang dimiliki oleh salah seorang user yang mengeksekusi virus tersebut. Sedangkan sistemnya sendiri tidak tersentuh.

Root merupakan satu-satunya account yang punya akses penuh ke seluruh sistem. Root juga dipakai untuk mengadministrasi seluruh sistem, mengganti atribut file, hingga mengadministrasikan divais. Karena itu, demi keamanan, root biasanya hanya dipakai untuk perawatan atau perbaikan sistem saja. Untuk mengetahui atribut file :

$ ls -l

 

total 27

drwx---   5 fade   users        1024 Feb  8 11:27 Desktop

drwx---   2 fade   users        1024 Feb 28 10:15 Mail

-rw----   2 fade   users         509 Feb 29 10:14 Mailbox

-rw----   1 fade   hacker        318 Feb 29 10:11 dead.letter

drwxr-xr-x   3 fade   hacker       1024 Feb 14 09:12 ftp.linuxrouter.org

drwx---   2 fade   users        1024 Feb 29 10:14 mail

drwx---   2 fade   users        1024 Feb 14 12:07 nsmail

-rw-r-r-   1 fade   hacker      17358 Feb 23 09:11 sinkcp.gif

-rw-r-r-   1 fade   hacker        393 Feb 24 10:13 spam

drwxr-xr-x   2 fade   hacker       1024 Feb 22 08:36 temp

Beberapa program penting berkaitan dengan Discretionary Access Control :

Subsections su (Substitute User). shadow. Pro aktif Password

Page 3: Keamanan LINUX

o passwd+ o anlpasswd o npasswd

su (Substitute User).

Jangan menggunakan user root untuk penggunaan sehari-hari. Jika memang mendesak, jalankan program su. Program ini memungkinkan Anda menggunakan account root untuk sementara. Caranya :

$ su

lalu Anda akan diminta password.

password :

Setelah Anda isi dengan benar, prompt akan berubah menjadi pagar. Jika telah selesai, ketik exit

# exit

$

kembali ke prompt user. Selain su, dapat dipakai pula program sudo, yakni memberikan beberapa user untuk dapat mengeksekusi program tertentu sebagai root. Konfigurasi filenya berada di

/etc/sudoers

shadow.

Secara default, instalasi binary slackware, telah mengaktifkan shadow password. shadow adalah program yang membuat file /etc/passwd menjadi dapat dibaca (readable) tetapi tidak lagi berisi password, dan sebagai gantinya disimpan di file /etc/shadow.Berikut contoh tipikal file passwd :

halt:x:7:0:halt:/sbin:/sbin/halt

root:x:0:0::/root:/bin/bash

operator:x:11:0:operator:/root:/bin/bash

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

sync:x:5:0:sync:/sbin:/bin/sync

bin:x:1:1:bin:/bin:

Page 4: Keamanan LINUX

ftp:x:404:1::/home/ftp:/bin/bash

daemon:x:2:2:daemon:/sbin:

adm:x:3:4:adm:/var/adm:

lp:x:4:7:lp:/var/spool/lpd:

mail:x:8:12:mail:/var/spool/mail:

news:x:9:13:news:/usr/lib/news:

uucp:x:10:14:uucp:/var/spool/uucppublic:

man:x:13:15:man:/usr/man:

games:x:12:100:games:/usr/games:

guest:x:405:100:guest:/dev/null:/dev/null

nobody:x:65534:100:nobody:/dev/null:

fade:x:1000:103:,,,:/home/fade:/bin/bash

alias:x:7790:2108::/var/qmail/alias:/bin/true

qmaild:x:7791:2108::/var/qmail:/bin/true

qmaill:x:7792:2108::/var/qmail:/bin/true

qmailp:x:7793:2108::/var/qmail:/bin/true

qmailq:x:7794:2107::/var/qmail:/bin/true

qmailr:x:7795:2107::/var/qmail:/bin/true

qmails:x:7796:2107::/var/qmail:/bin/true

Satu baris mencerminkan satu user, lengkap dengan atributnya. Berikut keterangan tiap field :

Username:password:UserID:GroupID:keterangantambahan:homedirektori:shell

Ambil contoh dari user fade :

fade:x:1000:103:,,,:/home/fade:/bin/bash

Keterangan dari line tersebut :

Username              : fade

Page 5: Keamanan LINUX

Password              : x User ID (UID)         : 1000 Group ID (GID)        : 103 Keterangan tambahan   : - Home Direktori        : /home/fade Shell Default         : /bin/bash

Password dalam file ini dapat dibaca oleh setiap user, tapi yang tampak hanya x saja. Password yang sebenarnya disimpan di file shadow (terenkripsi). Berikut file shadow dari password diatas :

root:pCfouljTBTX7o:10995:0:::::

halt:*:9797:0:::::

operator:*:9797:0:::::

shutdown:*:9797:0:::::

sync:*:9797:0:::::

bin:*:9797:0:::::

ftp:*:9797:0:::::

daemon:*:9797:0:::::

adm:*:9797:0:::::

lp:*:9797:0:::::

mail:*:9797:0:::::

news:*:9797:0:::::

uucp:*:9797:0:::::

man:*:9797:0:::::

games:*:9797:0:::::

guest:*:9797:0:::::

nobody:*:9797:0:::::

fade:OihQw6GBf4tiE:10995:0:99999:7:::

alias:!:10995:0:99999:7:::

qmaild:!:10995:0:99999:7:::

Page 6: Keamanan LINUX

qmaill:!:10995:0:99999:7:::

qmailp:!:10995:0:99999:7:::

qmailq:!:10995:0:99999:7:::

qmailr:!:10995:0:99999:7:::

qmails:!:10995:0:99999:7:::

Sebagai salinan dari /etc/passwd, shadow menyimpan satu record dalam satu baris yang dibagi menjadi 9 bagian (dipisahkan oleh titik dua) :

Nama user Password user Jumlah hari digantinya password sejak 1 Januari 1970 Jumlah hari sebelum user diijinkan untuk mengubah password Jumlah hari sebelum user dipaksa untuk mengganti password Jumlah hari sebelum user diingatkan untuk mengganti password Jumlah hari yang tersisa di mana user harus mengganti password sebelum user

tersebut dihapus. Jumlah hari dihapusnya password sejak 1 Januari 1970 Field terakhir dipakai sendiri oleh shadow

Table: Program Bantu shadow dan fungsinya

Nama program Fungsi

chage Mengganti informasi waktu berlakunya sebuah password

chfn Menggantikan chfn bawaan Linux untuk bisa mengganti informasi yang tampil di finger.

chsh Menggantikan chsh bawaan Linux untuk mengganti shell yang sudah di set secara default

gpasswd Menambah user baru ke dalam grup

groupadd Menambah grup

groupdell Menghapus grup

groupmod Modifikasi grup

grpck Verifikasi dengan membandingkan antara /etc/group dan /etc/passwd

id Menggantikan id standar, berfungsi untuk menampilkan UID (User ID) pada saat login.

Page 7: Keamanan LINUX

login Menggantikan login standar, sehingga bisa berinteraksi dengan shadow untuk autentikasi

newgrp Menggantikan perintah standar newgrp. User dapat berganti group dalam satu session, setelah login kembali

passwd Menggantikan perintah passwd standar, mengingat shadow punya struktur yang berbeda.

pwck Sinkronisasi antara /etc/passwd dan /etc/shadow. Biasa dilakukan setelah menambah password atau user

pwconv Menyatukan file /etc/passwd lama ke dalam file shadow yang baru.

pwunconv Memisahkan informasi dalam /etc/shadow kembali ke /etc/passwd

su Menjalankan shell dengan atribut root

userdel Menghapus nama user

usermod Mengganti informasi tentang user

   

Pro aktif Password

Linux menggunakan metode enkripsi DES (Data Encription Standard) untuk passwordnya. Namun seketat apapun enkripsi yang dilakukan akan menjadi percuma jika user memilih password yang mudah ditebak. User biasanya memilih hal-hal umum sebagai password, misalnya :

Tanggal lahir (dirinya sendiri atau salah satu anggota keluarga) Nomor Mobil Nama salah satu anggota keluarga (baik ditulis langsung, atau dengan variasi

huruf besar/dibalik dan sebagainya) Kata-kata yang ada di kamus, ditulis terbalik Nama favorit (pacar, artis, penyanyi, dan sebagainya)

Pilihan ini sangat riskan, sebab program semacam crack, dapat menebaknya dengan mencocokkan kamus yang ada dengan mudah. Bahkan program ini dapat diberikan pilihan kombinasi. Untuk itu perlu dibuat kebijakan yang baik untuk password. Catatan : Crack dapat Anda peroleh di http://www.users.dircon.co.uk/crypto/index.html. Anda dapat menggunakannya sebagai ujicoba untuk test seberapa jauh keamanan password dalam jaringan Anda. Dokumentasinya dapat pula Anda peroleh di  http://alloy.net/writings/funny/crack_readme.txt. Program pembantu dalam cek password di antaranya :

Page 8: Keamanan LINUX

Subsections passwd+ anlpasswd npasswd

passwd+

Program yang ditulis oleh Matt Bishop ini mampu meningkatkan logging, dan mengingatkan user jika mengisi password yang mudah ditebak. passwd+ dapat Anda peroleh di ftp://ftp.dartmouth.edu/pub/security

anlpasswd

Program ditulis dalam perl oleh Argonne National Laboratory. anlpasswd mempunyai aturan standar dalam pengisian password. Meski demikian dapat ditambahkan beberapa aturan yang dibuat sendiri, seperi jumlah minimal, gabungan huruf besar huruf kecil, gabungan angka dan huruf. anlpasswd dapat Anda peroleh di :  ftp://coast.rs.purdue.edu/pub/tools/unix/anlpasswd/analpasswd-2.3.tar.Z

npasswd

Program sederhana, ditulis oleh CLYDE HOOVER merupakan program pengganti passwd yang biasa. npasswd dapat Anda peroleh di :  http://www.uetxas.edu/cc/unix/software/npasswd/doc untuk dokumentasi  http://www.utexas.edu/cc/unix/software/npasswd untuk programnya

Network Access Control Linux dapat memilih komputer mana saja yang dapat mengaksesnya. Pembatasan antar jaringan ini dinamakan Network Access Control. Alat pengontrolan akses jaringan ini dinamakan firewall.

Subsections Tentang Firewall Tipe firewall : Filter Paket di Linux

o TCP Wrapper sebagai Kontrol Akses

Page 9: Keamanan LINUX

Tentang Firewall

Secara umum, firewall biasanya menjalankan fungsi:

Analisa dan filter paket

Data yang dikomunikasikan lewat protokol di internet, dibagi atas paket-paket. Firewall dapat menganalisa paket ini, kemudian memperlakukannya sesuai kondisi tertentu. Misal, jika ada paket a maka akan dilakukan b. Untuk filter paket, dapat dilakukan di Linux tanpa program tambahan.

Bloking isi dan protokol

Firewall dapat melakukan bloking terhadap isi paket, misalnya berisi applet Jave, ActiveX, VBScript, Cookie.

Autentikasi koneksi dan enkripsi

Firewall umumnya memiliki kemampuan untuk  menjalankan enkripsi dalam autentikasi identitas user, integritas dari satu session, dan melapisi transfer data dari intipan pihak lain. Enkripsi yang dimaksud termasuk DES, Triple DES, SSL, IPSEC, SHA, MD5, BlowFish, IDEA dan sebagainya.

Catatan: Untuk mempelajari firewall, minimal Anda harus mengetahui bagaimana TCP/IP bekerja. Sebagai literatur, Anda dapat membaca Buku TCP/IP karangan ONNO W. PURBO. Dokumen online berbahasa Indonesia tentang pengenalan TCP/IP juga tersedia di http://www.k-elektronik.org.

Tipe firewall : 1. Network-Level Firewall

Filter paket dilakukan biasanya dijalankan di router. Filter ini dapat dijalankan dengan memberlakukan rule set tertentu. Contoh tipikal dari Network-Lever Firewall adalah TCP Wrappers. Filter paket di Linux akan dibahas pada bagian selanjutnya.

2. Application-Proxy Firewall/Application Gateways

Berbeda dengan firewall sebelumnya yang memfilter dan bloking paket, Application-Proxy firewall meneruskan paket yang ada ke host internal yang dituju. Firewall ini bisa dikatakan sebagai jembatan. Application-Proxy Firewall biasanya berupa program khusus. Lebih jauh tentang Application Gateways dapat Anda baca artikel karangan JOHN WACK di http://www.telstra.com.au/pub/docs/security/800-10/node52.html.

Page 10: Keamanan LINUX

Catatan : Contoh tipikal dari Application-Proxy Firewall adalah TIS FWTK (Trusted Information System Firewall Toolkit), beberapa sumbernya : http://www.micrognosis.com/nreadwin/fwtk/history.txt ; tentang sejarah TIS FWTK. http://www.ssc.com/lj/issue25/1024.html ; dokumen "Creating Firewall using the TIS Toolkit" karangan BENJAMIN EWY. ftp://ftp.tis.com/pub/firewalls/toolkit/dist ; Program TIS FWTK. Untuk menginstallnya di Linux, Anda harus mendownload patchnya di  ftp://ftp.tisl.ukans.edu/pub/security/firewalls/fwtkpatches.tgz.

Filter Paket di Linux

Program paling populer untuk filter paket (dan dimasukkan hampir kesemua distribusi Linux) adalah TCP Wrappers, dibuat oleh WIETSE VENEMA. Aplikasinya berada di

/usr/sbin/tcpd

Catatan : Dokumentasi yang dilampirkan pada saat TCP Wrappers ini dipublikasikan dapat Anda baca di http://www.raptor.com/lib/tcp_wrapper.ps. Untuk melihat bagaimana TCP Wrappers ini bekerja, lihat sampel /etc/inetd.conf secara umum :

ftp     stream  tcp     nowait  root    /usr/sbin/ftpd

telnet  stream  tcp     nowait  root    /usr/sbin/telnetd

shell   stream  tcp     nowait  root    /usr/sbin/rshd

login   stream  tcp     nowait  root    /usr/sbin/rlogind

pop3    stream  tcp     nowait  root    /usr/sbin/pop3d

 

Ambil contoh salah satu, yakni telnetd :

telnet  stream  tcp     nowait  root    /usr/sbin/telnetd

Penjelasan dari entri telnet tersebut adalah :

Service yang dijalankan adalah telnet Tipe soket STREAM Protokol yang digunakan TCP

Page 11: Keamanan LINUX

Nowait berarti bahwa inetd harus memanggil program telnetd pada saat dibutuhkan.

Root berarti bahwa telnetd harus dijalankan dengan user root /usr/sbin/telnetd menunjukkan letak program telnetd.

Jika ada permintaan telnet dari klien, maka inetd akan memanggil program telnetd untuk melayaninya. Dengan demikian, server akan dijalankan oleh satu buah daemon, yakni inetd, jika ada permintaan. Masalahnya adalah, program daemon tidak bisa menyeleksi tiap koneksi yang masuk. Untuk itu dijalankan TCP Wrappers. Catatan : Binary Slackware, SuSE dan RedHat secara otomatis sudah menjalankan TCP Wrapper begitu selesai instalasi. Dengan TCP Wrapper, tcpd akan memotong permintaan inetd kepada semua service. Dalam contoh di atas, saat ada user menjalankan telnet di port 25, inetd akan memanggil telnetd. Tapi sebelum ke telnetd, dipotong dulu oleh tcpd, dicocokkan dengan beberapa rule set yang telah diatur. Jika memenuhi syarat, akan diteruskan ke telnetd. Jika tidak, permintaan diputus.

Berikut isi dari inetd.conf yang telah dipasang tcpd (TCP Wrappers)

ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  wu.ftpd -l -i -a

telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd

telnet stream  tcp     nowait  root    /usr/sbin/tcpd 

/usr/sbin/in.telnetsnoopd

shell   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rshd -L

login   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rlogind

pop3    stream  tcp     nowait  root    /usr/sbin/tcpd  in.pop3d

Subsections TCP Wrapper sebagai Kontrol Akses

TCP Wrapper sebagai Kontrol Akses

Tcpd dalam memberlakukan aturannya, membaca dua konfigurasi file, yaitu

/etc/hosts.allow      - host yang diperbolehkan untuk mengakses /etc/hosts.deny       - host yang tidak diperbolehkan untuk mengakses

Page 12: Keamanan LINUX

Pada saat selesai instalasi, isi file hosts.allow Anda akan tampak sebagai berikut :

#

# hosts.allow   This file describes the names of the hosts which are

#               allowed to use the local INET services, as decided by

#               the '/usr/sbin/tcpd' server.

#

# Version:      @(#)/etc/hosts.allow    1.00    05/28/93

#

# Author:       Fred N. van Kempen, <[email protected]

#

#

 

# End of hosts.allow.

Dan file hosts.deny akan tampak :

#

# hosts.deny    This file describes the names of the hosts which are

#               *not* allowed to use the local INET services, as decided

#               by the '/usr/sbin/tcpd' server.

#

# Version:      @(#)/etc/hosts.deny     1.00    05/28/93

#

# Author:       Fred N. van Kempen, <[email protected]

#

#

 

Page 13: Keamanan LINUX

# End of hosts.deny.

Untuk memasukkan rule set dalam file tersebut, WIETZE VENEMA membuat bahasa tersendiri yang dituangkan dalam hosts_options. Untuk mengetahui detailnya, Anda bisa ketikkan :

$ man hosts_options

Inti dari rule set pada kedua file di atas menggunakan format :

Daemon list : client list : option

Misalnya, Anda ingin memberikan akses hanya untuk mesin dengan nomor ip 1.2.3.4, dapat menuliskan :

ALL:ALL:DENY

ALL:1.2.3.4:ALLOW

Rule set tersebut, dapat Anda masukkan dalam file /etc/hosts.deny, sehingga file tersebut menjadi seperti berikut :

 

#

# hosts.deny    This file describes the names of the hosts which are

#               *not* allowed to use the local INET services, as decided

#               by the '/usr/sbin/tcpd' server.

#

# Version:      @(#)/etc/hosts.deny     1.00    05/28/93

#

# Author:       Fred N. van Kempen, <[email protected]

#

#

ALL:ALL:DENY

ALL:1.2.3.4:ALLOW

# End of hosts.deny.

Page 14: Keamanan LINUX

Anda bisa melakukan ujicoba dengan mengakses service pada inetd lewat nomor IP 1.2.3.4 dan nomor IP lain. Lihat perbedaannya, sekaligus mengetes apakah ruleset yang Anda buat telah berjalan dengan baik.

Enkripsi Enkripsi adalah proses mengacak data sehingga tidak dapat dibaca oleh pihak lain. Pada kebanyakan proses enkripsi, Anda harus menyertakan kunci sehingga data yang dienkripsi dapat didekripsikan kembali. Ilmu yang mempelajari teknik enkripsi disebut kriptografi. Gambaran sederhana tentang enkripsi, misalnya mengganti huruf a dengan n, b dengan m dan seterusnya. Model penggantian huruf sebagai bentuk enkripsi sederhana ini sekarang tidak dipergunakan secara serius dalam penyembunyian data. ROT-13 adalah program yang masih suka dipergunakan. Intinya adalah mengubah huruf menjadi 23 huruf didepannya. Misalnya b menjadi o dan seterusnya. Pembahasan enkripsi akan terfokus pada enkripsi password dan enkripsi komunikasi data.

Subsections Enkripsi Password Enkripsi komunikasi data Secure Shell (SSH)

o Instalasi SSH o Konfigurasi Server

SSL (Secure Socket Layer) o SSL dengan Apache

Enkripsi Password

Password di Linux dibuat dengan menggunakan metode tingkat lanjut dalam enkripsi, yakni DES (Data Encryption Standard). Menurut Federal Processing Standards Publication 46-2, DES didefinisikan sebagai ;

Sebuah algoritma matematika untuk menjalankan enkripsi (enchypering) dan dekripsi (dechypering) informasi koding binary. Enkripsi mengkonversikan data menjadi bentuk yang sulit ditebak, disebut chyper. Proses dekripsi cypher mengkonversikan data kedalam bentuk aslinya, disebut plain-text. (terjemahan bebas)

Page 15: Keamanan LINUX

Enkripsi dan dekripsi dilakukan tergantung pada kunci (key). Kunci ini dibuat berdasarkan masukan dari user pada saat mengetikkan password terdiri dari binary 64 digit. Jika password yang diketikkan kurang dari binary 64 digit, maka DES akan menambahkannya secara otomatis. Dari binary 64 digit, 56 dipergunakan untuk enkripsi, dan 8 dipergunakan untuk cek kesalahan (error checking).

Saat seorang penyusup (atau siapa saja) akan melakukan crack terhadap password di Linux, mereka biasanya mempergunakan kamus (dictionary attack). Saat melakukan crack, penyusup akan mengambil kata-kata dari kamus, kemudian mengenkripsinya dengan DES. Dalam proses ini, kata demi kata diberikan secara terus menerus, kemudian diproses sebagaimana Linux memproses passwordnya. Hasilnya akan dicocokkan dengan daftar yang ada di /etc/passwd. Jika cocok, program cracker akan memberitahukan kepada penyusup, bahwa password sudah berhasil ditemukan.

Untuk meningkatkan keamanan password dalam jaringan Anda, baca kembali sub bab tentang Discretionary Access Control.

Enkripsi komunikasi data

Di dalam Internet (atau intranet) data yang dikirimkan dari satu komputer ke komputer lainnya, pasti melewati komputer-komputer lain. Ambil contoh, pada saat Anda memasukkan password untuk mengecek account email di hotmail, data akan dikirim dalam bentuk teks biasa melewati beberapa host sebelum akhirnya diterima oleh hotmail. Pernahkah Anda berfikir bahwa salah satu dari komputer yang dilewati oleh data Anda dipasangi program sniffer?

Sniffer adalah program yang membaca dan menganalisa setiap protokol yang melewati mesin di mana program tersebut diinstal. Secara default, sebuah komputer dalam jaringan (workstation) hanya mendengarkan dan merespon paket-paket yang dikirimkan kepada mereka. Namun demikian, kartu jaringan (network card) dapat diset oleh beberapa program tertentu, sehingga dapat memonitor dan menangkap semua lalu lintas jaringan yang lewat tanpa peduli kepada siapa paket tersebut dikirimkan.

Kembali ke contoh tadi, jalankan traceroute untuk mengetahui berapa banyak host/komputer yang dilewati data Anda. Lakukan test berikut pada saat komputer sedang online.

# traceroute www.hotmail.com

1  * * nas1-3.cbn.net.id (202.158.2.228)  1610.03 ms

 2  nas1-rtif.cbn.net.id (202.158.2.225)  129.58 ms  119.94 ms  119.881

ms

 3  * 203.127.108.137 (203.127.108.137)  620.031 ms  679.721 ms

Page 16: Keamanan LINUX

 4  202.160.250.29 (202.160.250.29)  639.809 ms  629.684 ms  710.019 ms

 5  202.160.250.6 (202.160.250.6)  619.77 ms  939.703 ms  819.83 ms

 6  S-0-0-0-explorer.ix.singtel.com (202.160.255.214)  849.86 ms 

829.723 ms  829.886 ms

 7  s4-1-0.paloalto-cr13.bbnplanet.net (4.0.17.249)  810.22 ms  901.074

ms  818.614 ms

 8  p2-2.paloalto-nbr2.bbnplanet.net (4.0.2.221)  819.889 ms  799.684

ms  809.797 ms

 9  p2-0.paloalto-cr1.bbnplanet.net (4.0.6.78)  809.877 ms  819.611 ms 

839.936 ms

10  p0-0.mshotmail.bbnplanet.net (4.0.24.14)  809.757 ms  889.695 ms 

849.887 ms

11  * * *

12  law5-rsp-c.hotmail.com (216.32.183.14)  870.029 ms  879.73 ms 

869.859 ms

13  lc2.law5.hotmail.com (209.185.243.135)  929.954 ms *  870.017 ms

Catatan : Pada mesin Windows Anda juga dapat melakukan tes serupa dengan menjalankan perintah tracert pada prompt. Misal c:\>tracert www.hotmail.comUntuk menjaga data yang dikomunikasikan, Anda dapat menerapkan beberapa  program enkrisi komunikasi data. Di antaranya yang terkenal adalah secure shell (ssh), dan secure socket layer (SSL).

Secure Shell (SSH)

Menurut RFC (Request For Comment) dari Secure Shell (SSH):

Secure Shell adalah program yang melakukan loging terhadap komputer lain dalam jaringan, mengeksekusi perintah lewat mesin secara remote, dan memindahkan file dari satu mesin ke mesin lainnya. Algoritma enkripsi yang didukung oleh SSH di antaranya BlowFish (BRUCE SCHNEIER), Triple DES (Pengembangan dari DES oleh IBM), IDEA (The International Data Encryption Algorithm), dan RSA (The Rivest-Shamir-Adelman). Dengan berbagai metode enkripsi yang didukung oleh SSH, Anda dapat menggantinya secara cepat jika salah satu algoritma yang Anda terapkan mengalami gangguan.

Page 17: Keamanan LINUX

Subsections Instalasi SSH Konfigurasi Server

Instalasi SSH

Saat ini SSH dalam bentuk kode sumber dapat diperoleh dihttp://www.ssh.fi, sedangkan binarynya untuk klien dan server dapat Anda peroleh dihttp://www.replay.com. Beberapa paket program utama yang dijadikan satu paket dalam SSH suite adalah :

1. make-ssh-known-host

Skrip Perl yang membuat database dari host-host yang otomatis dibuat berdasarkan domain.

2. scp

The Secure Shell Copy Program, mengamankan penggAndaan data dari satu komputer ke komputer lainnya. Data ditransfer dalam bentuk enkripsi oleh SSH.

3. ssh

The Secure shell client, program yang bekerja seperti telnet. Perintah dapat Anda jalankan secara remote sebagaimana telnet bekerja.

4. ssh-add

Menambahkan kunci (key) baru terhadap autentikasi ssh-agent

5. ssh-agent

Digunakan untuk autentikasi lewat jaringan dengan model RSA.

6. sshd

Secure shell server, secara default bekerja pada port 22.

7. ssh-keygen

Program pembuat kunci (key generator) untuk ssh.

Page 18: Keamanan LINUX

Untuk instalasinya mempergunakan langkah-langkah standar dalam kompilasi dan instalasi program yang berbentuk kode sumber.

$ gunzip ssh-1.2.27 | tar xvf -

$ cd ssh-1.2.27

$ ./configure

$ make

$ su

password :

# make install

 

Selesai proses instalasi, Anda dapat mulai mengedit file konfigurasi untuk SSH :

/etc/sshd_config (File konfigurasi server) /etc/ssh_config (File konfigurasi klien)

Konfigurasi Server

Secara default, /etc/sshd_config Anda akan tampak sebagai berikut :

Port 22

ListenAddress 0.0.0.0

HostKey /etc/ssh_host_key

RandomSeed /etc/ssh_random_seed

ServerKeyBits 768

LoginGraceTime 600

KeyRegenerationInterval 3600

PermitRootLogin yes

IgnoreRhost no

Page 19: Keamanan LINUX

StrictModes yes

QuietMode no

X11Forwarding yes

X11DisplayOffset 10

FascistLogging no

PrintMod yes

KeepAlive yes

SyslogFacility DAEMON

RhostsAuthentication no

RhostsRSAAuthentication yes

PasswordAuthentication yes

PermitEmptyPasswords yes

UserLogin no

# Checkmail no

#PidFile /u/zappa/.ssh/pid

# AllowHosts *.our.com friend.other.com

# DenyHosts lowsecurity.theirs.com *.evil.org evil.org

# Umask 022

#SilentDeny yes

Sebagai referensi dalam mengedit konfigurasi tersebut, berikut penjelasan tentang fungsi-fungsi dari beberapa parameter yang perlu :

Table: Parameter /etc/sshd_config

Parameter/etc/sshd_config Parameter Penjelasan

AllowGroups [groups]Digunakan untuk mengontrol grup yang dapat memanfaatkan fasilitas SSH. Antar grup dipisahkan dengan spasi. Misal AllowGroups root user

Page 20: Keamanan LINUX

AllowHosts [hosts]

Dipergunakan untuk mengontrol host-host yang dapat mengakses layanan SSH. Host dapat diberikan dalam bentuk nama atau nomor IP. Misalnya AllowHosts *.pasarrumput.com 192.168.11.1

AllowTCPForwarding Dipergunakan untuk menentukan apakah TCP forwarding diperbolehkan. Secara default di set yes.

CheckMailDigunakan untuk menentukan apakah user yang sedang login dengan ssh diberitahu jika ada email masuk atau tidak. Secara default diset yes.

DenyGroups

Digunakan untuk mengontrol grup yang tidak diperbolehkan untuk memanfaatkan fasilitas SSH. Sebagaimana AllowGroup, parameter ini menggunakan spasi untuk memisahkan grup satu dengan lainnya.

DenyHosts Untuk mengontrol host-host yang tidak diperbolehkan untuk mengakses layanan SSH.

FascistLogging Untuk menentukan apakah sshd menjalankan aktivitas logging

HostKey Untuk menentukan letak file kunci dari host. Secara default file kunci ada di /etc/ssh_host_key

IdleTimeout Untuk menentukan waktu pemutusan layanan jika ada session yang tidak melakukan aktivitas.

IgnoreRhosts Untuk menentukan apakah sshd membaca file .rhosts atau tidak.

KeepAlive Untuk menentukan apakah sshd mengirimkan pesan bahwa layanan masih berjalan atau tidak

LoginGraceTime Untuk menentukan waktu jeda saat user bisa login kembali akibat kegagalan login pada sesi sebelumnya

PermitEmptyPassword Untuk menentukan apakah diperbolehkan atau tidak user mengirimkan password kosong

PermitRootLoginUntuk menentukan apakah root dapat log in dengan ssh, dan jika diperbolehkan apakah masih perlu autentikasi password

PrintMod Untuk menentukan apakah sshd perlu menyampaikan motd (message of the day) saat user login

RSAAuthentication Untuk menentukan apakah sshd menggunakan autentikasi model RSA

ServerkeyBits Untuk menentukan berapa bit yang dipakai sebagai

Page 21: Keamanan LINUX

kunci untuk server

SilentDeny Untuk menentukan sshd menolak terhadap suatu session tanpa pemberitahuan sama sekali

StrictModesUntuk menentukan sshd mengecek hak akses file terhadap home direktori sebagai pertimbangan untuk menerima atau menolak suatu login

X11Forwarding Untuk

   

Untuk menjalankan sshd, cukup ketikkan sshd sebagai root.

# sshd

Ada beberapa pilihan dalam menjalankan sshd. Pilihan ini diketikkan sebagai prefiks saat menjalankan sshd. Misal :

# sshd -g 60 (menjalankan sshd dengan timeout untuk klien 60 detik)

Table: Pilihan saat menjalankan sshd

Pilihan (prefiks) Fungsi

-b [bits]Dipergunakan untuk menentukan berapa bit yang dipergunakan sebagai kunci. Secara default dipakai 768 bits.

-dDipergunakan untuk menjalankan dalam modus DEBUG. Ini berguna untuk mengamati proses server yang sedang berjalan.

-f [config-file]Dipergunakan untuk menentukan file config yang lain selain yang ditunjuk secara default (/etc/sshd_config)

-g [timeout]

Dipergunakan untuk menentukan timeout jika ada pengguna yang meminta sebuah sesi tetapi tidak melakukan autentikasi. Defaultya 600 detik. Disarankan untuk mengeset ke 60 detik.

-h [host-key]Dipergunakan untuk menentukan alternatif lain dari file host key. Defaulntya adalah /etc/ssh_host_key.

-i Dipergunakan untuk menjalankan sshd dari inetd. Namun oleh pembuatnya disarankan untuk tidak

Page 22: Keamanan LINUX

dijalankan lewat inetd. Hal ini disebabkan karena sshd harus membuat key untuk tiap sesi, sehingga mempengaruhi kinerja daemon lain yang dijalankan lewat inetd.

-k

Dipergunakan untuk mengeset waktu, berapa lama sshd harus membuat (generating) kunci (session key) yang baru. Defaultnya adalah sekali dalam sejam. Jika diset 0 maka sshd tidak akan pernah membuat session key yang baru.

-p [port]Dipergunakan untuk menentukan port alternatif bagi sshd. Defaultnya adalah port 22.

-qDipergunakan untuk mematikan logging (tidak melakukan pencatatan terhadap aktifitas sshd.

   

Untuk klien, ssh mempergunakan file /etc/ssh_config. Secara default file tersebut berisi :

# This is ssh client systemwide configuration file. This file provides  # default for users, and the values can be changed in per-user

#configuration  # files or on yhe command line.

 

# configuration data is parsed as follows:  # 1. Command line options  # 2. User- specificc file  # 3. Systemwide file  # Any configuration value is only change the first time it is set.  # Thus, host-specific definitistion should be at the beginning of the  # configuration file, and defaults at the the end.

 

# Sitewide defaults for various options

 

# Host *  #   ForwardAgent yes  #   ForwardX11 yes  #   RhostsAuthentication yes  #   RhostRSAAuthentication yes 

Page 23: Keamanan LINUX

#   RSAAuthentication yes  #   TISAuthentication no  #   PasswordAuthentication yes  #   FallBackToRsh yes  #   UserRSH no  #   BatchMode no  #   StrictHostKeyChecking no  #   IdentifyFile -/.ssh/identity  #   Port 22  #   Chiper idea  #   EscapeChar -

Tabel berikut menjelaskan parameter yang dipergunakan dalam file ssh_config

Table: Parameter ssh_config (untuk klien ssh)

Pilihan Fungsi

BatchMode [yes/no] Dipergunakan untuk meminta username dan kata kunci pada saat koneksi dimulai.

Cipher [cipher] Dipergunakan untuk menentukan metode enkripsi. Pilihannya adalah idea, des, 3des (triple DES), blow-fish, arcfour, dan none.

ClearA11Forwadings Dipergunakan untuk meminta agar ssh meneruskan untuk membaca beberapa file konfigurasi dalam satu sesi.

Compression [yes/no] Dipergunakan untuk meminta ssh menggunakan kompresi selama sesi berjalan.

Compressionlevel [0-9] Dipergunakan untuk menentukan level kompresi. Semakin kecil nomornya, kompresi semakin cepat, tapi kualitas lebih jelek. Paling besar adalah 9, memberikan kompresi dengan kualitas bagus, tapi memperlambat kinerja.

ConnectAttempts [#] Dipergunakan untuk menentukan berapa kali ssh akan mencoba berkoneksi kembali saat sebuah sesi tidak berhasil di inisialisasikan.

EscapeChar [charracter] Dpergunakan untuk menentukan karakater Escape.

FallBackToRsh [yes/no] Dipergunakan untuk menentukan apakah ssh harus berpindah ke rsh jika koneksi ke ssh server tidak berhasil.

Page 24: Keamanan LINUX

ForwardAgent [yes/no] Dipergunakan untuk menentukan apakah koneksi dengan program autentikasi lain akan diteruskan atau tidak.

ForwardX11 [yes/no] Dipergunakan untuk meneruskan sesi X11 secara otomatis.

GetewayPorts [yes/no] Dipergunakan untuk menentukan apakah host remote dapat tersambung secara lokal lewat port yang meneruskannya.

Hostname [hostname] Dipergunakan untuk menentukan nama host yang login secara default.

Identityfile [file] Dipergunakan untuk menetukan file alternatif identitas RSA. Defaultnya adalah .ssh/identity.

KeepAlive [yes/no] Dipergunakan untuk menentukan apakah klien ssh mengirimkan pesan secara terus menerus kepada server remote.

KerberosAuthentication Dipergunakan untuk menentukan ssh memakai autentikasi Kerberos 5.

KerberosTgtPassing Dipergunakan untuk menentukan ssh memakai Kerberos ticket passing.

LocalForwading Port host:port

Dipergunakan untuk menentukan ssh meneruskan port lokal kepada host remote.

PasswordAuthentication [yes/no]

Dipergunakan untuk menentukan ssh memakai autentikasi basis password.

PasswordPromptHost [yes/no]

Dipergunakan untuk menentukan apakah host remote diperlihatkan dalam prompt login.

PasswordLogin [yes/no] Dipergunakan untuk menentukan ssh memperlihatkan host remote pada saat autentikasi.

Port [port] Dipergukan untuk menentukan port alternatif.

RhostsAuthentication Dipergunakan untuk menentukan apakah autentikasi rhost dapat dipergunakan. Jangan dipergunakan tanpa alasan yang kuat, sebab rhost kurang aman.

RhostsRSAAuthentication Dipergunakan untuk menentukan ssh memakai autentikasi rhost dan RSA pada saat koneksi dimulai.

SrictHostKeyChecking Dipergunakan untuk menentukan apakah ssh menambahkan secara otomatis host key baru ke host file. Pilihannya adalah yes, no, dan ask.

Page 25: Keamanan LINUX

   

Klien windows dapat memmanfaatkan SSH dengan mempergunakan program telnet Tera Term Pro + TTSSH for Windows. Secara default Tera Term Pro tidak mendukung ssh, untuk itu perlu ditambahkan program TTSSH for Windows. Terra Term Pro dapat diperoleh di  http://hp.vector.co.jp/authors/VA002416/teraterm.html. Sedangkan TTSSH dapat diperoleh di http://www.zip.com.au/roca/ttssh.html.

SSL (Secure Socket Layer)

SSL merupakan salah satu metode enkripsi dalam komunikasi data yang dibuat oleh Netscape Communication Corporation. Sebagaimana yang dijelaskan dalam SSL Protocol Internet Draft (The SSL Protocol, Version 3.0 oleh ALAN O. FREIER dan PAUL C. KOCHER, dapat Anda buka di http://home.netscape.com/eng/ssl3/ssl-toc.html.

SSL adalah Protokol berlapis. Dalam tiap lapisannya, sebuah data terdiri dari panjang, deskripsi dan isi. SSL mengambil data untuk dikirimkan, dipecahkan kedalam blok-blok yang teratur, kemudian dikompres jika perlu, menerapkan MAC, dienkripsi, dan hasilnya dikirimkan. Di tempat tujuan, data didekripsi, verifikasi, dekompres, dan disusun kembali. Hasilnya dikirimkan ke klien di atasnya. (terjemahan bebas). SSL hanya mengenkripsikan data yang dikirim lewat http. Bagaimana SSL berjalan dapat digambarkan sebagai berikut :

Pada saat koneksi mulai berjalan, klien dan server membuat dan mempertukarkan kunci rahasia, yang dipergunakan untuk mengenkripsi data yang akan dikomunikasikan. Meskipun sesi antara klien dan server diintip pihak lain, namun data yang terlihat sulit untuk dibaca karena sudah dienkripsi.

SSL mendukung kriptografi public key, sehingga server dapat melakukan autentikasi dengan metode yang sudah dikenal umum seperti RSA dan Digital Signature Standard (DSS).

SSL dapat melakukan verifikasi integritas sesi yang sedang berjalan dengan menggunakan algoritma digest seperti MD5 dan SHA. Hal ini menghindarkan pembajakan suatu sesi.

Lebih lanjut artikel yang saya sarankan untuk dibaca untuk mengetahui lebih dalam tentang SSL (semuanya berbahasa Inggris) :

1. Analysis of the SSL 3.0Protocol,DAVID WAGNER dan BRUCE SCHENEIDER;  http://www.counterpane.com/ssl.html

2. Introducing SSL and Certificates, menjelaskan keuntungan sertifikasi SSL;  http://www.ultranet.com/fhirsch/Papers/cook/ssl_intro.html

Page 26: Keamanan LINUX

3. Securing Communications on the Intranet and Over the Internet, TAHEL ELGAMAL, JEFF TREUHAFT, danFRANK CHEN, Netscape Communications Corporation;  http://www.go-digital.net/whitepapers/securecomm.html

4. The Secure Socket Layer Protocol and Applications, ALLAN SCHIFFMAN, Terisa Systems,Inc;  http://www.terisa.com:80/presentations/ams/ssl/index.htm

Subsections SSL dengan Apache

SSL dengan Apache

Menambahkan SSL kedalam apache membutuhkan prosedur yang cukup rumit. Sebelum Anda memulainya, pastikan bahwa Anda benar-benar membutuhkan. SSL biasa dipakai untuk aplikasi e-commerce untuk verifikasi keabsahan kartu kredit atau untuk formulir yang berisi data penting. Jika memang Anda belum berencana untuk menggunakannya, lewati saja bagian ini, dan coba nanti jika Anda menginginkanya.

Program yang dibutuhkan :

Apache 1.2.6 atau lebih SSLeay ; ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL/SSLeay-0.8.1b.tar.gz Patch SSL untuk Apache; ftp://ftp.ox/ac/uk/pub/crypto/SSL/Apache-

SSL/, sebagai contoh apache_1_2_6+ssl_1_17.tar.gz

Catatan: Jika Apache sudah terinstall dalam komputer Anda, maka perlu dijalankan instalasi ulang, agar patch SSL bisa dimasukkan. Proses pertama, ekstrak dan instal program SSLeay

$ cp SSLeay-0.8.1b.tar.gz /usr/src

$ cd /usr/src

$ tar -zxvf SSLeay-0.8.1b.tar.gz

$ cd /SSLeay-0.8.1b

$ perl ./Configure linux-elf

Catatan:

Page 27: Keamanan LINUX

Configure Linux-elf hanya berjalan hanya untuk mesin Linux. Untuk mengetahui pilihan-pilihan configure-nya jalankan perintah # perl ./Configure $ make

$ make rehash

$ make install

Proses selanjutnya adalah ekstrak dan instal Patch SSL untuk Apache ke dalam direktori sumber Apache.

# cp apache_1_2_6+SSL_1_17.tar.gz /usr/src/apache-1.2.6

# cd /usr/src/apache-1.2.6

# tar -zxvf apache_1_2_6+SSL.tar.gz

Yang akan diekstrak adalah :

ben.pgp.key.asc- Kunci PGP dari penyusun program EXTRAS.SSL - dokumentasi tambahan fitur LICENSE.SSL - Lisensi Apache SSL Md5sums - MD5 checksums untuk file-file yang diekstrak Md5sums.asc - tandatangan md5sums dari penyusun program README.SSL - dokumentasi pengenalan singkat SECURITY- Artikel tentang keamanan dari sistem SSL Src/apache_ssl.c - Modul tambahan untuk Apache SSLconf/conf/access.conf - file konfigurasi akses untuk apache yang masih

kosong SSLconf/conf/httpd.conf - Contoh file httpd.conf (file konfigurasi untuk

Apache) SSLconf/conf/mime.types - contoh file konfigurasi mime.types SSLpatch- File patch yang akan dipergunakan.

Setelah file diekstrak, jalankan patch SSL

# patch -p1 < SSLpatch

Lalu pindah ke/usr/src/apache-1.2.6/src, kopikan fileConfiguration.tmpl menjadiconfiguration. Edit file configuration, dan ganti variabel SSL_BASE untuk menunjuk ke direktori SSLeay yang sebelumnya telah diinstall.

# cp Configuration.tmpl /usr/src/apache-1.2.6/src

# cd /usr/src/apache-1.2.6/src

# pico Configuration.tmpl

Page 28: Keamanan LINUX

Ganti baris # SSL_BASE= /u/ben/cork/scuzzy-ssleay6 menjadi

SSL_BASE=/usr/src/SSLeay-0.8.1b

TekanCtrl-Xuntuk menyimpan, dan jalankan program make untuk apache.

# make

Pastikan bahwa prosedur yang dijalankan telah berjalan dengan benar. Cek apakah make telah membuat file httpsd. Jika ada, maka semuanya berjalan dengan baik.

Setelah itu, edit file sertifikasi SSL yang terletak di /usr/local/ssl/lib. Nama filenya ssleay.cnf. Sesuaikan isiannya dengan kebutuhan Anda, dan jalankan make certificate.

# make certificate

Proses ini akan menghasilkan file httpsd.pem yang terletak di /usr/src/apache_1.2.6/SSLconf/conf.

Selanjutnya, sebelum Apache dijalankan, Anda perlu cek terlebih dahulu file konfigurasi httpsd (sebagaimana file konfigurasi Apache yang telah dibahas sebelumnya, yakni httpd.conf, access.conf dan srm.conf). Cek parameter-paremeter yang berkaitan dengan SSL, seperti contoh berikut :

SSLCACertificatePath /var/httpd/conf

SSLCACertificateFile /var/httpd/conf/httpsd.pem

SSLCertificateFile /var/httpd/conf/httpsd.pem

SSLLogFile /var/httpd/logs/ssl.log

SSLCacheServerPort 8080

SSLCacheServerPath /usr/src/SSLeay-0.8.1b

SSLSessionCacheTimeout 10000

Untuk menjalankan Servernya dengan menunjuk file konfigurasi yang telah dibuat, cukup jalankan perintah :

# httpsd -f  /var/httpd/conf/httpd.conf

Logging

Page 29: Keamanan LINUX

Linux memiliki fasilitas logging yang sangat komprehensif. Untuk yang baru saja bermigrasi ke Linux, mungkin belum terbiasa memanfaatkan logging. Pada sistem operasi non UNIX, kebanyakan meminimalkan logging, bahkan tidak ada sama sekali.

Logging adalah prosedur di mana sebuah sistem operasi atau aplikasi merekam setiap kejadian dan menyimpan rekaman tersebut untuk dapat dianalisa di kemudian hari. Kejadian yang direkam ini bisa saja menyangkut sistem operasi, atau khusus program-program tertentu saja.

Semua file log di Linux disimpan dalam direktori /var/log. Beberapa program/file log yang penting adalah :

Subsections lastlog last xferlog access_log error_log messages

lastlog

Berisi rekaman kapan user login terakhir kali. Yang ditampilkan adalah nama login, port dan waktu login terakhir kali. Untuk memanggilnya cukup ketikkan lastlog, dan berikut contoh outputnya.

# lastlog

Username         Port     From             Latest

root             tty1                      Tue Jul  3 18:55:24 +0700

2000

bin                                        **Never logged in**

daemon                                     **Never logged in**

adm                                        **Never logged in**

lp                                         **Never logged in**

sync                                       **Never logged in**

Page 30: Keamanan LINUX

shutdown                                   **Never logged in**

halt                                       **Never logged in**

mail                                       **Never logged in**

alias                                      **Never logged in**

qmaild                                     **Never logged in**

qmaill                                     **Never logged in**

qmailp                                     **Never logged in**

qmailq                                     **Never logged in**

qmailr                                     **Never logged in**

qmails                                     **Never logged in**

xfs                                        **Never logged in**

postfix                                    **Never logged in**

sofyan                                     **Never logged in**

mysql                                      **Never logged in**

spawn            tty1                      Tue Jul  3 18:56:10 +0700

2000

xferlog

Mencatat semua informasi yang pernah login di ftp daemon. Data yang ditampilkan berupa waktu saat ini, durasi transfer file, host yang mengakses (baik nomor IP maupun nama host), jumlah file yang ditransfer, nama file, tipe transfer (Binary atau ASCII), perintah khusus yang diberikan (jika file dikompres atau tar), arah transfer (incoming, outgoing), modus akses (anonymous, guest, atau user resmi), nama user, layanan, metode otentikasi, dan user ID.

# less /var/log/xferlog

access_log

Berisi rekaman untuk layanan http (HyperText Transfer Protocol) atau layanan web server. Access_log biasanya terdiri dari Nomor IP dari pengakses, jam dan tanggal akses, printah atau permintaan, dan kode status.

Page 31: Keamanan LINUX

# less /var/log/ access_log

error_log

Berisi rekaman pesan kesalahan atas service http atau web server. Error_log terdiri dari jam dan waktu, tipe kesalahan, alasan kesalahan, layanan, dan perintah yang dijalankan berikutnya (kadang-kadang).

# less /var/log/error_log

messages

Rekaman kejadian sistem dan kernel, ditangani oleh dua daemon;

syslogd merekam semua program yang dijalankan. Untuk mengkonfigurasikannya dapat mempergunakan syslog.conf.

klogd, menerima dan merekam pesan kernel

File messages dapat dilihat di /var/log/messages. Berikut contohnya :

# less /var/log/messages

Deteksi Penyusupan (Intrusion Detection) Deteksi penyusupan adalah aktivitas untuk mendeteksi penyusupan secara cepat dengan menggunakan program khusus yang otomatis. Program yang dipergunakan biasanya disebut sebagai Intrusion Detection System (IDS).

Tipe dasar dari IDS adalah:

Rule-based systems - berdasarkan atas database dari tanda penyusupan atau serangan yang telah dikenal. Jika IDS mencatat lalulintas yang sesuai dengan database yang ada, maka langsung dikategorikan sebagai penyusupan.

Adaptive systems - mempergunakan metode yang lebih canggih. Tidak hanya berdasarkan database yang ada, tapi juga membuka kemungkinan untuk mendeteksi terhadap bentuk bentuk penyusupan yang baru.

Bentuk yang sering dipergunakan untuk komputer secara umum adalah rule-based systems.

Pendekatan yang dipergunakan dalam rule-based systems ada dua, yakni pendekatan pencegahan (preemptory) dan pendekatan reaksi (reactionary). Perbedaannya hanya masalah waktu saja. Pendekatan pencegahan, program pendeteksi penyusupan akan memperhatikan semua lalu lintas jaringan. Jika ditemukan paket yang mencurigakan, maka program akan melakukan tindakan yang perlu. Pendekatan reaksi, program

Page 32: Keamanan LINUX

pendeteksi penyusupan hanya mengamati file log. Jika ditemukan paket yang mencurigakan, program juga akan melakukan tindakan yang perlu.

Beberapa contoh program IDS di antaranya:

1. chkwtmp

Program yang melakukan pengecekan terhadap entri kosong. Dalam arti, wtmp mencatat sesuatu tapi isinya kosong. Program ini dapat diperoleh di  http://sunsite.ics.forth/gr/pub/systools/chkwtmp/chkwtmp-

1.0.tar.gz.

2. tcplogd

Program yang mendeteksi stealth scan. Stealth scan adalah scaning yang dilakukan tanpa harus membuat sebuah sesi tcp. Sebuah koneksi tcp dapat terbentuk jika klien mengirimkan paket, dan server mengirimkan kembali paketnya dengan urutan tertentu, secara terus menerus sehingga sesi tcp dapat berjalan. Stealth scan memutuskan koneksi tcp sebelum klien menerima kembali jawaban dari server. Scaning model ini biasanya tidak terdeteksi oleh log umum di Linux. Tcplogd dapat diperoleh di http://www.kalug.net/tcplogd.

3. hostsentry

Program yang mendeteksi login anomali. Anomali disini termasuk perilaku aneh (bizzare behaviour), anomali waktu (time anomalies), dan anomali lokal (locale anomalies). Versi beta dari program ini dapat diperoleh di http://www.psionic.com/abacus/hostsentry.

Ringkasan Dari sini, Anda sudah mulai mempunyai kepedulian yang cukup terhadap keamanan jaringan Anda. Secara singkat, sudah pelajari bersama bagaimana arsitektur keamanan di Linux. Jika keamanan sudah diset secara maksimal menurut perspektif kita, maka yang diperlukan hanyalah kerajinan untuk membaca file-file log yang dibuat oleh Linux. Meskipun bisa  dibilang bahwa jaringan tidak mempunyai data-data keamanan yang penting, tapi kepedulian terhadap masalah keamanan ini akan memudahkan pekerjaan di kemudian hari.

Dengan pesatnya perkembangan sistem informasi, maka perlu bagi para pemelihara jaringan untuk tetap terlibat dalam isu-isu terakhir dalam bidang teknologi. Ketinggalan terhadap isu bug, virus, dan isu keamanan lainnya, akan membuat jaringan yang dirawat menjadi rawan akan penyusupan.

Beberapa contoh sumber informasi untuk keamanan secara umum :

Page 33: Keamanan LINUX

http://www.cert.org ; memberikan saran berdasarkan riset dan study tentang kemampuan, tanggapan dan isu keamanan secara umum

http://geek-girl.com/bugtraq ; berisi koleksi milis yang membahas tentang bug secara umum.

http://security.linuxtoday.com; berisi berita-berita terakhir tentang penemuan  kelemahan keamanan dalam sistem Linux.

http://www.seifried.org/lasg; berisi artikel tentang aspek penting dalam keamanan Linux, dibuat oleh KURT SIFRIED. Dokumennya dapat diperoleh dalam bentuk pdf.