MWN Website
ContactHome

Artikel:Memblokir usaha login brute force

[draft artikel infolinux]

Keberadaan Internet yang memberi manfaat konektivitas global menjadi pedang bermata dua: kita menjadi terbuka juga terhadap serangan dari seluruh dunia. Begitu sebuah server online dengan alamat IP publik, dalam hitungan menit sudah ramailah ia disambut "ramah" dengan berbagai pindaian dan percobaan masuk dari pihak lain yang tidak dikenal. Dan jika server ini diberi password yang terlalu pendek dan/atau mudah ditebak, atau diinstali sistem operasi yang tidak terkini dan memiliki kelemahan, cukup bisa dipastikan bahwa dalam waktu singkat ia akan ditembus.

Di tempat saya bekerja, sebuah server shared server hosting Linux yang ditaruh di dalam Indonesia (IIX) maupun di luar negeri setiap harinya dapat memperoleh 1000-2000 atau lebih percobaan login yang gagal, umumnya terhadap servis SSH, terkadang juga FTP. Dan hampir selalu, percobaan login ini dilakukan oleh host asing tertentu secara berentetan untuk mencoba berbagai user maupun password yang umum (brute force).

Alangkah baiknya jika kita dapat memblokir host-host nakal tersebut, karena jika dibiarkan, maka bisa saja lama kelamaan sebuah host yang mencoba selama berhari-hari bahkan berminggu-minggu dapat menembus salah satu akun shell yang berada di server tersebut.

Artikel ini hendak menjelaskan skrip shell sederhana yang dapat kita pakai untuk melakukannya. Skrip ini ditulis dalam bahasa bash dan disesuaikan untuk distro Debian/Ubuntu. Anda dapat menyesuaikan beberapa path jika memang kurang sesuai dengan distro Anda.

Cara kerja skrip

Setiap otentikasi, berhasil atau gagal, akan dicatat oleh syslog. Di Debian/Ubuntu file lognya ada di /var/log/auth.log. Log SSH yang gagal akan berbentuk seperti ini:

Feb  7 02:30:30 serverXX sshd[3632]: (pam_unix) authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=evil.host  user=root

di mana evil.host adalah nama host atau alamat IP pengakses. Skrip tinggal melihat apakah ada baris-baris seperti ini yang banyak jumlahnya dari sebuah host. Jika ada (di skrip dibatasi minimal 100, baris 14) maka host ini menjadi target untuk kita masukkan dalam daftar hitam agar diblokir.

Bagaimana cara memblokirnya? Yaitu dengan memasukkannya ke dalam /etc/hosts.deny. Setiap kali otentikasi, daemon SSH atau proftpd akan berkonsultasi pada file ini (dan pasangannya, /etc/hosts.allow). Jika sebuah host ada di /etc/hosts.deny, maka akan ditolak.

Skrip akan mendaftarkan host-host jahat ke dalam baris-baris di file /etc/hosts.deny.ssh untuk SSH dan /etc/hosts.deny.proftpd untuk ProFTPD, misalnya:

evil.host #1202019905

Angka pada baris di atas hanyalah komentar, berisi timestamp Unix. Timestamp ini kita catat agar dapat melepas blokir secara otomatis. Di skrip diset agar sebuah host yang telah terdaftar selama 1 minggu atau lebih (baris 15) akan dihapus dari daftar hitam. Mekanisme penghapusan entri lama ini dilakukan di baris 19-33.

Cara menginstal dan memakai skrip

Ketik dan simpanlah skrip misalnya di /usr/sbin/bfa. Setelah itu, pasanglah sebagai entri cron agar dijalankan secara otomatis. Misalnya, untuk dijalankan setiap hari sekali:

# cd /etc/cron.daily
# echo -e '#!/bin/sh\n[ -f /usr/sbin/bfa ] || exit 0\n/usr/sbin/bfa' > bfa
# chmod +x bfa

bisa juga dijalankan setiap jam, Anda tinggal mengganti cron.daily dengan cron.hourly.

Selanjutnya, tambahkan 2 baris ini di /etc/hosts.deny:

sshd: /etc/hosts.deny.sshd
proftpd: /etc/hosts.deny.proftpd

Penutup

Listing skrip dapat juga diambil di http://people.masterwebnet.com/steven/files/bfa.

Selain skrip buatan sendiri ini, Anda dapat juga melihat tool gratis seperti bfd (brute force detector). Cara kerjanya kurang lebih mirip.

Dokumentasi lengkap mengenai format file /etc/hosts.deny dapat dilihat pada manpage Unix.

Terima kasih kepada rekan Dudi Indrasetiadi yang pertama kali menulis skrip ini.


Tambah komentar untuk halaman/artikel ini:

Situs kb.masterweb.net yang Anda baca ini adalah situs yang isinya dokumentasi, bukan untuk support. Fasilitas komentar pembaca ditujukan untuk mengomentari isi artikel/tutorial, bukan untuk support/memberi bantuan pada masalah yang dihadapi Anda sebagai pelanggan hosting. Jika Anda memiliki masalah dengan akun Anda (hosting/domain/password/pembayaran/dll) silakan menggunakan fasilitas Tiket di Masterkey, bukan dengan memposting komentar di sini, karena komentar di situs ini tidak dimonitor staf support kami. Cara mengirim tiket: login ke masterkey.masterweb.net lalu klik Tiket.

Terima kasih atas pengertian dan kerjasama Anda.


Nama*:
Email* (tidak akan ditampilkan):
Subjek*:
Isi komentar*:

Navigasi

Feedback

Artikel Popular

  • Panduan pengguna Spanel
  • Peraturan dan Persetujuan
  • Email
  • Upload files
  • Kontak MWN
  • PHP
  • Panduan pengguna Masterkey
  • Tentang shared hosting
  • Setting SMTP
  • URL sementara
  • Email Manager
  • selengkapnya...
  • Artikel Terbaru

  • Promo domain gratis
  • T:JSmart tidak berjalan
  • T:Fungsi PHP getallheaders() tidak berfungsi
  • Penagihan prorata
  • Panduan administrator Spanel 1.3/Pemrograman/PHP
  • Moodle
  • FAQ Email (Spanel)
  • FAQ Email
  • Panduan pengguna cPanel-WHM 11/PostgreSQL
  • Panduan pengguna cPanel-WHM 11/MySQL
  • Panduan pengguna cPanel-WHM 11/Ruby
  • selengkapnya...
  • Hak cipta © 2006-2008 PT Master Web Network Konten ditulis dan dikoleksi oleh staf MWN. Artikel-artikel pada situs knowledge base ini dapat dikutip dan disalin secara bebas, namun mohon menyebutkan sumber dengan URL http://kb.masterweb.net/ atau teks "Knowledge Base MWN". MWN tidak bertanggung jawab atas akurasi dan/atau kekinian konten. MWN tidak bertanggung jawab atas komentar-komentar yang dikirim pembaca. Dengan memposting komentar Anda memberi hak penuh pada MWN untuk menampilkan komentar tersebut di manapun dan kapanpun, dan untuk mengedit atau menghapus komentar tersebut dengan cara bagaimanapun dan/atau karena alasan apapun.