Cara Mengamankan Nginx dengan NAXSI di Ubuntu 16.04 - MastahTeknik

Breaking

Rabu, 28 November 2018

Cara Mengamankan Nginx dengan NAXSI di Ubuntu 16.04

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 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 Anda
Untuk 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

3 komentar:

  1. kalo nginx itu fungsinya sama kaya apache bukan sih

    BalasHapus
  2. kalo nambah reverse proxy gmn ya ? jadi dibelakang nginx ada backend server yg ip nya beda

    BalasHapus

Post Top Ad

Responsive Ads Here