Apa itu Azure Web Application Firewall?
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.
Gambaran Umum Azure Web Application Firewall
Anda mungkin berpikir pengguna berbahaya tidak akan repot dengan aplikasi web Anda. Namun, pengujian telah menunjukkan bahwa bot atau aktor jahat menyelidiki aplikasi web baru untuk kelemahan dalam beberapa menit penyebaran. Jika Anda meletakkan aplikasi di web, asumsikan bahwa pelaku ancaman akan segera menguji aplikasi untuk kerentanan. Anda juga dapat mengasumsikan pemeriksaan tersebut akan berlanjut selama masa pakai aplikasi.
Sebagian besar pengujian berbahaya aplikasi web memeriksa keberadaan satu atau beberapa kerentanan umum. Jika ditemukan, aktor ancaman dapat menggunakan kerentanan ini untuk menjalankan serangan seperti eksploitasi berikut:
- Injeksi SQL
- Pembuatan 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 lubang 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.
Anda dapat menyebarkan Azure Web Application Firewall dalam hitung menit. Aplikasi web Anda segera mendapatkan perlindungan yang kuat dari ancaman yang diketahui, semua tanpa menulis satu baris kode keamanan.
Fitur utama Azure Web Application Firewall
Untuk membantu Anda mengevaluasi Azure Web Application Firewall, berikut adalah beberapa fitur pentingnya:
Aturan terkelola: Tim keamanan Microsoft membuat, memelihara, dan memperbarui aturan yang digunakan Azure Web Application Firewall untuk mendeteksi dan mencegah eksploitasi umum. Jika aturan berubah, atau seperangkat aturan (lihat deskripsi berikut) dimodifikasi, Microsoft memperbarui Azure Web Application Firewall secara otomatis dan lancar.
Nota
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 khusus untuk menggantikan perilaku bawaan.
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 (Web Application Firewall) mendeteksi ancaman.
Serangan umum yang dicegah oleh Azure Web Application Firewall
Tabel berikut ini menjelaskan jenis ancaman berbahaya yang paling umum yang membantu dilindungi Azure Web Application Firewall.
| Ancaman | Deskripsi |
|---|---|
| Pembuatan skrip lintas situs | Pelaku ancaman 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, paling sering dalam skrip PHP. Dengan meneruskan teks yang dikonfigurasi secara 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 khusus untuk mengelabui 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 mengelabui server untuk menjalankan perintah yang terkait dengan sistem operasi server. Pada sistem UNIX, misalnya, penyerang mungkin memiliki server yang berjalan ls untuk mendapatkan daftar direktori. |
| Penyertaan file jarak jauh | Sama seperti penyertaan file lokal, kecuali penyerang mengirim ke server teks yang dikonfigurasi khusus untuk 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 | Di bidang formulir web, penyerang menyisipkan teks (atau "menyuntikkan") yang dikonfigurasi khusus untuk mengelabui server agar menjalankan perintah SQL. Perintah ini memungkinkan penyerang 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 kerentanan ini saja akan sulit dan memakan waktu. Hanya sebagian kecil dari kemungkinan eksploitasi yang dapat dihadapi aplikasi web yang diwakili dalam tabel sebelumnya. Azure Web Application Firewall dirancang untuk mencegah serangan ini dan banyak lagi.
Memvalidasi input
Ancaman yang dihadapi oleh aplikasi web modern bervariasi dan canggih. Namun, dalam kebanyakan kasus alasan eksploitasi dimungkinkan adalah bahwa aplikasi web secara implisit mempercayai input yang diterimanya.
Misalnya, pertimbangkan formulir web yang memungkinkan pengguna aplikasi web resmi masuk ke akun pengguna. Bentuknya 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 tersebut diberi nama userName dan userPassword, masing-masing. Skrip kemudian akan menjalankan pernyataan berikut:
sql = "SELECT * FROM users WHERE username='" + userName + "' AND password='" + userPassword + "'"
Misalnya, jika nama pengguna support dan kata sandi 1234ABCD, maka variabel sql memiliki nilai berikut:
SELECT * FROM users WHERE username='support' AND password='1234ABCD'
Aplikasi web menjalankan pernyataan SQL ini. Jika catatan dikembalikan dari kueri, aplikasi web akan membuat pengguna masuk.
Sekarang misalkan penyerang masuk 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 akun penyerang sebagai pengguna admin; merupakan pelanggaran serius!
Contoh yang disebutkan sebelumnya adalah contoh eksploit 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.
Membersihkan input berarti hal-hal yang berbeda tergantung pada konteksnya. Misalnya, membersihkan input dapat berarti menghapus elemen teks yang jelas berbahaya, seperti indikator komentar SQL. Namun sanitasi terjadi, hasilnya adalah input yang tidak dapat membahayakan aplikasi web atau data backend-nya.