Kamis, 13 Maret 2008

Sniffing? Cain & Abel Saja!

Sniffing, alias mengendus, adalah suatu kegiatan mengendus-endus seperti namanya. Untuk istilah bidang informatika, sniffing adalah pekerjaan menyadap paket data yang lalu-lalang di sebuah jaringan. Paket data ini bisa berisi informasi Mengenai apa saja, baik itu username, apa yang dilakukan pengguna melalui jaringan, termasuk mengidentifikasi komputer yang terinfeksi virus, sekaligus melihat apa yang membuat komputer menjadi lambat dalam jaringan. Bisa juga untuk menganalisa apa yang menyebabkan jaringan macet. Jadi bukan sekedar untuk kejahatan, karena semuanya tergantung penggunanya, tapi umumnya dilakukan karena ISENG.

Sniffing bisa dilakukan tidak berarti karena masalah komputer atau system operasi, tapi system dari jaringan sendirilah yang bermasalah. Misalnya pada system jaringan yang menggunakan hub, komputer-komputernya sombong oleh sebab permintaan data maupun pengiriman data disiarkan ke seluruh komputer dalam jaringan, dan hanya komputer yang butuh saja yang Mengambil data yang ditujukan padanya sedangkan komputer lain akan mengacuhkannya. Tetapi semua itu akan lain jika salah satu komputer tersebut menggunakan sniffer atau pengendus. Semua data yang disiarkan termasuk ke komputer tersebut akan ditangkap, terlepas dari data tersebut adalah permintaan dari komputer tersebut atau tidak. Anda yang pernah membaca buku Animorphs karangan K.A. Applegate tentu mengetahui cara bicara Visser Three. Visser Three yang menggunakan bahasa pikiran yang seharusnya bisa ditujukan ke orang-orang tertentu karena kepongahannya selalu menyiarkan bahasa pikirannya tanpa dibatasi. Begitulah sifat-sifat jaringan yang menggunakan hub.
Menggunakan switch untuk menggantikan kelemahan hub juga bukan berarti anda sudah terbebas dari masalah.

Tulisan ini akan mengupas Cain & Abel, yaitu sebuah program Recovery Password sekaligus Pengendus Jaringan dari Massimiliano Montoro.

20 Ancaman Komputer Paling Berbahaya

Sans Institute adalah organisasi nirlaba yang melatih dan menyertifikasi profesional dalam bidang keamanan komputer. Daftar yang mereka keluarkan itu, menurut Alan Paller, kepala Sans Institute, dapat membantu organisasi yang ingin mengamankan komputer.

Setiap tahunnya, kurang lebih, ada 2000 kelemahan software yang ditemukan. Tanpa mengetahui kelemahan mana yang paling mengancam, organisasi-organisasi bisa kerepotan mengamankan komputernya.

Daftar "Top 20" dari Sans menyebutkan aspek atau komponen dari software maupun jenis piranti lunak tertentu yang dianggap sebagai favorit untuk dicari kelemahannya. Laporan Sans yang lengkap menyebutkan ancaman apa saja yang timbul dari setiap aspek itu.

Daftar dari Sans dibagi atas sepuluh besar ancaman pada sistem Windows dan sistem Unix/Linux. "Daftar ini berurut sesuai prioritas," sebut Paller kepada BBC, Senin (11/10/2004).

Menurut Paller, nyaris 60% kelemahan yang ada pada tahun ini tercantum dalam daftar 20 besar Sans tahun lalu. Artinya, kebanyakan organisasi tidak juga melakukan perbaikan pada sistem yang mereka miliki.

Perubahan besar dalam daftar, ujar Paller, hanya akan terjadi jika organisasi memperbaiki dan mencari kelemahan sebelum ada serangan. "Kelemahan-kelemahan ini layaknya penyakit yang tidak akan bisa hilang, karena separuh populasi tidak memiliki vaksinnya," kata Paller.

Dapatkan informasi lebih lanjut di situs http://www.sans.org/top20.

Berikut daftar "Sans Top 20":

Sepuluh besar ancaman pada Windows:
1. Web servers & services
2. Workstation service
3. Windows remote access services
4. Microsoft SQL server
5. Windows authentication
6. Web browsers
7. File-sharing applications
8. LSAS
9. E-mail programs
10. Instant messaging

Sepuluh besar ancaman pada Unix/Linux:
1. Blind domain name system
2. Web server
3. Authentication
4. Version control systems
5. Mail transport services
6. Simple Network Management Protocol (SNMP)
7. Open secure sockets layer (SSL)
8. Misconfiguration of enterprise services
9. Databases
10. Kernel

Keamanan Data Dan Metode Enskripsi

Aspek keamanan data sebenarya meliputi banyak hal yang saling berkaitan, tetapi khusus dalam tulisan ini penulis akan membahas tentang metoda enkripsi dan keamanan proteksi data pada beberapa program-program aplikasi umum. Hampir semua program aplikasi seperti MS Word, WordPerfect, Excel, PKZip menyediakan fasilitas proteksi data dengan pem-password-an, tapi sebenarnya fasilitas ini mudah untuk dibongkar. Bahkan program khusus proteksi data seperti Norton Diskreet (mungkin sekarang sudah jarang digunakan) yang memproteksi data dengan metoda DES ataupun metoda "proprietary" yang lebih cepat, sebenarnya sangat tidak aman. Metoda DES yang digunakan mempunyai kesalahan dalam implementasinya yang sangat mengurangi keefektipan dari metoda tersebut. Walaupun dapat menerima password sampai 40 karakter, karakter ini kemudian diubah menjadi huruf besar semua dan kemudian di-reduce menjadi 8 karakter. Hal ini menyebabkan pengurangan yang sangat besar terhadap kemungkinan jumlah kunci enkripsi, sehingga tidak hanya terbatasnya jumlah password yang mungkin, tetapi juga ada sejumlah besar kunci yang equivalen yang dapat digunakan untuk mendekrip file. Sebagai contoh file yang dienkrip dengan kunci 'xxxxxxx' dapat didekrip dengan 'xxxxxx', 'xxxxyy', 'yyyyxx'. PC Tools (mungkin ini juga sudah sulit ditemukan) adalah contoh lain paket software yang menyediakan fasilitas proteksi data yang sangat tidak aman. Implementasi DES pada program ini mengurangi 'round' pada DES yang seharusnya 16 menjadi 2, yang membuatnya sangat mudah untuk dibongkar.

Beberapa program akan secara otomatis membongkar proteksi program aplikasi seperti MS Word, Excel, Word Perfect, PKZip 2.x, Quattro Pro, dll dengan sangat mudah, bahkan ada program yang menambahkan 'delay loop' sehingga seolah-olah program tersebut sedang bekerja keras membongkar password. Salah satu perusahaan tersebut adalah Access Data ( http://www.accessdata.com), mereka membuat software yang dapat membongkar WordPerfect (versi 4.2-6.1, enkripsi 'regular' atau 'enhanced', Microsoft Word (versi 2.0-6.1), Microsoft Excel (semua versi termasuk versi Macintosh), Lotus 1-2-3 (semua versi), Quattro Pro, Paradox, Pkzip, Norton's Diskreet (baik metoda DES maupun 'proprietary'), Novell NetWare (versions 3.x-4.x), dll. Access Data menyediakan program demo yang dapat memecahkan password sampai 10 karakter. Untuk mendapatkannya coba ftp site-nya di ftp.accessdata.com pada directory /pub/demo. Penulis sendiri telah mencoba program demo pembongkar passwordnya (untuk WordPerfect) yang jalan pada Windows 95, tetapi sayang hanya dapat menampilkan jumlah karakter yang digunakan pada password kita. Penulis juga telah melihat ada program lokal berbasis DOS yang dapat membongkar password Word 6.0/7.0. Alasan utama kurang baiknya proteksi dari program-program diatas adalah mungkin untuk mendapatkan izin ekspor dari pemerintah Amerika Serikat dengan mudah, karena di sana untuk mengekspor program enkripsi yang kuat memerlukan izin yang ketat dari pemerintah. Dan mengekspor program enkripsi sama dengan mengekspor amunisi sehingga sangat dibatasi bahkan dikenai hukuman bagi yang melanggarnya. Contoh klasik adalah apa yang menimpa Philip Zimmermann yang diadili karena program PGP yang ia buat dan menyebar ke seluruh dunia.

Untuk proteksi data yang cukup penting tidak ada jalan lain selain menggunakan program khusus proteksi/enkripsi data. Saat ini telah banyak beredar program khusus proteksi data baik freeware, shareware, maupun komersial yang sangat baik. Pada umumnya program tersebut tidak hanya menyediakan satu metoda saja, tetapi beberapa jenis sehingga kita dapat memilih yang menurut kita paling aman. Contoh program tesebut yang penulis ketahui seperti :

  • BFA 97 (Blowfish Advanced 97) yang menyediakan metoda ekripsi : Blowfish, Idea, Triple DES, GOST, Cobra128, PC-1 (RC4 compatible), dan Twofish. Program demo dari paket ini menyediakan pem-password-an hanya sampai 5 huruf. Selain itu paket ini menyediakan fasilitas 'disk key' yaitu kunci pada disket, sehingga kita tidak perlu mengingat-ingat password. Tetapi dengan cara 'disk key' ini ada masalah yaitu bila disketnya rusak atau hilang maka kita akan kehilangan semua data kita.
  • Kremlin yang menyediakan proteksi data Blowfish, Idea, DES/Triple DES, dll.
  • F-Secure yang menyedikan metoda proteksi Blowfish, RSA, DES/Triple DES dan RC4. Produk ini dirancang untuk sistem jaringan.
  • Cryptext merupakan freeware, extension Windows 95/NT shell yang yang menggunakan RC4 untuk mengenkripsi file yang menggunakan kunci 160 bit yang dihasilkan dari digest SHA terhadap password yang kita masukkan.
  • PGP, merupakan program enkripsi sistem kunci publik (asimetrik) dan biasanya digunakan untuk untuk enkripsi e-mail, tetapi dapat juga digunakan untuk enkripsi konvensional (simetrik). PGP menggunakan RSA sebagai sistem kunci publik dan Idea sebagai metoda enkripsi simetrik dan MD5 untuk message digest. PGP merupakan freeware tersedia untuk DOS (versi 2.6.x, tersedia beserta source programnya) dan Windows 95/NT (versi 5.x).
  • Pegwit, seperti PGP merupakan program ekripsi sistem kunci publik, walaupun masih sangat sederhana (versi 8.71). Pegwit menggunakan Elliptic Curve untuk sistem kunci public dan Square untuk enkripsi simetrik dan SHA-1 untuk message digest. Pegwit tersedia untuk DOS (16 dan 32 bit) dan menyertakan juga source programnya.
  • Selain itu juga terdapat program untuk enkripsi 'on the fly'/'real time' yang dapat mengenkripsi harddisk, partisi, atau suatu direktori tertentu secara transparan. Dengan cara ini kita tidak perlu memilih satu persatu file yang akan kita enkrip, tetapi program yang akan melaksanakannya. Salah satu contoh jenis ini adalah Norton Your Eyes Only, yang menggunakan metoda enkripsi Blowfish. Contoh lain adalah ScramDisk (versi 2.02) yang dapat digunakan untuk Windows 95/98, program ini merupakan program bebas dan tersedia beserta source programnya (http://www.hertreg.ac.uk/ss/). Scramdisk menyediakan beberapa metoda enkripsi seperti Blowfish, Tea, Idea, DES, SquareWindows NT bahkan sudah menyediakan fasilitas mengenkrip , Misty dan Triple DES 168 bit. Microsoft 5.0 yang akan datang direktori dengan menggunakan metoda DES.

Lalu bagaimana dengan program enkripsi produk lokal ?. Sampai saat ini penulis memperhatikan telah banyak program proteksi data yang telah diterbitkan pada majalah Mikrodata ataupun Antivirus, tetapi jarang sekali yang cukup baik sehingga dapat dipercaya untuk melindungi data yang cukup penting. Sebagai contoh penulis akan membahas program Multilevel Random Encryption versi 1.4 (pada Antivirus no. 5) yang menurut penulisnya menggunakan proteksi ganda dengan triple covery (?) dengan langkah-langkah overdosis (?), mempunyai kelebihan dan sekuritas tinggi (?), kunci covery dapat diganti sesuka anda, sehingga pembuat MRE sendiri tidak dapat memecahkanya (?). Lalu coba kita analisa bersama-sama, program ini mempunyai satu kunci yang di-hard coded di tubuh program kemudian satu kunci lagi yang dipilih secara random dari random generator standar, yang fatalnya kunci ini juga disimpan didalam hasil enkripsi. Plaintext dioperasikan (XOR) dengan kedua kunci ini dan data dibolak balik dalam 6 byte blok menghasilkan ciphertext. Dengan mengengkrip data dengan kunci yang sama saja sudah jelas akan dihasilkan data yang sama, contohnya karakter ASCII 52 akan menjadi karakter ASCII 235, maka dibagian manapun pada data karakter ASCII 52 akan tetap menjadi karakter ASCII 235, ini merupakan suatu cara untuk membongkar file hasil enkripsi. Kesalahan fatal lain adalah menyertakan password pada data hasil enkripsi sehingga dengan mudah dapat dicari passwordnya. Sehingga dengan logika sangat sederhana saja sudah dapat membongkar program ini. Penulis juga telah membuat program yang sangat sederhana untuk mencari password dari data yang telah diproteksi dengan program ini, seperti dapat dilihat pada listing (MREBR.PAS) dalam mrebr.zip.

Terlepas dari aman atau tidak, penulis sangat menghargai kreatifitas programmer-programmer di negara kita, sehingga penulis selalu tertarik jika ada artikel tentang program proteksi data di majalah ini, meskipun (sekali lagi) sangat jarang metoda-metoda tersebut dapat memberikan proteksi yang baik terhadap data kita. Meskipun hanya sebagai kegiatan sampingan, saat ini penulis telah mengumpulkan beberapa metoda enkripsi yang sudah diakui keampuhannya (kebanyakan sumbernya dalam bahasa C) dan mem 'port' nya ke dalam bahasa Pascal/Delphi dan bila redaksi Antivirus berkenan maka penulis akan membahasnya pada beberapa tulisan yang akan datang. Alasan penulis mem-port ke Delphi karena kebanyakan rutin-rutin tersebut ditulis dengan bahasa C dan sedikit sekali dari rutin-rutin yang tersedia bagi programmer Delphi. Walaupun paling tidak ada satu site (TSM Inc, http://crypto-central.com/index.html) yang menyediakan komponen cryptography (Blowfish, DES, RC6, Twofish, RSA, Eliptic Curve, SHA) untuk Delphi/C++ Builder, tetapi komponen tersebut tidak disertai source dan bila ingin disertai source harus membelinya dengan harga kurang lebih US $100 per komponen. Metoda-metoda yang telah berhasil di-port diantaranya yang klasik seperti DES dan modifikasinya Triple DES, metoda-metoda yang lebih modern seperti GOST (Russian DES), Blowfish, RC2, RC4, RC5, Idea, Safer, MDS-SHS, Square. Juga penulis masih dalam proses mem-port metoda mutakhir yang ikut kontes AES (Advances Encryption Standard) yang akan digunakan sebagai standar pada dekade mendatang, seperti Twofish, RC6, Safer+ dan Mars. (Sebagai informasi sampai tanggal 20 Agustus 1998 ada 15 kandidat, yaitu : Cast-256, Crypton, Deal, DFC, E2, Frog, HPC, Loki97, Magenta, Mars, RC6, Rijndael, Safer+, Serpent dan Twofish). Selain itu ada metoda 'secure hash' seperti MD5 dan SHA, 'secure pseudo random number generator' seperti pada PGP (ANSI X9.17), peggunaan SHA-1 untuk random number generator dan George Marsaglia's the mother of all random number generators . Juga mungkin suatu saat metoda public key cryptosystem, tetapi penulis tidak terlalu yakin akan hal ini sebab metoda ini cukup rumit dan memerlukan kode program yang cukup panjang, karena melibatkan perhitungan dengan bilangan integer yang sangat besar. Meskipun demikian paling tidak penulis telah mem-port salah satu metoda publik key ini yaitu Elliptic Curve (Elliptic Curve Crypto version 2.1 dari Mike Rosing), meskipun belum sempat di-debug dan dites, karena kemudian penulis menemukan sistem yang lebih lengkap yaitu pada Pegwit 8.71 oleh George Barwood. Dan terakhir penulis juga menemukan rutin-rutin enkripsi yang ditulis oleh David Barton (http://sunsite.icm.edu.pl/delphi/ atau http://web.ukonline.co.uk/david.w32/delphi.html) tetapi rutin-rutin ini tampaknya kurang dioptimasi dengan baik sehingga performancenya kurang baik (cek site tersebut mungkin sudah ada perbaikan), bahkan untuk rutin Blowfish sangat lambat. Sebagai perbandingan penulis mengadakan test kecepatan, yang dilakukan pada Pentium Pro 200 dengan RAM 64MB dan sistem operasi Windows NT 4.0 (SR3), untuk mengenkrip 5MB data (kecuali Blowfish dari David Barton 1 MB) yang dikompile dengan Delphi 4.0 dan hasilnya dapat dilihat pada tabel dibawah ini :

Metoda

Rutin Penulis

Rutin Barton

Faktor

( x )

( Kbytes/detik)

Blowfish

6063,06

26,33

230,3

IDEA

1458,44

913,91

1,6

RC2

1867,76

640,37

2,9

RC4

9416,20

6429,49

1,5

RC5

5760,37

1907,91

3,0

RC6

4291,85

812,30

5,3

GOST

3524,44

-

-

Safer

1234,77

-

-

Skipjack

-

497,45

-

Dari tabel di atas terlihat performance dari metoda-metoda ekripsi yang telah di-port ke dalam Delphi rata-rata cukup baik bila di-optimize dengan benar, bahkan ada diantaranya yang lebih cepat (dicompile dengan Delphi 3.0, dengan directive {$O+;$R-;$Q-}) dibandingkan rutin C-nya yang dicompile dengan Borland C/C++ 5.2 (BCC32 dari Borland C++ Builder, dengan option optimize for speed,-O2), contohnya adalah Blowfish dan RC4. Faktor penting dalam optimasi dengan Delphi 32 bit (Delphi 2.x, 3.x, 4.0 tampaknya menggunakan metoda optimasi yang sama) adalah penggunaan variabel 32 bit (Integer/LongInt/LongWord), karena tampaknya Delphi ini dioptimasikan untuk operasi 32 bit. Contohnya adalah rutin Idea yang menggunakan beberapa variabel Word (16 bit) dalam proses ciphernya, ketika penulis mengganti variabel-variabel ini dengan Integer dan me-mask beberapa operasi yang perlu sehingga hasilnya masih dalam kisaran Word, akan meningkatkan performance kurang lebih 40%. Demikian juga dengan RC4 yang dalam tabel permutasinya menggunakan type Byte (8 bit) penulis mengganti dengan Integer, kecepatannya meningkat drastis. Walaupun demikian, dengan cara ini terjadi peningkatkan overhead penggunaan memori, seperti pada RC4 dari tabel 256 byte menjadi 256*4 = 1024 byte. Tetapi karena kita memakainya untuk implementasi software saja dan saat ini harga memori cukup murah jadi tidak terlalu menjadi masalah. Faktor lain dalam optimasi adalah menghindari pemanggilan fungsi/procedure dalam blok enkripsi utama, karena pemanggilan fungsi/procedure akan menyebabkan overhead yang sangat besar. Hal lain yang perlu dihidari adalah penggunaan loop (for, while, repeat) sehingga memungkinkan kode program dieksekusi secara paralel, terutama pada prosesor superscalar seperti Pentium atau yang lebih baru. Hal utama yang perlu diperhatikan dalam melakukan optimasi adalah selalu membandingkan hasilnya dengan 'test vector' baku yang biasanya disertakan oleh pembuatnya, dengan demikian kita yakin bahwa implementasi kita terhadap metoda cipher tersebut adalah benar.

Dari pengamatan penulis kekuatan dari metoda-metoda enkripsi adalah pada kunci (dari password yang kita masukkan) sehingga walaupun algoritma metoda tersebut telah tersebar luas orang tidak akan dapat membongkar data tanpa kunci yang tepat. Walaupun tentunya untuk menemukan metoda tersebut diperlukan teori matematika yang cukup rumit. Tetapi intinya disini ialah bagaimana kita mengimplementasikan metoda-metoda yang telah diakui keampuhannya tersebut didalam aplikasi kita sehingga dapat meningkatkan keamanan dari aplikasi yang kita buat.

Memang untuk membuat suatu metoda enkripsi yang sangat kuat (tidak dapat dibongkar) adalah cukup sulit. Ada satu peraturan tidak tertulis dalam dunia cryptography bahwa untuk dapat membuat metoda enkripsi yang baik orang harus menjadi cryptanalysis (menganalisa suatu metoda enkripsi atau mungkin membongkarnya) terlebih dahulu. Salah satu contohnya adalah Bruce Schneier pengarang buku Applied Crypthography yang telah menciptakan metoda Blowfish dan yang terbaru Twofish. Bruce Schneier (dan sejawatnya di Counterpane) telah banyak menganalisa metoda-metoda seperti 3-Way, Cast, Cmea, RC2, RC5, Tea, Orix, dll dan terbukti metoda yang ia buat yaitu Blowfish (yang operasi ciphernya cukup sederhana bila dibandingkan dengan DES misalnya) sampai saat ini dianggap salah satu yang terbaik dan tidak bisa dibongkar dan juga sangat cepat. Bahkan untuk menciptakan Twofish ia dan timnya di Counterpane menghabiskan waktu ribuan jam untuk menganalisanya dan sampai saat-saat terakhir batas waktu penyerahan untuk AES (15 Juni 1998) ia terus menganalisisnya dan menurutnya sampai saat inipun ia masih terus menganalisis Twofish untuk menemukan kelemahannya.

Bila ada diantara pembaca yang ingin mempelajari metoda-metoda cryptography lebih dalam, sebagai permulaan ada beberapa site di Internet yang menyediakan 'link' ke situs-situs cryptography seperti :

Counterpane, http://www.counterpane.com

Cryptography and Encryption, http://www.isse.gmu.edu/~njohnson/Security/crypto.htm

Tom Dunigan's Security page, http://www.epm.ornl.gov/~dunigan/security.html

Delphi Security component, http://crypto-central.com/index.html

Dan banyak lagi, pembaca bisa menggunakan search engine untuk mencari site-site lain.

Dan juga beberapa ftp site yang menyediakan source program (kebanyakan dalam bahasa C/C++) seperti di :

- ftp://ftp.funet.fi/pub/crypt/cryptography/libs/

- ftp://ftp.hacktic.nl/pub/replay/pub/crypto/LIBS/

- ftp://idea.sec.dsi.unimi.it/pub/security/crypt/code

- ftp://ftp.psy.uq.oz.au/pub/Crypto/

- ftp://ftp.ox.ac.uk/pub/crypto/

FTP site ini semuanya terletak diluar Amerika Serikat/Canada sehingga bila men-down-load-nya kita tidak melanggar aturan larangan ekspor software enkripsi dari pemerintah Amerika Serikat.

Juga beberapa newsgroup yang dapat dibaca, walaupun penulis belum pernah mencobanya dan tidak mengetahui apakah ada provider yang menyediakannya.

Dan tentunya dengan mempelajari beberapa buku tentang cryptography akan sangat baik, walaupun tampaknya agak sulit mendapat buku demikian di negara kita.

Perlu juga diketahui bahwa ada diantara metoda-metoda enkripsi tersebut yang dipatenkan seperti Idea, Seal, RC5, RC6, Mars atau mungkin tidak diperdagangkan/disebarkan secara bebas (trade secret) seperti RC2, RC4. Dan ada juga yang bebas digunakan seperti Blowfish, Twofish, Sapphire II, Diamond II, 3-Way, Safer, Cast-256, dll., walaupun tentu saja secara etika kita harus tetap mencantumkan pembuatnya/penciptanya pada program kita.

Akhir kata penulis berharap semoga tulisan ini ada manfaatnya bagi pembaca majalah Antivirus sekalian.

Referensi :

1. Antivirus Media No. 5

2. Eric Bach, dkk, Cryptograhy-FAQ.

3. Peter C.Gutmann, SFS Version 1.20 Document.

4. Bruce Schneier, Applied Cryptography : Protocols, Algorithms, and Source Code in C, 2nd Edition

5. Philip Zimmermann, PGP 2.6.2 User Guide.

6. Berbagai site di Internet.

Tips Untuk Mengamankan Server Anda

Untuk mengamankan server anda, maka anda harus mengetahui untuk tujuan apa server tersebut digunakan, sehingga anda dapat menggambil langkah-langkah yang harus dilakukan dan menentukan daemon apa saja yang harus diaktifkan, hal-hal yang tidak boleh dilakukan dari workstation.

Akhirnya selamat membaca dan bekerja lebih baik.

Salam,

Hendra & Susan Dewichan


Menghindari masalah

by Ghost_Rider

Pada bagian saya akan memberikan 4 buah contoh yang harus anda lakukan pada sistem anda:

- shell provider
- Mail server
- Web server
- Standalone box

Pada bagian ini option untuk standalone tidak akan didiskusikan dengan alasan yang sudah jelas.

Pertama kita lihat apa saja yang harus dilakukan pada shell provider.

Shell provider

Pada server jenis ini anda akan memiliki banyak pemakai pada server, yang mungkin saja memberikan id dan password account shell kepada teman mereka, dan ini dapat menjadi lingkungan yang mengerikan bagi sysadmin.

Service yang berjalan:

- FTP
- SSH
- TELNET

Tip:

  • Jangan memperbolehkan root untuk login secara remote
  • Buang, atau paling tidak ganti password untuk account default.
  • Jangan memperbolehkan pemakai ftp anonymous untuk login, demikian juga untuk root, dan user berkemampuan tinggi lainnya untuk login dengan ftp, bin, daemon, dan pseudo user lainnya dari root.
  • Periksa semua file dengan SUID bit, dan periksa halaman manual mereka, jika dikatakan mereka dapat dijalankan tanpa SUID bit hilangkan saja. File seperti at, mount, umount selalu tanpa SUID bit. Jika pada sistem anda ada, hilangkan saja
  • Chroot() user pada home masing-masing ketika login dengan ftp.
  • Gunakan password shadow
  • Hapus su dari sistem anda dan gunakan sudo sebagai pengantinya, jika anda benar-benar ingin anda atau hanya anda saja sebagai sysadmin buang saja keduanya
  • Jangan memperbolehkan user biasa menggunakan perintah seperti, mount, umount, uname,
    netstat, w, who, dan yang lain yang dapat memberikan informasi tentang mesin anda kalau benar-benar tidak dibutuhkan.
  • Gunakan npasswd sebagai penganti passwd, atau gunakan vpass dengan passwd
  • Instalasi Crack (ingat untuk set permission ke rwx------) dan sekali seminggu jalankan suatu check pada password dari sistem anda. Ingat bahwa hal tersebut dapat makan waktu beberapa jam atau beberapa hari kalau sistem anda memiliki user yang banyak, tetapi anda perlu ingat bahwa hal tersebut dapat membuat sistem anda menjadi aman. Set cron untuk menjalankannya dan report dengan mail.
  • Jika anda ingin password yang aman, dan crypt() dengan long password menggunakan ppgen (password generator) yang mana akan mengenerate password untuk user.
  • Peringatkan user tentang kemungkinan serangan secara social engineering.
  • Buat user sering mengganti password mereka
  • Sering tampilkan pesan seperti "Host ini senantiasa mencatat segala aktifitas yang dilakukan user, segala usaha illegal akan dituntut secara hukum" pada login prompt dan motd. Adalah baik untuk melakukan hal ini, hal ini tidak akan mengamankan sistem anda, tetapi membuat penyerang berpikir dua kali.

URL:

sudo (ftp://ftp.courtesan.com/pub/sudo/)
npasswd (ftp://ftp.cc.utexas.edu/pub/npasswd/)
ppgen (ftp://coast.cd.purdue.edu/pub/tolls/unix/ppgen/)
crack (http://www.users.dircon.co.uk/~crypto/)

Mail server

Sebenarnya kita dapat berpikir bahwa server jenis ini tidak berbahaya seperti suatu Shell provider, tetapi itu adalah tidak benar, suatu Mail Server kadang-kadang lebih berbahaya dari pada shell provider. Mengapa? karena daemon sendmail benar-benar banyak mengandung bug, POP3 dapat di brute force untuk mendapatkan password dari user, dan bahkan jika host ini tidak memperbolehkan login secara remote? Jadi ada mulai membayangkannya sebagai suatu lingkungan yang kacau, itu adalah baik, keterbukaan mata anda ke suatu yang nyata.

Services yang berjalan:

- SMTP
- POP3

Tip:

  • Coba gunakan daemon qmail sebagai penganti sendmail.
  • Periksa jika perintah vrfy dan expn, mungkin ada, jika tidak ada disable mereka.
  • Pada POP3, jika mungkin, tentukan lock account jika suatu jangka waktu usaha login tetap gagal. Ingat untuk menggunakan mekanisme auto-unlock, misalnya setelah 30 menit account di lock. Jika tidak ada pilihan lain anda dapat senatiasa login ke account yang sedang di serang, dan tidak ada orang lain dapat melakukan login sampai anda logout (Saya berbicara tentang login pada pop3).


Web server

Web server merupakan salah satu yang paling banyak diserang oleh script kiddies, segala sesuatu yang ingin mereka lakukan adalah melakukan "31337 defacings" dengan berkata sperti ini "I 0wN yOuR AsS bItCh", mengunakan ekspoit yang diambil dari bugtraq. Bagi Web Server jenis kiddiots adalah yang paling berbahaya, tetapi ingat, mereka hanya berhasil jika anda malas melakukan upgrade dan patch hole. Scenario lainnya adalah serangan DoS setelah mereka gagal dengan sejumlah eksploit. Solusi untuk hal ini adalah -- FIREWALL

Services yang berjalan:

- www-http
- ftp (most of the times)

PENTING: Jika anda memiliki suatu web server dengan daemon ftp dan anda memperbolehkan upload ke direktori, INGAT chroot() ftp dan chroot() http PADA DIREKTORI YANG BERBEDA, mereka tidak dapat mengakses satu sama yanglain. Kecuali scripts dapat mengupload ke root pada server anda.

Tip:

  • Jika anda mengunakan script CGI periksa bahwa script CGI tersebut tidak memiliki kelemahan, jika ada hapus saja.
  • Jika menggunakan suatu world writable ftp directory seperti /incoming periksalah secara berkala, misalnya setiap 3 hari, atau setiap minggu, jangan lebih dari 1 minggu, setelah periode tersebut hapuslah segala sesuatu yang berada didalam direktori tersebut.
  • Jangan menjalankan daemon http sebagai root, mungkin anda berkata bahwa port lebih rendah dari 1023 (yang standar) harus berjalan sebagai root, ya benar mereka harus di jalankan sebagai root, tetapi mereka dapat diturunkan permissionnya seperti pada apache. Gunakan suatu user khusus untuk httpd, tentukan /bin/false dan shell dari user dan tempatkan namanya dalam file /etc/ftpusers.

Daftar CGI Script yang memiliki kelemahan

CATATAN: Ini bukan merupakan daftar yang lengkap.

- phf - htmlscript - view-source
- Count.cgi - pfdisplay - campas
- test-cgi - perl.exe - nph-test-cgi
- php.cgi - wwwboard.pl
- handlers - www-sql
- webgais - service.pwd
- websendmail - users.pwd
- webdist.cgi - aglimpse
- faxsurvey - man.sh

Catatan Akhir

Saya berharap tulisan ini memberikan oritentasi yang baik tentang bagaimana mengamankan sistem anda atau jaringan terhadap penyerang. Sesuatu yang perlu diingat adalah "Untuk melindungi diri, anda perlu melihatnya dari sisi penyerang" sisikan waktu untuk membaca petunjuk, tulisan tentang jaringan dari kelompok diskusi seperti comp.security.unix, comp.security.announce dan comp.os.linux.security. Anda akan belajar dari masalah orang lain, percayalah.

Virus Sebagai Perusak Data

Pendahuluan

Virus komputer adalah bagian kecil program yang mengikatkan diri pada aplikasi atau file, di mana program tersebut bisa menyebabkan komputer bekerja di luar kehendak pemakai. Program ini disebut virus karena punya kesamaan ciri-ciri dengan virus dalam bidang biologi dan kesehatan. Persebaran virus komputer dianalogikan seperti persebaran virus dari satu orang ke orang lain. Virus ini hanya akan menyebar ketika program aplikasi virus atau file yang terkena virus tersebut dieksekusi. Karena sifat-sifat kerja virus yang bisa menyebabkan komputer bekerja di luar kehendak itulah maka virus ini juga banyak digunakan oleh hacker dan cracker untuk melakukan penyusupan ke suatu sistem.

Virus komputer dikategorikan berdasarkan cara penyebaran atau bagian yang diserang, antara lain Boot Sector Viruses (menyerang boot sector), File Viruses (menyerang file), Macro Viruses,(terletak pada program-program yang memakai makro seperti Microsoft seperti Word dan Excel), E-mail viruses (menyebar melalui e-mail), Stealth virus, Polymorphic virus (kodenya berubah setiap berpindah mesin), dan Multipartite virus (gabungan file virus dan boot sector virus). Virus komputer ini terletak pada program yang executable (*.com, *.bat, *.exe, *.dll, dan file-file executable yang lain).

Penanganan Virus

Kerusakan data yang disebabkan oleh virus bisa bermacam-macam. Ada virus yang melakukan penghapusan sebagian atau bahkan seluruh file, atau melakukan pengubahan kode-kode file tersebut. Ada juga virus yang melakukan perubahan nama atau ekstensi file sehingga pemilik data akan mengalami kesulitan untuk mencari datanya. Selain itu, ada juga virus yang menciptakan banyak file-file tak perlu sehingga menghabiskan kapasitas disk drive kita. Kebanyakan dari virus-virus ini menyerang file-file sistem dari sistem operasi yang digunakan. Dari hari ke hari, varians dari suatu virus semakin banyak tercipta, karena hanya dengan mengubah sedikit algoritma dari virus tersebut, maka virus tersebut sudah tidak dikenali oleh anti virus yang belum memiliki definisi virus varians baru tersebut.

Untuk mengatasi masalah virus pada komputer ini, biasanya kita menggunakan program Anti Virus. Prioritas utama dari program Anti Virus ini adalah untuk “membersihkan” file-file yang semula terinfeksi virus supaya bebas dari virus tersebut. Prioritas selanjutnya, seandainya file tersebut tidak bisa dibersihkan dari virus, maka Program Anti Virus akan mengusahakan supaya file-file yang terinfeksi tersebut tidak digunakan. Caranya dengan mengkarantina file tersebut. Tetapi seandainya file tersebut merupakan file vital, yang selalu dieksekusi ketika suatu program dijalankan, maka Program Anti Virus akan menyarankan untuk menghapus file tersebut supaya tidak terjadi penyebaran virus lebih lanjut.

Penutup

Dengan adanya virus komputer ini, selain menunjukkan bagaimana hebatnya manusia, tetapi juga menunjukkan betapa manusia sangat lemah dan sangat rawan terhadap hal-hal yang kelihatannya sepele. Virus ini menunjukkan kehebatan manusia dalam berpikir (pencipta virus) karena mereka bisa memikirikan hal-hal yang begitu rumit dan mendetail dalam mengamati kelemahan dari suatu program, di mana bagian dari kelemahan itulah yang nantinya akan mereka gunakan sebagai titik awal penyerangan. Virus juga menunjukkan kelemahan, karena biar bagaimanapun manusia berusaha menciptakan suatu sistem yang sempurna, pasti terdapat celah-celah yang sangat rawan untuk diserang oleh orang lain.

Metode Enskripsi Blowfish

Blowfish merupakan metoda enkripsi yang mirip dengan DES (DES-like cipher) dan diciptakan oleh Bruce Schneier yang ditujukan untuk mikroposesor besar (32 bit ke atas dengan cache data yang besar). Blowfish dikembangkan untuk memenuhi kriteria disain sebagai berikut:

  • Cepat, pada implementasi yang optimal Blowfish dapat mencapai kecepatan 26 clock cycle per byte.
  • Kompak, Blowfish dapat berjalan pada memori kurang dari 5 KB.
  • Sederhana, Blowfish hanya menggunakan operasi yang simpel: penambahan (addition), XOR, dan penelusuran tabel (table lookup) pada operand 32 bit. Desainnya mudah untuk dianalisa yang membuatnya resisten terhadap kesalahan implementasi.
  • Keamanan yang variabel, panjang kunci Blowfish dapat bervariasi dan dapat mencapai 448 bit (56 byte).

Blowfish dioptimasikan untuk aplikasi dimana kunci tidak sering berubah, seperti jalur komunikasi atau enkripsi file otomatis. Blowfish jauh lebih cepat dari DES bila diimplementasikan pada 32 bit mikroprosesor dengan cache data yang besar, seperti Pentium dan Power PC, Blowfish tidak cocok untuk aplikasi seperti packet switching, dengan perubahan kunci yang sering, atau sebagai fungsi hash satu arah. Kebutuhan memorinya yang besar tidak memungkinkan untuk aplikasi kartu pintar (smart card).

Deskripsi dari Blowfish

Blowfish merupakan blok cipher 64-bit dengan panjang kunci variabel. Algoritma ini terdiri dari dua bagian: key expansion dan enkripsi data. Key expansion merubah kunci yang dapat mencapai 448 bit menjadi beberapa array subkunci (subkey) dengan total 4168 byte.

Enkripsi data terdiri dari iterasi fungsi sederhana sebanyak 16 kali. Setiap putaran terdiri dari permutasi kunci-dependent dan substitusi kunci- dan data-dependent. Semua operasi adalah penambahan dan XOR pada variable 32-bit. Tambahan operasi lainnya hanyalah empat penelusuran tabel (table lookup) array berindeks untuk setiap putaran.

Blowfish menggunakan subkunci yang besar. Kunci ini harus dihitung sebelum enkripsi atau dekripsi data.

Array P terdiri dari delapan belas 32-bit subkunci:

P1,P2, . . . ,P18

Empat 32-bit S-box masing-masing mempunyai 256 entri:

S1,0, S1,1, . . . , S1,255

S2,0, S2,1, . . . , S2,255

S3,0, S3,1, . . . , S3,255

S4,0, S4,1, . . . , S4,255

Metoda selengkapnya untuk menghitung subkunci ini akan dijelaskan pada bagian bawah.

Blowfish merupakan algoritma yang menerapkan jaringan Feistel (Feistel network) yang terdiri dari 16 putaran. Input merupakan elemen 64 bit, X. Untuk mengenkrip:

Bagi X menjadi dua 32-bit: XL, XR

untuk i = 1 sampai 16

XL = XL xor Pi

XR = F(XL) xor XR

Tukar XL dan XR

Tukar XL dan XR (batalkan penukaran terakhir)

XR = XR xor P17

XL = XL xor P18

Kombinasikan kembali XL dan XR

Fungsi F adalah sebagai berikut:

Bagi XL, menjadi empat bagian 8-bit: a, b, c dan d

F(XL) = ((S1,a + S2,b mod 232) xor S3,c) + S4,c mod 232

Dekripsi sama persis dengan enkripsi, kecuali P1, P2, . . . , P18 digunakan pada urutan yang terbalik.

Subkunci dihitung menggunakan algoritma Blowfish, metodanya adalah sebagai berikut:

  1. Pertama-tama inisialisasi P-array dan kemudian empat S-box secara berurutan dengan string yang tetap. String ini terdiri digit hexadesimal dari pi.
  2. XOR P1 dengan 32 bit pertama kunci, XOR P2 dengan 32 bit kedua dari kunci dan seterusnya untuk setiap bit dari kunci (sampai P18). Ulangi terhadap bit kunci sampai seluruh P-array di XOR dengan bit kunci.
  3. Enkrip semua string nol dengan algoritma Blowfish dengan menggunakan subkunci seperti dijelaskan pada langkah (1) dan (2).
  4. Ganti P1 dan P2 dengan keluaran dari langkah (3)
  5. Enkrip keluaran dari langkah (3) dengan algoritma Blowfish dengan subkunci yang sudah dimodifikasi.
  6. Ganti P3 dan P4 dengan keluaran dari langkah (5).
  7. Lanjutkan proses tersebut, ganti seluruh elemen dari P-array, dan kemudian seluruh keempat S-box berurutan, dengan keluaran yang berubah secara kontinyu dari algoritma Blowfish.

Total diperlukan 521 iterasi untuk menghasilkan semua subkunci yang dibutuhkan. Aplikasi kemudian dapat menyimpan subkunci ini dan tidak dibutuhkan langkah-langkah proses penurunan ini berulang kali, kecuali kunci yang digunakan berubah.

Keamanan dari Blowfish

Tidak ada kelemahan yang berarti dari algoritma Blowfish yang dapat ditemukan sampai saat ini, kecuali adanya weak key, dimana dua entri dari S-box mempunyai nilai yang sama. Tidak ada cara untuk mencek weak key sebelum melakukan key expansion. Bila dikuatirkan hal ini dapat mengurangi keamanannya maka dapat dibuat rutin untuk mengecek entri S-box, walaupun hal ini tidak perlu.

Sampai saat ini tidak ada cryptanalysis yang berhasil tehadap Blowfish, untuk amannya jangan menggunakan Blowfish dengan kurang dari 16 putaran (round).

Aplikasi

Untuk mengaplikasikan metoda ini penulis membuat rutin dengan menggunakan Delphi yang dapat dilihat pada unit Blowfish.pas dan tabel inisialisasi bf_init.inc. Untuk mengecek kebenaran implementasi dari algortima ini penulis juga melengkapinya dengan prosedur self test yang dapat dilihat hasilnya dengan menjalankan program BFTest.dpr.

Saat ini banyak sekali aplikasi security yang menggunakan Blowfish sebagai metoda enkripsinya, untuk melihat aplikasi apa saja yang sudah menggunakan metoda ini dapat dilihat websitenya di Counterpane.

Kode Jahat/Perusak (Malicious Codes)

Definisi

Kode jahat/perusak (malicious codes atau disingkat malcodes) didefinisikan sebagai semua macam program, makro atau script yang dapat diesekusi dan dibuat dengan tujuan untuk merusak sistem komputer. Oleh karena itu bug yang dibuat secara tidak sengaja oleh programer, tidak termasuk dalam kategori ini. Tetapi untuk bug yang benar-benar mengganggu, banyak orang mengkategorikannya sebagai malcode.

Dahulu digunakan istilah "Malware (= Malicious Software)" ditujukan untuk malcode. Tetapi istilah ini terlalu lemah dan sempit, sehingga e-mail palsu/bohong yang notabene bukan software tidak dapat dimasukkan dalam golongan ini. Oleh karena itu digunakan istilah malcode, bukan malware.

Klasifikasi

Kode perusak dapat digolongkan dalam 3 macam golongan: virus, worm dan Trojan Horses, serta beberapa program yang memiliki bug.

Virus

Virus memiliki kemampuan jahat untuk mereproduksi diri mereka sendiri dan terdiri dari kumpulan kode yang dapat memodifikasi target kode yang sedang berjalan, atau dapat pula memodifikasi struktur internal target kode, sehingga target kode sebelum berjalan dipaksa menjalankan virus.

Virus sering menampilkan pesan yang tidak disukai, merusak tampilan display, menghapus memory C-MOS, merusak informasi dalam hard disk dll. Efek yang ditimbulkan virus mengalami perkembangan yang cukup serius akhir-akhir ini.

Contoh virus: Brain, Ohe half, Die hard, XM/Laroux, Win95/CIH

Virus masih dapat dibagi lagi dalam beberapa kategori:

1. Boot Virus: Jika komputer dinyalakan, sebuah inisial program di boot sector akan dijalankan. Virus yang berada di boot sector disebut boot virus.

2. File Virus: File virus adalah virus yang menginfeksi executable program. Dilaporkan bahwa hampir 80% virus adalah file virus.

3. Multipartite Virus: Virus yang menginfeksi baik boot sector dan file.

4. Macro Virus: Belakangan diketemukan. Targetnya bukan executable program, tetapi file dokument seperti Microsoft Excel atau Word. Ia akan memulai menginfeksi bila program aplikasi membaca dokumen yang berisi macro.

Worm

Worm ditujukan kepada program yang mengkopi dirinya sendiri ke HANYA memory komputer. Perbedaan mendasar dari worm dan virus adalah, apakah menginfeksi target code atau tidak. Virus menginfeksi target code, tetapi worm tidak. Worm hanya ngendon di memory.

Worm pada awalnya diketemukan di large computer (1970-an), dan akhir- akhir ini saja diketemukan di komputer kecil seperti PC. Terutama sejak 1999, dimana work banyak beredar melalui media email.

Contoh worm: I-Worm/Happy99(Ska), I-Worm/ExploreZIP, I-Worm/PrettyPark, I-Worm/MyPics

Trojan Horse

Trojan Horse diproduksi dengan tujuan jahat. Berbeda dengan virus, Trojan Horse tidak dapat memproduksi diri sendiri. Pada umumnya, mereka dibawa oleh utility program lainnya. Utility program tersebut mengandung dirinya, atau Trojan Horse itu sendiri ber"lagak" sebagai utility program.

Contoh Trojan Horse: Win-Trojan/Back Orifice, Win-Trojan/SubSeven, Win-Trojan/Ecokys(Korean)

Trojan Horse masih dapat dibagi lagi menjadi:

1. DOS Trojan Horse: Trojan Horse yang berjalan di DOS. Ia mengurangi kecepatan komputer atau menghapus file-file pada hari atau situasi tertentu.

2. Windows Trojan Horse: Dijalankan di system Microsoft Windows. Jumlah Windows Trojan Horse meningkat sejak 1998 dan digunakan sebagai program untuk hacking dengan tujuan jahat yang dapat mengkoleksi informasi dari komputer yang tersambung internet.

Trend Malcode di Jepang tahun 1999

Virus tradisional: 6%
Windows Virus: 8%
Worm: 31% (tahun 1998, hampir 0%)
Macro Virus: 55%

Hacker Sebagai Penguji Sistem Keamanan

PENDAHULUAN

Dalam membangun sebuah sistem jaringan berbasis internet, masalah keamanan menjadi suatu hal yang mutlak diperlukan. Sistem yang dibangun tanpa adanya sistem keamanan yang baik sama halnya dengan mengajak pencuri untuk masuk ke rumah kita dan membiarkan dia mengambil segala sesuatu yang kita miliki.

Seringkali ketika membangun sebuah sistem, kita menemukan berbagai kerawanan dalam sistem kita. Namun hal itu kita anggap sebagai hal kecil karena kita tidak menganggapnya sebagai lubang keamanan (hole). Kita tidak sadar bahwa kerawanan-kerawanan kecil seperti inilah yang dimanfaatkan oleh orang-orang yang tidak bertanggungjawab untuk menjalankan aksi kejahatannya.

HACKER VS CRACKER

Dua istilah ini paling sering disebutkan ketika kita berbicara mengenai keamanan data. Hacker dan cracker dianggap sebagai orang yang bertanggung jawab atas berbagai kasus kejahatan komputer (cybercrime) yang semakin marak dewasa ini. Padahal jika kita mau melihat siapa dan apa yang dilakukan oleh hacker dan cracker, maka anggapan tersebut bisa dikatakan tidak 100 % benar.

Hacker adalah sebutan untuk mereka yang menggunakan keahliannya dalam hal komputer untuk melihat, menemukan dan memperbaiki kelemahan sistem keamanan dalam sebuah sistem komputer ataupun dalam sebuah software. Hasil pekerjaan mereka biasanya dipublikasikan secara luas dengan harapan sistem atau software yang didapati memiliki kelemahan dalam hal keamanan dapat disempurnakan di masa yang akan datang. Sedangkan cracker memanfaatkan kelemahan-kelamahan pada sebuah sistem atau software untuk melakukan tindak kejahatan.

Dalam masyarakat hacker, dikenal hirarki atau tingkatan. Hacker menduduki tempat kedua dalam tingkatan tersebut dan cracker berada pada tingkat ketiga. Selain itu masih ada beberapa tingkatan lain seperti lamer (wanna be). Berbeda dengan hacker dan craker yang mencari dan menemukan sendiri kelemahan sebuah sistem, seorang lamer menggunakan hasil temuan itu untuk melakukan tindak kejahatan. Seorang lamer biasanya hanya memiliki pengetahuan yang sedikit mengenai komputer terutama mengenai sistem keamanan dan pemrograman. Dalam komunitas hacker, lamer merupakan sebutan yang bisa dibilang memalukan.

Seorang hacker memiliki tujuan yaitu untuk menyempurnakan sebuah sistem sedangkan seorang cracker lebih bersifat destruktif. Umumnya cracker melakukan cracking untuk menggunakan sumber daya di sebuah sistem untuk kepentingan sendiri.

MENGUJI KEAMANAN SISTEM

Berbicara mengenai keamanan dalam sebuah sistem komputer, tak akan lepas dari bagaimana seorang cracker dapat melakukan penetrasi ke dalam sistem dan melakukan pengrusakan. Ada banyak cara yang biasanya digunakan untuk melakukan penetrasi antara lain : IP Spoofing (Pemalsuan alamat IP), FTP Attack, Unix Finger Exploit, Flooding, Email Exploitsm Password Attacks, Remote File Sisem Attacks, dll.

Pada umumnya, cara-cara tersebut bertujuan untuk membuat server dalam sebuah sistem menjadi sangat sibuk dan bekerja di atas batas kemampuannya sehingga sistem akan menjadi lemah dan mudah dicrack.

Seorang hacker bisa dipekerjakan untuk mencari celah-celah (hole) dalam sebuah sistem keamanan. Hacker akan menggunakan berbagai teknik yang diketahuinya termasuk teknik-teknik di atas untuk melakukan penetrasi ke dalam sistem. Hacker juga akan mengkombinasikan berbagai cara di atas dan menggunakan berbagai teknik terbaru yang lebih canggih. Dengan demikian diharapkan titik rawan dalam sebuah sistem dapat diketahui untuk kemudian dilakukan perbaikan. Setelah perbaikan dilakukan (dengan melibatkan sang hacker), sistem akan kembali diuji. Demikianlah proses ini dilakukan berulang-ulang sehingga semua celah yang ada dalam sistem kemanan bisa ditutup.

Untuk melakukan proses ini, tentunya dibutuhkan seorang hacker yang benar-benar berpengalaman dan memiliki tingkat pengetahuan yang tinggi. Tidak semua hacker bisa melakukan hal ini dengan baik, apalagi jika kita memakai seorang cracker.

PENUTUP

Seorang hacker kini bisa memainkan peran sebagai konsultan keamanan bagi para vendor ataupun developer software maupun bagi perusahan-perusahaan yang menggunakan sistem komputer sebagai tulang punggung berjalannya kegiatan perusahaan. Dengan perannya ini, hacker diharapakan bisa membuat sebuah sistem ataupun sebuah software tetap survive dan tidak mengalami kehancuran akibat tindak kejahatan komputer yang dilakukan oleh para cracker.

Menjadi hacker adalah sebuah kebaikan tetapi menjadi seorang cracker adalah sebuah kejahatan.


Keamanan

Pendahuluan
Mengapa Kita Perlu Pengamanan?
Banyak pertanyaan yang mungkin timbul di pikiran kita. Mengapa kita membutuhkan kemanan, atau seberapa aman, atau apa yang hendak kita lindungi, seberapa pentingkah data kita sehingga perlu memusingkan diri dengan masalah keamanan. Pertama akan dijelaskan mengapa kita membutuhkan keamanan. Dalam dunia global dengan komunikasi data yang selalu berkembang dengan pesat dari waktu ke waktu, koneksi internet yang semakin murah, masalah keamanan seringkali luput dari perhatian pemakai komputer dan mulai menjadi isu yang sangat serius. Keamanan data saat ini telah menjadi kebutuhan dasar karena perkomputeran secara global telah menjadi tidak aman. Sementara data anda berpindah dari satu titik ke titik lainnya di Internet, mungkin data tersebut melewati titik - titik lain dalam perjalanannya, yang memberikan kesempatan kepada orang lain untuk mengganggunya. Bahkan mungkin beberapa pengguna dari sistem anda, mengubah data yang dimiliki menjadi sesuatu yang tidak anda inginkan. Akses yang tidak terotorisasi ke dalam sistem anda mungkin bisa diperoleh oleh penyusup, yang disebut 'cracker', yang kemudian menggunakan kemampuannya untuk mencuri data, atau pun melakukan hal - hal lain yang merupakan mimpi buruk bagi anda.

Seberapa Aman?
Sekarang kita akan mempelajari lebih jauh mengenai seberapa tinggi tingkat kemanan yang kita miliki, atau pun kita perlukan. Satu hal yang perlu diingat adalah tidak ada satu sistem komputer pun yang memiliki sistem keamanan yang sempurna. Hal yang dapat anda lakukan hanya mencoba meminimalisir celah keamanan yang ada. Untuk pengguna Linux rumahan yang hanya menggunakannya untuk keperluan pribadi saja di rumah, mungkin tidak perlu memikirkan terlalu banyak tindakan pencegahan. Tetapi untuk pengguna Linux yang termasuk dalam skala besar, seperti bank dan perusahaan telekomunikasi, banyak usaha ekstra keras yang harus dilakukan.

Hal lain yang perlu diingat adalah semakin aman sistem yang anda miliki, maka sistem komputer akan menjadi semakin merepotkan. Anda harus menyeimbangkan antara kenyamanan pemakaian sistem dan proteksi demi alasan keamanan. Sebagai contoh, anda bisa saja memaksa orang lain yang ingin masuk ke dalam sistem anda untuk menggunakan call-back modem untuk melakukan panggilan balik melalui nomor telepon rumah mereka. Cara ini kelihatannya memang lebih aman, tapi jika tidak ada seorang pun di rumah, akan menyulitkan mereka untuk login. Anda juga dapat mengatur konfigurasi sistem Linux anda tanpa jaringan atau koneksi ke Internet, tapi pembatasan ini akan membatasi kegunaan jaringan itu sendiri.

Jika anda memiliki situs dengan ukuran menengah sampai besar, anda harus membangun seperangkat kebijakan dalam hal keamanan yang menyatakan tingkat keamanan yang diperlukan. Anda dapat menemukan berbagai informasi mengenai contoh kebijakan dalam hal keamanan yang umum digunakan di http://www.faqs.org/rfcs/rfc2196.html. Informasi ini sering diperbarui, dan berisi lingkup kerja yang bagus untuk mengembangkan kebijakan keamanan untuk perusahaan anda.

Apa yang Anda Coba Lindungi?
Sebelum anda berusaha melakukan pengamanan terhadap sistem yang anda miliki, anda harus menentukan terlebih dahulu beberapa hal. Hal - hal yang perlu dipikirkan, yaitu tingkat ancaman yang harus anda antisipasi, resiko yang harus diambil, dan seberapa kebal sistem anda sebagai hasil usaha yang telah anda lakukan. Anda harus menganalisa sistem anda untuk mengetahui apa yang anda lindungi, kenapa anda melindunginya, seberapa besar nilai data yang anda lindungi, dan siapa yang bertanggung jawab terhadap data dan aset lain dalam sistem anda.

Resiko adalah kemungkinan dimana seorang penyusup mungkin bisa berhasil dalam usahanya untuk mengakses komputer anda. Dapatkah seorang penyusup membaca atau menulis berkas, atau pun mengeksekusi program yang dapat menyebabkan kerusakan? Dapatkah mereka menghapus data yang penting? Sebagai tambahan, memiliki account yang tidak aman dalam sistem anda dapat berakibat kecurian pada jaringan anda. Anda harus memutuskan siapa yang anda percaya untuk mengakses sistem dan siapa yang dapat menimbulkan ancaman bagi sistem anda.

Ada beberapa tipe penyusup yang karakteristiknya berbeda satu dengan lainnya, diantaranya:


The Curious Penyusup tipe ini pada dasarnya tertarik mencari tahu tipe sistem dan data yang anda miliki.

The Malicious Penyusup tipe ini, mengganggu sistem sehingga tidak dapat bekerja dengan optimal, merusak halaman situs web anda, atau pun memaksa anda untuk menghabiskan banyak uang dan waktu untuk memperbaiki kerusakan yang dibuatnya.

The High-Profile Intruder Penyusup tipe ini mencoba menyusup ke dalam sistem anda untuk mendapatkan ketenaran dan pengakuan. Kemungkinan dia akan menggunakan sistem anda yang canggih sebagai sarana untuk membuatnya terkenal karena telah berhasil menyusup sistem kemanan komputer anda.

The Competition Penyusup tipe ini tertarik pada data yang dimiliki oleh sistem anda. Penyusup ini mungkin adalah seseorang yang berpikir ada sesuatu yang berharga yang dapat memberikan keuntungan baginya.

The Borrowers Penyusup tipe ini akan menggunakan sumber daya yang kita miliki untuk kepentingan mereka sendiri. Biasanya penyusup ini akan menjalankannya sebagai server chatting (irc), situs porno, atau bahkan server DNS.

The Leapfrogger Penyusup tipe ini hanya tertarik menggunakan sistem yang anda miliki untuk masuk ke dalam sistem lain. Jika sistem anda terhubung atau merupakan sebuah gateway ke sejumlah host internal, anda akan menyaksikan penyusup tipe ini sedang berusaha untuk berkompromi dengan sistem yang anda miliki.


Mengembangkan Suatu Kebijaksanaan Keamanan
Ciptakanlah kebijakan yang sederhana dan umum digunakan, dimana tiap pengguna dalam sistem anda dapat mengerti dan mengikutinya. Kebijakan tersebut harus dapat melindungi data anda sendiri sebagaimana melindungi kerahasiaan dari tiap pengguna. Beberapa hal yang perlu dipertimbangkan adalah: siapa sajakah yang memiliki akses ke sistem anda, siapa sajakah yang diizinkan untuk menginstall program ke dalam sistem, siapa memiliki data apa, perbaikan terhadap kerusakan yang mungkin terjadi, dan penggunaan yang wajar dari sistem.

Sebuah kebijakan mengenai keamanan yang dapat diterima secara umum dimulai dengan pernyataan "Mereka yang tidak diizinkan, dilarang masuk". Artinya, kecuali anda memberikan izin akses kepada service atas seorang pengguna, maka pengguna tersebut haruslah tidak bisa melakukan apa - apa sampai anda memberikan izin akses kepadanya. Yakinkan bahwa kebijakan yang anda buat, dapat berjalan dengan baik pada account pengguna biasa. Dengan mengatakan "Ah, saya tidak habis pikir mengenai masalah perizinannya" atau "Saya malas", biasanya seseorang akan melakukan segala sesuatunya sebagai root. Hal ini dapat menyebabkan terciptanya lubang keamanan yang belum ada sebelumnya. rfc1244 adalah dokumentasi yang menjelaskan cara untuk membuat kebijakan keamanan jaringan sendiri. Sedangkan dokumentasi yang menjelaskan mengenai contoh kebijakan keamanan dengan deskripsi yang lengkap untuk tiap tahapnya dapat anda lihat di rfc1281.

Mengamankan Situs Anda
Dokumen ini mendiskusikan berbagai macam cara untuk mengamankan aset anda. Sebagai contoh mesin lokal anda, data anda, pengguna anda, jaringan anda, dan bahkan reputasi anda sendiri. Apa yang akan terjadi pada reputasi anda, jika seorang penyusup berhasil menghapus sebagian pengguna data anda? Atau merusak situs web anda? Atau bahkan menerbitkan rencana proyek perusahaan anda untuk beberapa tahun kedepan? Jika anda berencana untuk membangun sebuah instalasi jaringan, ada banyak faktor yang harus anda perhitungkan sebelum menambahkan satu demi satu mesin ke dalam jaringan anda.

Bahkan dengan account panggilan PPP tunggal anda, atau bahkan sebuah situs kecil, bukan berarti si penyusup tidak tertarik pada sistem yang anda miliki. Situs - situs raksasa bukanlah satu - satunya target sasaran, karena banyak penyusup yang ingin mengeksploitasi sebanyak mungkin situs yang ada, seberapa pun juga ukurannya. Sebagai tambahan mereka mungkin menggunakan lubang keamanan dalam situs anda untuk memperoleh akses ke situs lain yang mereka tuju. Penyusup tidak perlu melakukan tebak - tebakan mengenai cara anda mengamankan sistem karena mereka memiliki banyak waktu. Kemungkinan besar cara yang mereka gunakan adalah mencoba semua kemungkinan yang ada (brute force).

Keamanan Fisik
Lapisan kemanan pertama yang harus anda perhitungkan adalah keamanan secara fisik dalam sistem komputer anda. Siapa saja yang memiliki akses secara langsung ke sistem? Apakah mereka memang berhak? Dapatkah anda melindungi sistem anda dari maksud dan tujuan mereka? Apakah hal tersebut perlu anda lakukan?

Berapa banyak keamanan fisik yang berada dalam sistem anda memiliki ketergantungan terhadap situasi yang anda hadapi, dan tentu saja anggaran. Apabila anda adalah pengguna rumahan, maka kemungkinan anda tidak membutuhkan banyak. Tapi jika anda berada di laboratorium, atau pun jaringan komputer tempat anda bekerja, banyak yang harus anda pikirkan. Secara nyata dan jelas, metode keamanan secara fisik yang bisa dilakukan antara lain dengan mngunci pintu, kabel, laci, tapi semuanya itu diluar pembahasan dalam bagian ini.

Kunci Komputer
Banyak komputer pribadi saat ini yang memiliki kemampuan mengunci. Biasanya kunci ini berupa soket pada bagian depan casing yang bisa dimasukkan kunci untuk mengunci mau pun membukanya, Kunci casing dapat membantu mencegah seseorang untuk mencuri dari komputer, atau membukanya secara langsung untuk memanipulasi atau pun mencuri perangkat keras yang anda miliki. Kunci ini juga berguna untuk mencegah orang tertentu untuk mereboot komputer anda dari disket mau pun perangkat keras lainnya.

Kunci casing ini melakukan hal-hal yang berbeda menurut fasilitas yang ditawarkan oleh motherboard dan bagaimana struktur casing itu sendiri. Pada banyak komputer pribadi, perusahaan pembuat menciptakan casing tersebut sedemikian rupa sehingga anda harus menghancurkannya untuk membukanya. Sedangkan pada tipe casing yang lain, keyboard mau pun mouse baru tidak dapat dipasangkan ke dalamnya. Periksalah mainboard anda, mau pun instruksinya untuk informasi lebih lanjut. Kadang - kadang hal ini bisa menjadi sangat berguna, walau pun kunci yang digunakan seringkali berkualitas rendah dan dapat dengan mudah dikalahkan oleh si penyerang dengan metode pembukaan kunci yang dimilikinya.

Beberapa mesin terutama SPARC dan Mac punya pengaman di bagian belakangnya, sehingga jika ada yang memasukkan kabel ke dalamnya, si penyerang harus memotong kabelnya atau merusak casing untuk masuk ke dalamnya. Dengan meletakkan padlock atau combo lock akan menjadi pengamanan yang cukup baik untuk mencegah orang lain mencuri mesin anda.

Keamanan BIOS
BIOS adalah tingkatan terendah dari perangkat lunak yang mengkonfigurasi atau memanipulasi perangkat keras anda. BIOS adalah singkatan dari Basic Input Output System. LILO dan berbagai metode boot Linux lainnya mengakses BIOS untuk menentukan cara untuk memboot mesin Linux anda. Perangkat keras lain yang dijalankan dengan Linux memiliki perangkat lunak yang mirip (Open Firmware di Mac dan new Suns, Sun boot PROM, dll). Anda dapat menggunakan BIOS untuk mencegah penyerang untuk mem-boot komputer dan memanipulasi sistem Linux anda.

Banyak BIOS komputer yang bisa diset kata kuncinya. Walau pun begitu, keamanan belum terjamin karena seseorang bisa saja menset ulang BIOS atau pun membuangnya jika ada orang yang mampu memasuki casing-nya. Mirip dengan itu, EEPROM S/Linux dapat diset untuk memenuhi sebuah kata kunci boot. Hal ini mungkin dapat memperlambat gerak si penyerang. Resiko lainnya dari mempercayai kata kunci BIOS untuk mengamankan sistem anda adalah masalah kata kunci yang digunakan. Kebanyakan pembuat BIOS tidak berharap pembeli untuk membuka komputernya dan mencabut baterai untuk menghilangkan kata kuncinya apabila mereka lupa. Pembuat BIOS ini seringkali melengkapi BIOS mereka dengan kata kunci standar dari pembuatnya.

Banyak BIOS dari komputer dengan sistem Intel i386 memberikan kemudahan untuk mengatur berbagai macam seting keamanan. Periksalah manual BIOS anda atau lihatlah pada saat anda akan melakukan boot up lagi. Sebagai contoh, beberapa BIOS tidak mengizinkan anda untuk mem- boot dari disket dan menuntut kata kunci untuk mengakses fasilitas tertentu dari BIOS. Sebagai catatan, jika anda memiliki mesin server, dan anda mengeset sebuah kata kunci boot, mesin anda tidak akan melakukan boot tanpa sepengetahuan dari anda sendiri. Ingatlah bahwa anda harus masuk ke ruangan server dan menyediakan kata kunci setiap kali terjadi penurunan daya listrik.

Keamanan Boot Loader
Berbagai macam boot loader Linux juga memiliki seperangkat kata kunci boot. Sebagai contoh, LILO memiliki kata kunci dan beberapa seting tertutup. LILO akan meminta masukan berupa kata kunci dari pengguna, sementara seting tertutup meminta kata kunci boot-time jika anda menambahkan option (misalnya single) di prompt LILO.

Ingatlah selalu kata kunci yang anda masukkan pada saat seting. Juga jangan lupa bahwa kata kunci tersebut akan memperlambat gerakan beberapa hacker. Jika anda menerapkan keamanan dalam boot-loader, aturlah BIOS anda sehingga komputer tidak bisa diboot dari disket, dan berikan kata kunci pada BIOS anda.

Jangan lupa juga untuk menset atribut berkas /etc/lilo.conf menjadi 600 (rw- --- ---), yang artinya berkas tersebut hhhanya bisa dibaca dan ditulis oleh root. Jika tidak, orang lain akan dapat mengetahui kata kunci anda. Jika anda memiliki sebuah server, dan memberikan kata kunci boot, maka mesin anda tidak akan dapat mem-boot tanpa seizin anda. Ingatlah bahwa anda harus datang dan memasukkan kata kunci setiap kali terjadi masalah dengan daya listrik pada ruangan di mana server berada.

Keamanan Lokal
Hal berikutnya yang akan kita perhatikan lebih lanjut adalah keamanan sistem terhadap serangan dari pengguna lokal. Mendapatkan akses ke account pengguna lokal adalah hal pertama yang dilakukan oleh penyusup sistem untuk memperoleh account root. Dengan sistem keamanan yang lemah, seorang pengguna biasa dapat menjadi root dengan menggunakan berbagai macam bug yang ada dan service dari localhost yang rentan. Jika anda yakin, bahwa sistem keamanan anda cukup baik, maka si penyusup akan mencari jalan lain untuk menyusup ke sistem anda.

Membuat Account Baru
Anda harus yakin bahwa anda menyediakan account pengguna dengan keleluasaan minimal sesuai dengan tugas yang akan mereka kerjakan. Jika anda menyediakan account kepada seorang anak berumur 10 tahun, anda mungkin hanya akan memberikan akses ke program pengolah kata dan program menggambar kepadanya, sehingga dia tidak bisa menghapus berkas yang bukan miliknya sendiri.

Beberapa tips yang mungkin bisa membantu membatasi akses:


Berikan kepada mereka akses yang minimum sesuai dengan kebutuhannya

Berhati-hatilah, perhatikan kapan dan dimana mereka login

Pastikan bahwa anda telah menghapus account yang sudah tidak digunakan lagi, yang dapat anda tentukan dengan perintah 'last' atau pun dengan memeriksa berkas log aktivitas dari tiap pengguna.

Penggunaan userid yang sama untuk semua komputer dan jaringan sangat dianjurkan untuk mempermudah pemeliharaan account, dan memudahkan analisa berkas log.

Pembuatan userid dengan group harus dihindari. Account pengguna lebih mudah untuk diawasi dan diperhitungkan, berbeda halnya dengan account group.


Keamanan Root
Account root memiliki akses penuh terhadap keseluruhan sistem. Ingat jangan menggunakan account root dengan sembarangan. Gunakan account root hanya untuk mengerjakan suatu pekerjaan khusus saja dan lakukan dalam jangka waktu yang tidak terlalu lama. Biasakan untuk menggunakan account pengguna biasa untuk menjalankan aplikasi sehari - hari. Bahkan kesalahan terkecil yang dddilakukan pada saat login sebagai root dapat menyebabkan kekacauan yang fatal.

Beberapa trik untuk menghindari kekacauan ketika login sebagai root:


Ketika mengetikkan beberapa perintah yang kompleks, cobalah untuk menjalankannya pertama kali dengan cara yang aman, khususnya perintah yang menggunakan globbing. Anda dapat juga menggunakan echo di depan perintah yang anda ketikkan, sehingga anda yakin bahwa anda benar - benar ingin menjalankannya.

Menyediakan pengguna dalam sistem anda dengan alias standar (alias rm='rm -i' ke perintah rm untuk memberikan konfirmasi mengenai penghapusan berkas.

Jadilah root hanya untuk melakukan pekerjaan tertentu saja. Jika anda ingin mencoba sesuatu, cobalah dengan login pengguna biasa sampai anda yakin apa yang akan anda lakukan dengan login root.

Variabel path untuk root sangat penting. Cobalah batasi isi variabel path perintah untuk root dan jangan memasukkan "." (direktori saat ini) ke dalam variabel path. Jangan pernah memberikan izin akses tulis ke dalam direktory yang ada di variabel path, supaya pengguna lain tidak bisa memasukkan berkas binary lain yang bisa membuatnya menjadi root setelah anda mengeksekusi berkas binary tersebut.

Jangan menggunakan perangkat lunak tools rlogin/ rsh/ rexec sebagai root. Karena perangkat lunak tersebut mudah diserang oleh penyusup. Jangan pula membuat sebuah berkas .rhost untuk root.

Dalam berkas /etc/securetty terdapat daftar terminal di mana root dapat login. Berhati - hatilah apabila anda ingin memodifikasinya. Sedapat mungkin login-lah sebagai pengguna biasa, dan gunakan perintah su untuk mendapatkan akses lebih.

Terakhir cobalah untuk bersikap tenang dan berpikir jernih ketika login sebagai root. Apa pun yang anda lakukan sebagai root akan sangat mempengaruhi banyak hal. Karena itu berpikirlah sebelum anda melakukan hal bodoh yang dapat merusak seluruh sistem.