Nginx adalah server HTTP open source yang
populer dan reverse proxy yang dikenal untuk stabilitas, konfigurasi yang
sederhana, dan kebutuhan sumber daya yang hemat. Anda dapat meningkatkan keamanan server Nginx Anda dengan
menggunakan modul seperti NAXSI. NAXSI ( Nginx
Anti XSS & SQL Injection ) adalah modul
Nginx pihak ketiga gratis yang menyediakan fitur firewall aplikasi web. NAXSI menganalisis, menyaring, dan mengamankan lalu lintas
yang datang ke aplikasi web Anda, dan bertindak seperti firewall
DROP-by-default, yang berarti memblokir semua lalu lintas yang datang kecuali
diinstruksikan untuk mengizinkan akses secara khusus.
Kesederhanaan yang dapat digunakan pengguna
untuk memanipulasi akses adalah fitur utama yang membedakan NAXSI dari firewall
aplikasi web lain (WAF) dengan fungsi serupa seperti ModSecurity . Meskipun ModSecurity hadir dengan set fitur
yang kaya, namun lebih sulit dikelola daripada NAXSI. Hal ini menjadikan NAXSI pilihan sederhana dan mudah
beradaptasi yang menyediakan aturan siap pakai yang bekerja dengan baik dengan
aplikasi web populer seperti WordPress.
Dalam tutorial ini, Anda akan menggunakan NAXSI
untuk mengamankan Nginx di server Ubuntu 16.04 Anda. Karena modul NAXSI tidak disertakan dengan paket Nginx secara
default, Anda perlu mengkompilasi Nginx dari sumber dengan NAXSI. Pada akhir tutorial ini, Anda akan tahu apa jenis serangan
NAXSI dapat memblokir dan cara mengkonfigurasi aturan NAXSI.
Langkah 1 - Memasang Nginx dan NAXSI
Sebagian besar modul Nginx tidak tersedia
melalui repositori, dan NAXSI tidak terkecuali. Karena itu, Anda harus mengunduh dan mengkompilasi Nginx dari
sumber dengan NAXSI secara manual.
Pertama, unduh Nginx menggunakan perintah
berikut.
Catatan: Tutorial ini menggunakan versi 1.14 dari Nginx
Selanjutnya, unduh NAXSI dari rilis stabil 0.56
di Github.
Catatan: Tutorial ini menggunakan versi 0.56 NAXSI
Seperti yang Anda ketahui, repositori Nginx
adalah arsip
Dalam perintah sebelumnya,
Sekarang setelah Anda mengekstrak file Nginx, Anda dapat melanjutkan untuk mengekstrak file NAXSI menggunakan perintah berikut:
Anda sekarang memiliki folder
Untuk mengkompilasi Nginx dari sumber, Anda akan memerlukan C compiler
Pertama, jalankan perintah berikut untuk memastikan Anda memiliki daftar paket yang diperbarui.
Kemudian instal dependensi:
Sekarang Anda memiliki semua dependensi Anda, Anda dapat mengkompilasi Nginx dari sumber. Untuk menyiapkan Nginx untuk dikompilasi dari sumber di sistem Anda, jalankan skrip berikut, yang akan membuat
Setiap baris dari perintah sebelumnya mendefinisikan parameter untuk server web Nginx. Yang paling penting dari ini adalah
Setelah menggunakan perintah
Ketika Nginx dibangun dan siap dijalankan, gunakan perintah
Setelah ini berhasil, Anda akan memiliki versi Nginx yang dikompilasi dengan modul NAXSI. Agar NAXSI dapat mulai memblokir lalu lintas yang tidak diinginkan, Anda sekarang perlu menetapkan seperangkat aturan yang akan dijalankan oleh NAXSI dengan membuat serangkaian file konfigurasi.
Langkah 2 - Mengkonfigurasi NAXSI
Bagian terpenting dari fungsi firewall adalah aturannya, yang menentukan bagaimana permintaan diblokir dari server. Kumpulan aturan dasar yang muncul secara default dengan NAXSI disebut aturan inti . Aturan-aturan ini dimaksudkan untuk mencari pola di bagian permintaan dan menyaring yang mungkin merupakan serangan. Aturan inti NAXSI diterapkan secara global ke server untuk pencocokan tanda tangan.
Untuk mengkonfigurasi Nginx untuk menggunakan aturan inti ini, salin berkas
Sekarang setelah aturan inti ditetapkan, tambahkan aturan Naxsi dasar, yang memungkinkan dan menerapkan aturan inti pada basis per lokasi dan menetapkan tindakan untuk server untuk mengambil ketika permintaan URL tidak memenuhi aturan inti. Buat file bernama
Tambahkan blok kode berikut yang mendefinisikan beberapa aturan firewall dasar.
Kode sebelumnya mendefinisikan
Karena Anda mengalihkan permintaan yang diblokir ke
Selanjutnya, tambahkan kode HTML berikut ke file untuk membuat halaman web yang memungkinkan pengguna mengetahui bahwa permintaan mereka diblokir:
Simpan file dan keluar dari editor.
Selanjutnya, buka file konfigurasi Nginx
Untuk menambahkan file konfigurasi NAXSI ke konfigurasi Nginx sehingga server web tahu cara menggunakan NAXSI, masukkan baris kode yang disorot ke dalam bagian
Kemudian di bagian
Sekarang Anda telah mengonfigurasi Nginx dengan aturan inti dan dasar untuk NAXSI, firewall akan memblokir permintaan berbahaya yang cocok saat Anda memulai server web. Selanjutnya, Anda dapat menulis skrip startup untuk memastikan bahwa Nginx dijalankan ketika Anda me-reboot server.
Langkah 3 - Membuat Skrip Startup untuk Nginx
Karena Anda menginstal Nginx secara manual, langkah selanjutnya adalah membuat skrip startup untuk membuat server web autostart pada pemuatan ulang sistem.
Tutorial ini menggunakan perangkat lunak Systemd untuk membuat skrip. Untuk melakukan ini, Anda akan membuat File Unit (lihat Memahami Unit Sistem dan File Unit untuk studi lebih lanjut) untuk mengonfigurasi bagaimana Systemd harus memulai dan mengelola layanan Nginx.
Buat file bernama
Tambahkan baris berikut ke file:
Bagian
Selanjutnya, Nginx membutuhkan folder untuk menyimpan sementara data permintaan masuk sebelum memprosesnya jika server Anda tidak memiliki cukup memori. Karena Anda menginstal Nginx dari sumber, Anda perlu membuat direktori yang dapat digunakan oleh Nginx untuk menyimpan data ini. Buat direktori yang disebut
Dengan skrip startup yang disiapkan, Anda sekarang dapat memulai server Nginx.
Gunakan perintah berikut untuk memulai server.
Untuk memeriksa apakah server Anda aktif, jalankan perintah berikut:
Anda akan melihat output berikut di terminal Anda yang menyatakan bahwa server telah mulai berhasil:
Anda sekarang memiliki server Nginx yang dijalankan dengan aman oleh NAXSI. Langkah selanjutnya adalah menjalankan simulasi XSS dan serangan injeksi SQL untuk memastikan NAXSI melindungi server Anda secara efektif.
Langkah 4 - Menguji NAXSI
Untuk menguji bahwa Nginx aktif dan berjalan dengan modul NAXSI diaktifkan, Anda akan mencoba menekan server dengan permintaan HTTP berbahaya dan menganalisis tanggapannya.
Pertama, salin Public IP dari server Anda dan gunakan perintah curl untuk membuat server Nginx permintaan jahat.
URL ini menyertakan skrip XSS "><script>alert(0)</script> dalam parameter q dan harus ditolak oleh server. Menurut aturan NAXSI yang Anda atur sebelumnya, Anda akan diarahkan ke error.html file error.html dan terima tanggapan berikut:
Firewall NAXSI telah memblokir permintaan tersebut.
Sekarang, verifikasi yang sama menggunakan log Nginx dengan mengekor log server Nginx menggunakan perintah berikut:
Di log, Anda akan melihat bahwa permintaan XSS dari alamat IP jauh diblokir oleh NAXSI:
Tekan CTRL-C untuk keluar dari tail dan hentikan output dari file log kesalahan.
Selanjutnya, coba permintaan URL lain, kali ini dengan kueri SQL Injection yang berbahaya.
Bagian or "1"="1" dari URL sebelumnya dapat mengekspos data pengguna dalam database, dan akan diblokir oleh NAXSI. Seharusnya menghasilkan respons yang sama di terminal:
Sekarang gunakan tail untuk mengikuti log server lagi:
Dalam file log Anda akan melihat entri yang diblokir untuk percobaan SQL Injection:
Tekan CTRL-C untuk keluar dari log.
NAXSI kini telah berhasil memblokir serangan XSS dan injeksi SQL, yang membuktikan bahwa NAXSI telah dikonfigurasi dengan benar dan bahwa server web Nginx Anda aman.
Kesimpulan
Anda sekarang memiliki pemahaman dasar tentang cara menggunakan NAXSI untuk melindungi server web Anda dari serangan jahat. Untuk mempelajari lebih lanjut tentang pengaturan Nginx, lihat Cara Menyiapkan Blok Server Nginx (Virtual Host) pada Ubuntu 16.04 . Jika Anda ingin terus mempelajari keamanan di server web, lihat Cara Mengamankan Nginx dengan Let's Encrypt pada Ubuntu 16.04 dan Cara Membuat Sertifikat SSL yang Ditandatangani Sendiri untuk Nginx di Ubuntu 16.04 .
Sumber : https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-naxsi-on-ubuntu-16-04
tar
. Anda harus terlebih dahulu mengekstraknya agar dapat
mengkompilasi dan menginstalnya, yang dapat Anda lakukan dengan menggunakan
perintah tar
.Dalam perintah sebelumnya,
-x
menentukan utilitas ekstrak, -v
membuat utilitas berjalan dalam mode verbose, dan -f
menunjukkan nama file arsip untuk mengekstrak.Sekarang setelah Anda mengekstrak file Nginx, Anda dapat melanjutkan untuk mengekstrak file NAXSI menggunakan perintah berikut:
Anda sekarang memiliki folder
naxsi-
0.56 dan nginx-
1.14.0 di direktori home Anda. Menggunakan file yang
baru saja Anda unduh dan ekstrak, Anda dapat mengkompilasi server Nginx dengan
NAXSI. Pindah ke direktori nginx-
1.14.0 AndaUntuk mengkompilasi Nginx dari sumber, Anda akan memerlukan C compiler
gcc
, pustaka libpcre3-dev
Ekspresi Reguler libpcre3-dev
, dan libssl-dev
, yang
mengimplementasikan protokol kriptografi SSL dan TLD. Ketergantungan ini dapat ditambahkan dengan perintah apt-get
.Pertama, jalankan perintah berikut untuk memastikan Anda memiliki daftar paket yang diperbarui.
Kemudian instal dependensi:
Sekarang Anda memiliki semua dependensi Anda, Anda dapat mengkompilasi Nginx dari sumber. Untuk menyiapkan Nginx untuk dikompilasi dari sumber di sistem Anda, jalankan skrip berikut, yang akan membuat
Makefile
yang menunjukkan di
mana menemukan semua dependensi yang diperlukan.Setiap baris dari perintah sebelumnya mendefinisikan parameter untuk server web Nginx. Yang paling penting dari ini adalah
--add-module=../naxsi-
0.56 /naxsi_src/
parameter, yang
menghubungkan modul NAXSI dengan Nginx, dan --user=www-data
dan --group=www-data
paramaters
, yang membuat Nginx berjalan dengan hak pengguna dan grup dari pengguna / grup
khusus yang disebut www-data
yang datang dengan server Ubuntu 16.04 Anda. Parameter --with-http_ssl_module
memungkinkan server Nginx untuk menggunakan kriptografi SSL,
dan --without-mail_pop3_module
--without-mail_smtp_module
, --without-mail_smtp_module
, dan --without-mail_imap_module
menonaktifkan protokol surat yang tidak diperlukan yang akan
dimasukkan secara otomatis. Untuk penjelasan
lebih lanjut tentang parameter ini, lihat dokumen resmi
Nginx.Setelah menggunakan perintah
./configure
, jalankan perintah make
untuk membuat
serangkaian tugas yang didefinisikan dalam Makefile
yang baru Anda buat untuk membangun program dari kode sumber.Ketika Nginx dibangun dan siap dijalankan, gunakan perintah
make install
sebagai superuser untuk menyalin program yang dibangun dan pustakanya
ke lokasi yang benar di server Anda.Setelah ini berhasil, Anda akan memiliki versi Nginx yang dikompilasi dengan modul NAXSI. Agar NAXSI dapat mulai memblokir lalu lintas yang tidak diinginkan, Anda sekarang perlu menetapkan seperangkat aturan yang akan dijalankan oleh NAXSI dengan membuat serangkaian file konfigurasi.
Langkah 2 - Mengkonfigurasi NAXSI
Bagian terpenting dari fungsi firewall adalah aturannya, yang menentukan bagaimana permintaan diblokir dari server. Kumpulan aturan dasar yang muncul secara default dengan NAXSI disebut aturan inti . Aturan-aturan ini dimaksudkan untuk mencari pola di bagian permintaan dan menyaring yang mungkin merupakan serangan. Aturan inti NAXSI diterapkan secara global ke server untuk pencocokan tanda tangan.
Untuk mengkonfigurasi Nginx untuk menggunakan aturan inti ini, salin berkas
naxsi_core.rules
ke direktori konfigurasi Nginx.Sekarang setelah aturan inti ditetapkan, tambahkan aturan Naxsi dasar, yang memungkinkan dan menerapkan aturan inti pada basis per lokasi dan menetapkan tindakan untuk server untuk mengambil ketika permintaan URL tidak memenuhi aturan inti. Buat file bernama
naxsi.rules
di dalam naxsi.rules
/etc/nginx/
. Untuk melakukannya, gunakan perintah berikut untuk membuka
file di editor teks yang disebut nano, atau gunakan editor teks pilihan Anda.Tambahkan blok kode berikut yang mendefinisikan beberapa aturan firewall dasar.
Kode sebelumnya mendefinisikan
DeniedUrl
, yang merupakan URL
NAXSI akan dialihkan
ke saat permintaan diblokir. File ini juga
memungkinkan daftar periksa berbagai jenis serangan yang NAXSI harus blokir,
termasuk injeksi SQL, skrip lintas situs (XSS), dan penyingkiran file jarak
jauh (RFI). Setelah Anda menambahkan kode
sebelumnya ke file, simpan dan keluar dari editor teks.Karena Anda mengalihkan permintaan yang diblokir ke
/error.html
, Anda sekarang dapat membuat file error.html
di dalam /usr/html
untuk menyediakan
tujuan ini dengan halaman arahan. Buka file di editor
teks Anda:Selanjutnya, tambahkan kode HTML berikut ke file untuk membuat halaman web yang memungkinkan pengguna mengetahui bahwa permintaan mereka diblokir:
Simpan file dan keluar dari editor.
Selanjutnya, buka file konfigurasi Nginx
/etc/nginx/nginx.conf
di editor teks Anda.Untuk menambahkan file konfigurasi NAXSI ke konfigurasi Nginx sehingga server web tahu cara menggunakan NAXSI, masukkan baris kode yang disorot ke dalam bagian
http
dari file nginx.conf
:Kemudian di bagian
server
dari file yang sama, tambahkan baris yang disorot berikut:Sekarang Anda telah mengonfigurasi Nginx dengan aturan inti dan dasar untuk NAXSI, firewall akan memblokir permintaan berbahaya yang cocok saat Anda memulai server web. Selanjutnya, Anda dapat menulis skrip startup untuk memastikan bahwa Nginx dijalankan ketika Anda me-reboot server.
Langkah 3 - Membuat Skrip Startup untuk Nginx
Karena Anda menginstal Nginx secara manual, langkah selanjutnya adalah membuat skrip startup untuk membuat server web autostart pada pemuatan ulang sistem.
Tutorial ini menggunakan perangkat lunak Systemd untuk membuat skrip. Untuk melakukan ini, Anda akan membuat File Unit (lihat Memahami Unit Sistem dan File Unit untuk studi lebih lanjut) untuk mengonfigurasi bagaimana Systemd harus memulai dan mengelola layanan Nginx.
Buat file bernama
nginx.service
dan buka di editor teks Anda:Tambahkan baris berikut ke file:
Bagian
[Unit]
mendefinisikan program yang Anda konfigurasikan, [Service]
menjelaskan bagaimana seharusnya Nginx berperilaku saat memulai, dan [Install]
memberikan informasi tentang instalasi unit. Setelah Anda menambahkan baris-baris ini ke file nginx.service
, systemd
akan tahu cara
memulai Nginx.Selanjutnya, Nginx membutuhkan folder untuk menyimpan sementara data permintaan masuk sebelum memprosesnya jika server Anda tidak memiliki cukup memori. Karena Anda menginstal Nginx dari sumber, Anda perlu membuat direktori yang dapat digunakan oleh Nginx untuk menyimpan data ini. Buat direktori yang disebut
body
di dalam /var/lib/nginx
:Dengan skrip startup yang disiapkan, Anda sekarang dapat memulai server Nginx.
Gunakan perintah berikut untuk memulai server.
Untuk memeriksa apakah server Anda aktif, jalankan perintah berikut:
Anda akan melihat output berikut di terminal Anda yang menyatakan bahwa server telah mulai berhasil:
Anda sekarang memiliki server Nginx yang dijalankan dengan aman oleh NAXSI. Langkah selanjutnya adalah menjalankan simulasi XSS dan serangan injeksi SQL untuk memastikan NAXSI melindungi server Anda secara efektif.
Langkah 4 - Menguji NAXSI
Untuk menguji bahwa Nginx aktif dan berjalan dengan modul NAXSI diaktifkan, Anda akan mencoba menekan server dengan permintaan HTTP berbahaya dan menganalisis tanggapannya.
Pertama, salin Public IP dari server Anda dan gunakan perintah curl untuk membuat server Nginx permintaan jahat.
URL ini menyertakan skrip XSS "><script>alert(0)</script> dalam parameter q dan harus ditolak oleh server. Menurut aturan NAXSI yang Anda atur sebelumnya, Anda akan diarahkan ke error.html file error.html dan terima tanggapan berikut:
Firewall NAXSI telah memblokir permintaan tersebut.
Sekarang, verifikasi yang sama menggunakan log Nginx dengan mengekor log server Nginx menggunakan perintah berikut:
Di log, Anda akan melihat bahwa permintaan XSS dari alamat IP jauh diblokir oleh NAXSI:
Tekan CTRL-C untuk keluar dari tail dan hentikan output dari file log kesalahan.
Selanjutnya, coba permintaan URL lain, kali ini dengan kueri SQL Injection yang berbahaya.
Bagian or "1"="1" dari URL sebelumnya dapat mengekspos data pengguna dalam database, dan akan diblokir oleh NAXSI. Seharusnya menghasilkan respons yang sama di terminal:
Sekarang gunakan tail untuk mengikuti log server lagi:
Dalam file log Anda akan melihat entri yang diblokir untuk percobaan SQL Injection:
Tekan CTRL-C untuk keluar dari log.
NAXSI kini telah berhasil memblokir serangan XSS dan injeksi SQL, yang membuktikan bahwa NAXSI telah dikonfigurasi dengan benar dan bahwa server web Nginx Anda aman.
Kesimpulan
Anda sekarang memiliki pemahaman dasar tentang cara menggunakan NAXSI untuk melindungi server web Anda dari serangan jahat. Untuk mempelajari lebih lanjut tentang pengaturan Nginx, lihat Cara Menyiapkan Blok Server Nginx (Virtual Host) pada Ubuntu 16.04 . Jika Anda ingin terus mempelajari keamanan di server web, lihat Cara Mengamankan Nginx dengan Let's Encrypt pada Ubuntu 16.04 dan Cara Membuat Sertifikat SSL yang Ditandatangani Sendiri untuk Nginx di Ubuntu 16.04 .
Sumber : https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-naxsi-on-ubuntu-16-04
kalo nginx itu fungsinya sama kaya apache bukan sih
BalasHapuskurang lebih sama
Hapuskalo nambah reverse proxy gmn ya ? jadi dibelakang nginx ada backend server yg ip nya beda
BalasHapus