Pengetahuan

Menginzinkan dan Memblokir IP Address di Nginx

Tidak semua aplikasi web diizinkan untuk diakses oleh semua orang. Pasti ada kalanya sebuah aplikasi hanya diperboleh untuk digunakan oleh beberapa orang saja. Pada kasus kali ini kita akan mencoba melakukan pembatasan atau pemblokiran berdasarkan IP. Cara ini biasanya digunakan pada firewall seperti UFW, namun karena NGINX sendiri sudah ada fitur ini dan bisa lebih efektif (menurut saya) maka saya coba membuatkan konfigurasinya.

Jika ingin melakukan trik ini silahkan untuk membuka berkas di bawah ini dengan penyunting berkas kesukaan masing-masing, contoh kali ini saya pakai Midnight Commander dengan perintah sebagai berikut:

mcedit /etc/nginx/sites-available/default

Sebelum kita melakukan konfigurasi pada berkas tersebut kita harus mengetahui dahulu parameter yang digunakan oleh Nginx. Parameter pertama perizinin ada 2 jenis yaitu:

  • Allow: untuk mengizinkan
  • Deny: untuk memblokir

Sedangkan parameter ke-dua yaitu host yang akan diberikan perizinan, bisa diisi oleh 3 hal yaitu:

  • Alamat IP
  • Alamat Network
  • All

Peletakkan parameter tersebut dilakukan dalam server block yang akan diterapkan pembatasan izin akses. Sebagai contoh kita akan memblokir 1 IP yaitu 192.168.16.1 pada halaman utama web yaitu /, maka saya bisa menulis seperti di bawah ini:

location / {
    deny 192.168.16.1;
}

Contoh lainnya adalah jika kita ingin melakukan pemblokiran pada beberapa IP yang masih dalam 1 subnet, cara yang bisa digunakan adalah sebagai berikut:

location / {
    deny 192.168.16.1/25;
}

Terakhir adalah jika kita ingin membuka akses pada IP tertentu saja dan melakukan pemblokiran pada IP yang lainnya. Pada cara ini kita harus mengkombinasikan allow dan deny. Perlu diingat bahwa Nginx membaca konfigurasi dari atas ke bawah sehingga kita harus menaruh allow pada bagian atas agar dibaca terlebih dahulu.

Contoh saat ini kita memperbolehkan akses dari IP 192.168.0.1 dan 192.168.16.1/25 dan memblokir pengunjung yang berasal selain dari IP tersebut.

location / {
    allow 192.168.0.1;
    allow 192.168.16.1/25;
    deny all;
}

Kuncinya pada konfigurasi pembatasan atau pemblokiran akses seperti ini adalah mengetahui parameter dan logikanya. Jangan sampai teman-teman menaruh perintah deny all pada posisi paling atas kecuali memang ingin memblokir semua akses.

Topik
Close