1 poin oleh GN⁺ 2024-03-31 | 1 komentar | Bagikan ke WhatsApp

Sedang Diserang DDoS, tetapi Tidak Melakukan Apa Pun

  • Selama beberapa minggu, seseorang terus mencoba melakukan serangan DDoS.
  • Mereka membanjiri server dengan jutaan request untuk mencoba mengunduh file konfigurasi jutaan kali.
  • Hanya dalam 5 hari terakhir, ada lebih dari 800 ribu percobaan unduhan, dan file konfigurasi tersebut berukuran sekitar 200MB per unduhan.
  • Sebagian besar trafik berasal dari UE, terutama Jerman dan Inggris.
  • Serangan masih berlangsung hingga saat tulisan blog ini dibuat.

Apa yang Kami Lakukan dalam Situasi Mendesak Ini

  • Tidak memblokir alamat IP penyerang.
  • Menggunakan Cloudflare, tetapi tidak mengaktifkan mode "Under Attack".
  • CPU server hampir menganggur hampir sepanjang waktu selama serangan.
  • Secara umum, hampir tidak melakukan apa pun.

Mengapa?

  • Layanan dapat menangani miliaran request per bulan tanpa masalah dan tanpa biaya besar.
  • Ada sekitar 8 layanan API dan database, dan semuanya dapat menangani miliaran request per bulan bahkan tanpa caching.
  • Menggunakan Cloudflare dan bandwidth tak terbatas.

Bagaimana Ini Bisa Terjadi?

  • Desain aplikasi TablePlus sederhana, dan filosofi ini juga diterapkan pada layanan backend yang dibuat seminimal mungkin.
  • Tidak menggunakan layanan pihak ketiga seperti Vercel atau Netlify. Sebagai gantinya, menggunakan web server tanpa pembatasan.
  • Di masa lalu, monolitik menjadi bottleneck karena VPS/prosesor yang lemah, tetapi saat ini VPS yang kuat dapat menangani miliaran request per bulan dalam satu instance.
  • Karena itu, dibangun layanan monolitik untuk setiap aplikasi. Mudah untuk deployment dan pemeliharaan.

Mari Bicara soal Monolitik

  • Ada kecenderungan untuk membuat semuanya rumit, tetapi itu bukan masalah sampai ada tekanan atau batasan.
  • Karena tidak menyukai kompleksitas, dipilih pendekatan monolitik. Semua yang dibutuhkan aplikasi digabungkan ke dalam satu layanan.
  • Deployment sederhana. Hanya perlu satu file konfigurasi, build, dan deployment.
  • Dengan sedikit dependensi, debugging dan identifikasi bottleneck menjadi lebih mudah.

Satu Web Framework dalam Go atau Rust yang Diimplementasikan dengan Benar Bisa Menangani Miliaran Request per Bulan

  • Memilih framework berperforma tinggi.
  • Mengindeks database untuk mengurangi waktu pengambilan saat data set membesar.
  • Memisahkan database utama dari database log/data penggunaan agar masalah performa tidak memengaruhi bisnis inti.
  • Menggunakan reverse proxy yang kuat seperti Nginx untuk menangani dan mendistribusikan request ke API inti.
  • Menempatkan semuanya di belakang Cloudflare dan mengonfigurasinya dengan tepat.
  • Menggunakan CDN dengan perlindungan DDoS.
  • Tidak menaruh file unduhan besar di VPS tanpa CDN atau caching.

Mari Bicara soal Deployment

  • Di TablePlus, proses deployment disederhanakan semaksimal mungkin.
  • Tidak menggunakan Docker, Kubernetes, atau container, dan tidak memerlukan pengaturan environment.
  • Menggunakan binary. Binary bisa disalin lalu dijalankan sebagai proses di server Linux.
  • Memilih Go dan Rust. Keduanya adalah bahasa berperforma tinggi dan dapat menghasilkan file binary untuk deployment.

Pembaruan

  • Vercel telah menghubungi dan mengatakan mereka memiliki fitur yang dapat melindungi situs dalam situasi seperti ini.
  • Melalui pengelolaan pengeluaran, kita bisa menetapkan batas pengeluaran, dan ada mode tantangan serangan yang mirip dengan mode "Under Attack" milik CF.

Opini GN⁺

  • Artikel ini menekankan pentingnya infrastruktur yang kuat dan strategi deployment yang disederhanakan agar layanan tetap stabil meskipun menghadapi serangan DDoS.
  • Arsitektur monolitik ditunjukkan mampu mengurangi kompleksitas, menyederhanakan deployment, dan menguntungkan untuk optimasi performa.
  • Pemanfaatan efektif layanan cloud dan CDN untuk membangun ketahanan terhadap serangan DDoS dapat menjadi contoh yang baik bagi perusahaan lain.
  • Pendekatan ini terutama dapat memberi wawasan tentang pembangunan infrastruktur yang hemat biaya bagi startup tahap awal atau perusahaan kecil dan menengah.
  • Namun, pendekatan monolitik tidak cocok untuk semua sistem atau aplikasi, sehingga penting untuk memilih arsitektur yang sesuai dengan kebutuhan dan situasi masing-masing.

1 komentar

 
GN⁺ 2024-03-31
Opini Hacker News
  • Ringkasan komentar pertama:

    • Penulis komentar menganggap kebanggaan terhadap performa situs web itu dilebih-lebihkan.
    • "1 miliar permintaan per bulan" hanya setara beberapa ratus permintaan per detik, yang merupakan tingkat sepele dan tidak bisa dianggap sebagai serangan DDoS.
    • Karena situs berada di belakang CDN (Cloudflare), tampaknya tidak ada hal khusus yang dilakukan terkait performa.
    • File 200MB yang di-cache dan disajikan melalui CDN adalah hal yang wajar, dan membanggakannya terlihat seperti desain yang kurang tepat.
  • Ringkasan komentar kedua:

    • Trafik 4TB per bulan sulit dianggap sebagai serangan DDoS.
    • 6 juta permintaan per bulan hanya setara 2 permintaan per detik, dan pada skala seperti ini menjalankan satu layanan monolitik bukanlah masalah.
    • Diasumsikan sebagian besar permintaan ditangani Cloudflare melalui cache di tingkat CDN.
  • Ringkasan komentar ketiga:

    • Situs tersebut hanyalah situs pemasaran statis sederhana, tidak memiliki forum diskusi, dan umpan balik ditangani melalui issue GitHub.
    • Aneh jika membanggakan bahwa unduhan file statis jutaan kali per hari bisa ditangani dengan deployment sederhana.
    • Cloudflare melakukan seluruh mitigasi, dan sebenarnya itu mungkin tidak diperlukan karena trafiknya sangat kecil.
  • Ringkasan komentar keempat:

    • Trafik tambahan yang dijelaskan tampak seperti "penyalahgunaan layanan yang tidak berarti", dan sulit dianggap sebagai serangan DDoS sungguhan.
    • Selama penyalahgunaan seperti ini tidak menimbulkan biaya atau masalah kehabisan sumber daya, hal itu bisa diabaikan.
    • Cerita bahwa sebagian besar infrastruktur autoscaling tidak melakukan pekerjaan yang berguna adalah hal yang umum, dan memantau trafik adalah ide yang baik.
    • Ada keluhan tentang logging; jika penyimpanan log murah dan melimpah maka itu bukan masalah, tetapi sebaiknya trafik penyalahgunaan diklasifikasikan secara otomatis dan penanganan rutinnya ditekan.
  • Ringkasan komentar kelima:

    • 50 juta permintaan per bulan yang berasal dari Inggris adalah tingkat yang bisa disebabkan oleh satu skrip yang berjalan.
    • Penulis berharap server Go dapat menangani permintaan 250 kali lebih banyak per detik bahkan tanpa optimisasi.
    • Nasihatnya sendiri tidak buruk, tetapi angka-angka mereka tidak menjadi bukti untuk nasihat tersebut.
  • Ringkasan komentar keenam:

    • Mendistribusikan binary mungkin lebih disukai daripada menggunakan Docker, tetapi ada masalah keamanan terkait host yang menjalankan binary tersebut.
    • Satu layanan monolitik yang di-host di satu VPS memang murah dan bagus, tetapi jika terjadi masalah pada perangkat keras, downtime yang cukup besar bisa terjadi.
    • Dengan menggabungkan semuanya ke dalam satu layanan, Anda bisa kehilangan defence in depth, yang dapat memungkinkan akses ke penyimpanan data jika terjadi masalah keamanan.
  • Ringkasan komentar ketujuh:

    • "1 miliar permintaan per bulan" adalah tingkat yang bisa ditangani satu server, dan satu skrip yang salah pun dapat menghasilkan trafik sebesar itu.
  • Ringkasan komentar kedelapan:

    • Mempertanyakan apakah miliaran permintaan per bulan benar-benar dianggap sebagai serangan DDoS besar.
  • Ringkasan komentar kesembilan:

    • Membangun satu layanan monolitik untuk setiap aplikasi memudahkan deployment dan pemeliharaan.
    • Tidak perlu Docker, Kubernetes, dependensi, atau runtime environment; cukup deploy file binary saja.
  • Ringkasan komentar kesepuluh:

    • Setelah membaca judulnya, ia mengharapkan sesuatu yang lebih besar, tetapi fakta bahwa situs berada di belakang Cloudflare adalah faktor penting.
    • Bergantung pada distribusi trafik, situs itu mungkin tetap berjalan baik di VPS bahkan tanpa Cloudflare.
    • Serangan DDoS layer7 dari Rusia berukuran cukup besar hingga penyedia besar pun gagal menanganinya karena masalah kapasitas.