Apa itu Azure Web Application Firewall?

Selesai

Di sini, Anda akan mempelajari dasar-dasar Azure Web Application Firewall. Gambaran umum ini akan membantu Anda mengevaluasi apakah Azure Web Application Firewall adalah alat yang berguna untuk ditambahkan ke strategi keamanan jaringan Contoso secara keseluruhan.

Ringkasan Azure Web Application Firewall

Anda mungkin berpikir pengguna berbahaya tidak akan repot dengan aplikasi web Anda. Namun, pengujian telah menunjukkan bahwa bot atau orang jahat mengganggu aplikasi web baru untuk mencari kelemahan dalam beberapa menit web aplikasi tersebut diterapkan. Jika Anda menaruh aplikasi di web, asumsikan bahwa orang jahat akan segera menguji aplikasi untuk mencari kerentanannya. Anda juga dapat mengasumsikan gangguan tersebut akan berlanjut seumur hidup aplikasi.

Sebagian besar pengujian yang berbahaya dari aplikasi web mencari adanya satu atau lebih kerentanan yang umum ditemukan. Jika ditemukan, aktor ancaman dapat menggunakan kerentanan ini untuk menjalankan serangan seperti eksploitasi berikut:

  • Injeksi SQL
  • Skrip lintas situs
  • Penyertaan file lokal dan jarak jauh
  • Banjir HTTP/HTTPS
  • Serangan bot berbahaya

Tugas umum dalam siklus pengembangan aplikasi web melibatkan penulisan kode untuk menutup celah keamanan yang paling umum. Menulis kode keamanan membutuhkan waktu, keahlian, dan pengujian.

Azure Web Application Firewall adalah layanan Azure yang menyediakan perlindungan terpusat dari aplikasi web yang dihosting Azure. Azure Web Application Firewall melindungi aplikasi web dari ancaman umum seperti injeksi SQL dan scripting lintas situs.

Diagram of an Azure virtual network with Azure Web Application Firewall. Bots and threats are blocked from a web app; legitimate requests are allowed.

Anda dapat menggunakan Azure Web Application Firewall dalam hitungan menit. Aplikasi web Anda segera mendapatkan perlindungan yang kuat dari ancaman yang diketahui, semua tanpa menulis satu pun baris kode keamanan.

Fitur utama Azure Web Application Firewall

Untuk membantu Anda mengevaluasi Azure Web Application Firewall, berikut adalah beberapa fitur pentingnya:

  • Aturan terkelola: Aturan yang digunakan Azure Web Application Firewall untuk mendeteksi dan mencegah eksploitasi umum dibuat, dikelola, dan diperbarui oleh tim keamanan Microsoft. Jika aturan berubah, atau seperangkat aturan (lihat deskripsi berikut) dimodifikasi, Microsoft memperbarui Azure Web Application Firewall secara otomatis dan lancar.

    Catatan

    Anda tidak dapat mengubah atau menghapus aturan terkelola yang ditawarkan oleh Azure Web Application Firewall. Namun, jika aturan tertentu bermasalah untuk lingkungan Anda (misalnya, aturan tersebut memblokir lalu lintas yang sah ke aplikasi web Anda), Anda dapat membuat pengecualian atau menonaktifkan aturan, atau seperangkat aturan. Anda juga dapat membuat aturan kustom untuk menimpa perilaku default.

  • Aturan bot: Aturan bot mengidentifikasi bot yang baik dan melindungi dari bot yang buruk. Bot buruk terdeteksi berdasarkan Inteligensi Ancaman Microsoft.

  • Aturan kustom: Jika aturan terkelola yang ditawarkan oleh Azure Web Application Firewall tidak mencakup ancaman tertentu terhadap aplikasi web Anda, Anda dapat membuat aturan kustom.

  • Mode: Azure Web Application Firewall dapat beroperasi dalam salah satu dari dua mode: mode deteksi hanya mencatat permintaan yang melanggar aturan, sementara mode pencegahan baik log maupun memblokir permintaan yang melanggar aturan.

  • Daftar pengecualian: Anda dapat mengonfigurasi Azure Web Application Firewall untuk mengabaikan atribut tertentu saat memeriksa permintaan.

  • Kebijakan: Anda dapat menggabungkan sekumpulan aturan terkelola, aturan kustom, pengecualian, dan pengaturan Azure Web Application Firewall lainnya ke dalam satu elemen yang disebut kebijakan Azure Web Application Firewall. Anda kemudian dapat menerapkan kebijakan tersebut ke beberapa aplikasi web untuk manajemen dan pemeliharaan yang mudah.

  • Batas ukuran permintaan: Anda dapat mengonfigurasi Azure Web Application Firewall untuk menandai permintaan yang terlalu kecil atau terlalu besar.

  • Pemberitahuan: Azure Web Application Firewall terintegrasi dengan Azure Monitor. Integrasi ini memberi Anda pemberitahuan hampir real-time ketika WAF mendeteksi ancaman.

Serangan umum dicegah oleh Azure Web Application Firewall

Tabel berikut ini menjelaskan jenis ancaman berbahaya paling umum yang dibantu lindungi oleh Azure Web Application Firewall.

Ancaman Deskripsi
Skrip lintas situs Orang jahat menggunakan aplikasi web untuk mengirim kode berbahaya ke browser web pengguna lain. Browser menjalankan kode, yang memberikan akses skrip ke data sesi pengguna, cookie, dan informasi sensitif lainnya.
Penyertaan file lokal Penyerang mengeksploitasi kerentanan dalam penanganan pernyataan include server, sering kali dalam skrip PHP. Dengan meneruskan teks yang dikonfigurasi khusus ke pernyataan include skrip, penyerang dapat menyertakan file yang ada secara lokal di server. Penyerang kemudian mungkin dapat mengakses informasi sensitif dan menjalankan perintah server.
Injeksi PHP Penyerang menyisipkan teks yang dikonfigurasi secara khusus untuk menipu server agar menjalankan perintah PHP. Perintah ini memungkinkan penyerang menjalankan kode PHP lokal atau jarak jauh. Penyerang kemudian mungkin dapat mengakses data sensitif dan menjalankan perintah di server.
Serangan protokol Penyerang menyisipkan teks yang dikonfigurasi secara khusus ke header permintaan HTTP/HTTPS. Bergantung pada teks tertentu yang disuntikkan ke header, penyerang dapat menipu server untuk menampilkan data sensitif atau menjalankan kode.
Eksekusi perintah jarak jauh Penyerang menipu server untuk menjalankan perintah yang terkait dengan sistem operasi server. Misalnya, pada sistem UNIX, penyerang mungkin meminta server menjalankan ls untuk mendapatkan daftar direktori.
Penyertaan file jarak jauh Sama seperti penyertaan file lokal, kecuali penyerang mengirim teks yang dikonfigurasi secara khusus kepada server yang meneruskan file jarak jauh—yaitu, file di server jarak jauh yang dikendalikan oleh penyerang—ke pernyataan include skrip.
Fiksasi sesi Penyerang mengeksploitasi kerentanan aplikasi web yang memungkinkan penyerang untuk mendapatkan ID sesi yang valid. Penyerang menipu pengguna untuk mengautentikasi sesi baru dengan ID tersebut. Penyerang kemudian membajak sesi yang divalidasi pengguna ini.
Injeksi SQL Dalam bidang isian borang web, penyerang menyisipkan teks (atau "menyuntikkan") yang dikonfigurasi secara khusus untuk menipu server agar menjalankan perintah SQL. Perintah ini memungkinkan penyerang untuk mengakses data sensitif, menyisipkan, memperbarui, atau menghapus data, atau menjalankan operasi SQL.

Semua eksploitasi yang tercantum dalam tabel sebelumnya hanya dimungkinkan ketika server mempercayai input yang diterimanya. Menulis kode yang memeriksa dan membersihkan eksploitasi ini saja akan sulit dan memakan waktu. Hanya sebagian kecil dari kemungkinan eksploitasi yang dapat dihadapi aplikasi web ditunjukkan dalam tabel sebelumnya. Azure Web Application Firewall didesain untuk mencegah serangan ini dan banyak lagi.

Membersihkan input

Ancaman yang dihadapi oleh aplikasi web modern bervariasi dan canggih. Namun, dalam kebanyakan kasus, alasan eksploitasi dapat terjadi adalah bahwa aplikasi web secara implisit mempercayai input yang diterimanya.

Misalnya, pertimbangkan formulir web yang memungkinkan pengguna aplikasi web yang diotorisasi masuk ke akun pengguna. Formulir ini hanya terdiri dari tiga elemen:

  • Kotak teks Nama Pengguna
  • Kotak teks Kata Sandi
  • Tombol Masuk

Saat pengguna yang berwenang mengisi formulir dan memilih Masuk, skrip aplikasi web menyimpan nama pengguna dan kata sandi dalam variabel. Misalkan variabel-variabel itu masing-masing diberi nama userName dan userPassword. Skrip kemudian akan menjalankan pernyataan berikut:

sql = "SELECT * FROM users WHERE username='" + userName + "' AND password='" + userPassword + "'"

Misalnya, jika nama pengguna adalah support dan kata sandinya adalah 1234ABCD, maka sql variabel memiliki nilai berikut:

SELECT * FROM users WHERE username='support' AND password='1234ABCD'

Aplikasi web menjalankan pernyataan SQL ini. Jika rekaman dikembalikan dari kueri, aplikasi web akan mengizinkan pengguna untuk masuk.

Sekarang misalkan penyerang memasukkan admin'-- di bidang Nama Pengguna dan membiarkan bidang Kata Sandi kosong. Dalam hal ini, berikut adalah pernyataan SQL yang dihasilkan:

SELECT * FROM users WHERE username='admin'--' AND password=''

Pada banyak sistem SQL, tanda hubung ganda (--) menandai awal komentar. Semuanya setelah -- diabaikan, sehingga pernyataan sebelumnya setara dengan kode berikut:

SELECT * FROM users WHERE username='admin'

Dengan asumsi ada pengguna bernama admin, perintah ini masuk ke penyerang sebagai pengguna admin; pelanggaran serius!

Network diagram depicting two sign-in attempts, with Azure Web Application Firewall allowing the authorized sign-in and denying the unauthorized sign-in.

Contoh sebelumnya adalah instans eksploitasi yang disebut injeksi SQL. Penyerang dapat memanfaatkan injeksi SQL dan eksploitasi lainnya di aplikasi web yang mempercayai semua input.

Azure Web Application Firewall membuat hambatan ketidakpercayaan antara aplikasi web dan input penggunanya. Azure Web Application Firewall mengasumsikan bahwa semua input berpotensi berbahaya, sehingga membersihkan input tersebut.

Pembersihan input dapat berarti hal yang berbeda bergantung pada konteksnya. Misalnya, membersihkan input dapat berarti menghapus elemen teks yang jelas berbahaya, seperti indikator komentar SQL. Bagaimana pun pembersihan dilakukan, hasilnya adalah input yang tidak dapat membahayakan aplikasi web atau data ujung belakangnya.