Internet modern penuh dengan robot dan perayap jahat yang dapat membahayakan situs web Kita. Ini termasuk bot malware, bot email spam, dan pencurian konten yang memindai situs web Kita dengan berbagai cara. Mereka mencari kelemahan dalam situs web, mengumpulkan alamat email, atau hanya mencuri konten. Kita bisa mengenali bot ini dengan mencari string “user-agent” mereka yang biasanya ada di akses log situs Kita.

Bot ini mungkin tidak jahat atau spam, tetapi mungkin juga tidak memberikan manfaat apa-apa pada situs kita. Bayangkan ini: Kamu merasa situsmu mendapatkan banyak trafik, tetapi sebagian besar kunjungan berasal dari user-agent (agen pengguna akan digunakan mulai dari sini) yang tidak diinginkan atau perujuk spam yang hanya menambah beban servermu.

Sebagai langkah pertama, Kita bisa mencoba mencegah bot jahat mengakses situs Kita dengan memasukkannya ke dalam daftar hitam agen pengguna dalam file robots.txt. Sayangnya, ini hanya berfungsi untuk bot berperilaku baik yang dirancang untuk mematuhi robots.txt. Banyak bot jahat yang bisa mengabaikan robots.txt dan memindai situs Kita sesuka hati.

NGINX – Blokir User-Agent dengan Nginx conf

Langkah pertama yang harus Kita lakukan adalah menemukan file konfigurasi nginx kita. Jika menggunakan Aapanel seperti saya, kalian bisa langsung menemukannya di bagian “website config.” Caranya mudah seperti berikut:

  1. Buka “Website” di sidebar
  2. Klik domain yang ingin di konfigurasikan
  3. Klik config, dan kalian akan menemukan konfigurasi nginx untuk situs kalian.

Contoh blok server nginx conf:

server
{
    listen 80;
    listen 443 quic;
    ....
}

Kalian bisa tambahkan kode berikut di konfigurasi nginx kalian pada block server:

if ($http_user_agent ~* "ContohCrawler|ContohBadBot|ContohSpammer"){
    return 403;
}

Penjelasan:

  1. $http_user_agent adalah variable nginx yang berisi agen pengguna yang ada di HTTP Header request.
  2. ~* adalah matching atau pencarian dengan case-insensitive yang berarti semua text yang sama entah itu huruf besar atau kecil bisa ditemukan.
  3. | adalah pemisah atau logical operator untuk menyatakan “atau”/”OR”.
  4. ContohCrawler adalah bot atau agen pengguna yang ingin diblokir. dipisahkan dengan simbol di poin ketiga.
  5. return 403; adalah respon yang akan diberikan jika kondisinya memenuhi. Disini kita return 403 untuk menyatakan bahwa bot atau agen pengguna tidak diperbolehkan mengakses.

Jadi blok kode di atas bisa dibaca sebagai berikut:

Jika $http_user_agent mengandung salah satu dari “ContohCrawler|ContohBadBot|ContohSpammer” tanpa memperdulikan besar-kecilnya huruf (~*) maka kembalikan respon status 403 (unAuthorized) (return 403;).

Kalian bisa menambahkan sebanyak apapun bot/crawler di bagian "Contohcrawler". Selalu ingat hanya untuk menambahkan value ke dalam tanda kutip, dan pisahkan dengan simbol | untuk masing-masing value.

Jika value memiliki tanda titik, maka kalian harus menambahkan backslash (\) sebelum tanda titik. Contohnya adalah “www\.badbot\.com” dan lain sebagainya.

Apache – Blokir dengan .htaccess

Sedangkan untuk pengguna Apache atau litespeed (Openlitespeed juga) maka kalian perlu menggunakan modul mod_rewrite dan biasanya aktif secara default.

Kalian bisa menambahkan kode berikut ke .htaccess atau file konfigurasi apache kalian untuk masing-masing virtual host.

Berikut adalah kode bloknya:

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^(aaa|bbb) [NC] RewriteRule .* - [F,L]
</IfModule>

Penjelasan:

  1. <IfModule mod_rewrite.c> Adalah untuk mengecek apakah apache memiliki modul mod_rewrite, jika ada, maka eksekusi perintah di dalamnya.
  2. RewriteEngine On adalah untuk membuat atau memperbolehkan apache bisa melakukan eksekusi rewrite rule pada blok berikutnya.
  3. RewriteCond %{HTTP_USER_AGENT} (aaa|bbb) [NC] adalah blok kondisi untuk mengecek apakah agen pengguna (HTTP_USER_AGENT) memiliki pattern atau string yang cocok berisi entah itu aaa atau bbb dipisahkan dengan simbol operator | (OR) dengan tidak memperdulikan besar-kecilnya huruf ([NC]).
  4. RewriteRule .* - [F,L] Jika kondisi yang sebelumnya terpenuhi, maka kembalikan respon 403 (F) dan tidak perlu eksekusi lebih lanjut (L).

Seperti pada nginx, jika ingin menambahkan bot yang memiliki titik di namanya, maka kalian harus menambahkan “\” sebelum titik. Kalian bisa menambahkan sebanyak apapun yang kalian inginkan.

Cloudflare – Blokir dengan WAF

Jika kalian menggunakan cloudflare, maka pengaturannya akan lebih mudah. Kalian hanya perlu menambahkan beberapa rule di WAF (Web Application Firewall) di pengaturan cloudflare.

Pertama-tama, kalian buka domain kalian di dashboard cloudflare. Setelah itu, kalian navigasi ke bagian security dan klik di menu WAF seperti berikut:

Setelah itu, kalian klik custom rules, kemudian klik create rules. Kemudian isikan seperti berikut:

Jika kalian memiliki subskripsi aktif di cloudflare, kalian bisa menggunakan regex daripada contains di bagian operator.

Kesimpulan

Mengatasi bot-bot yang digunakan untuk niat tidak baik memang agak mengesalkan dan ribet. Tapi bisa kita atasi dengan menggunakan aturan-aturan yang bisa kita gunakan menyesuaikan dengan server yang kita pakai.

Semoga artikel ini membantu kalian dan sampai jumpa kembali. 🙂

gambar: Image by 8photo

About the Author

Dzul Qurnain

Suka nonton Anime, ngoding dan bagi-bagi tips kalau tahu.. Oh iya, suka baca ( tapi yang menarik menurutku aja)...

View All Articles