Keamanan Dasar untuk Aplikasi dengan NGINX Balancer
Seiring dengan bertambahnya jumlah informasi yang dibagikan melalui internet dari tahun ke tahun, serta adopsi Web sebagai sarana untuk menjalankan bisnis, perlindungan terhadap situs web dan aplikasi web menjadi salah satu masalah keamanan internet utama. Tanggapan yang jelas terhadap hal ini adalah penerapan banyak alat pencegahan. Namun sebelum tergesa-gesa mengintegrasikan beberapa solusi perlindungan yang kompleks dan/atau mahal, pertimbangkan beberapa metode keamanan umum, karena terkadang keamanan yang paling dasar bisa menjadi yang paling efektif.
Jadi, dalam panduan ini kami akan menunjukkan kepada Anda cara mengatur beberapa mekanisme perlindungan sederhana, yang tersedia untuk aplikasi apa pun yang menggunakan NGINX balancer sebagai frontend, dan penerapannya tidak memerlukan biaya tambahan.
Pada dasarnya, server NGINX load balancer dimaksudkan untuk melakukan distribusi permintaan yang cerdas antara beberapa node server aplikasi dan dengan demikian memastikan ketersediaan dan keandalan sistem yang tinggi. Dengan ini, NGINX dapat digunakan untuk memproses kedua jenis lalu lintas HTTP dan TCP (detail dapat ditemukan dalam dokumen HTTP Load Balancing dan TCP Load Balancing).
Node load balancing secara otomatis ditambahkan ke dalam environment jika Anda memilih lebih dari satu node server aplikasi, dan selain itu, dapat ditambahkan secara manual bahkan untuk satu server. Untuk melakukannya, cukup pilih blok Balancing wizard di atas server aplikasi yang dipilih di jendela Environment Topology.
Sekarang ketika environment sudah siap, Anda dapat melanjutkan ke konfigurasi metode perlindungan yang diinginkan menggunakan petunjuk di bawah ini:
- Authentication membuat akses aplikasi dilindungi dengan kata sandi
- Mekanisme IP Address Deny digunakan untuk melarang akses aplikasi dari IP tertentu
Kami juga akan memperhatikan cara untuk menggabungkan metode yang disebutkan untuk digunakan secara bersamaan. Jadi, mari kita cari tahu cara menerapkannya ke environment Anda. Ayo mulai!
Authentication
Authentication adalah metode yang sederhana namun kuat untuk membatasi akses aplikasi dan memastikan bahwa entitas yang tidak berwenang tidak akan dapat menyebabkan kerusakan apapun pada aplikasi. Dalam contoh ini, kami akan menunjukkan kepada Anda cara mengatur perlindungan username/password.
1. Tentunya informasi kata sandi tidak dapat disimpan dalam bentuk terbuka, jadi perlu dilindungi sendiri. Untuk itu Anda perlu menghasilkan hash, berdasarkan username dan password yang diinginkan dengan menggunakan alat htpasswd atau salah satu layanan online serupa (misalnya, http://www.htpasswdgenerator.net/).
2. Simpan urutan karakter yang Anda terima dan kembali ke dashboard platform dengan environment Anda terdaftar. Di sana klik tombol Config untuk node NGINX balancer.
3. Anda akan melihat tab Configuration Manager terbuka, di mana Anda perlu membuat New file (menggunakan tombol dengan nama yang sama di panel alat) di dalam folder conf.d. Tetapkan nama yang diinginkan untuknya tetapi wajib dengan ekstensi .htpasswd (misalnya, password.htpasswd).
4. Setelah selesai, tempelkan hash yang Anda terima pada langkah instruksi pertama ke konten file. Ingat bahwa Anda dapat menambahkan sebanyak mungkin akun yang Anda butuhkan (jangan lupa untuk menempatkan setiap yang berikutnya dari baris baru).
Simpan perubahan ketika semua pengaturan sudah selesai.
5. Kemudian pilih file nginx-jelastic.conf di dalam folder conf dan temukan blok location di bagian kode server pertama. Tempelkan baris berikut di sana untuk mengaktifkan authentication dan menerapkan aturan akses yang sesuai:
auth_basic "closed site";
auth_basic_user_file /etc/nginx/conf.d/{htpasswd_file};
di mana {htpasswd_file} - nama file yang Anda masukkan hash dengan kata sandi ke (dalam kasus kami file ini adalah password.htpasswd).
Kami biasanya merekomendasikan untuk memodifikasi konfigurasi di file nginx.conf dan menjaga konten nginx-jelastic.conf sebagai pengaturan default/cadangan. Namun dalam kasus ini, karena perubahan yang diperlukan cukup sederhana dan kami sangat yakin bahwa kami tahu apa yang kami lakukan, akan lebih mudah untuk bekerja langsung dengan file nginx-jelastic.
6. Simpan perubahan yang Anda buat sekali lagi dan Restart node NGINX balancer.
7. Sekarang ketika mencoba untuk Open aplikasi Anda di Browser, Anda (dan klien lainnya) akan perlu melewati jendela authentication sebelum mengakses aplikasi.
Setelah kredensial yang sesuai (mis. yang Anda telah menghasilkan hash darinya) ditentukan, aplikasi Anda akan terbuka.
IP Address Deny
Jika Anda tiba-tiba melihat ada bahaya yang disebabkan pada aplikasi Anda oleh pengguna tertentu, Anda dapat menghentikannya dengan cara memblokir permintaan apa pun yang dikirimkan dari alamat IP pengguna itu dan dengan demikian menolak akses aplikasi Anda. Ini dapat dengan mudah dilakukan dengan mengikuti langkah-langkah berikut.
1. Buka dashboard platform dengan environment Anda dan klik tombol Config untuk node NGINX balancer.
2. Klik pada file nginx-jelastic.conf di folder conf dalam tab Configuration Manager yang terbuka. Kemudian cari blok lokasi di dalam bagian kode server pertama dan tempelkan baris berikut di sana:
deny {IP_ADDRESS};
di mana {IP_ADDRESS} - jelas alamat yang ingin Anda blokir kemampuan untuk membuka aplikasi Anda.
Anda juga dapat mengatur nilai parameter ini menjadi all, yang berarti bahwa tidak ada yang akan dapat mengakses aplikasi Anda. Dalam kasus ini, mungkin berguna untuk menentukan satu perintah allow lagi di sini, yang digunakan untuk mendefinisikan alamat IP (atau rentang alamat) yang ingin Anda berikan aksesnya. Jika konstruksi sederhana yang diusulkan di atas tidak berhasil untuk Anda (karena ini mungkin disebabkan oleh konfigurasi tertentu di sebuah Platform), Anda dapat mencoba yang berikut sebagai gantinya:
if($http_x_forwarded_for~*\{IP_ADDRESS\}\){return403;}
3. Simpan perubahannya dan Restart node NGINX Anda menggunakan tombol yang sesuai.
4. Sebagai hasilnya, pengguna dengan alamat IP yang ditolak akan menghadapi kesalahan 403 Forbidden saat mencoba mengakses aplikasi Anda.
Kombinasi Metode
Untuk menggabungkan pembatasan oleh alamat IP dan pelaksanaan metode authentication, Anda perlu menggunakan direktif satisfy. Secara default (yaitu, jika tidak dinyatakan secara jelas dalam konfigurasi) itu diatur ke all, yang berarti seorang pengguna harus memenuhi kedua jenis kondisi untuk diberikan akses. Jika Anda menentukan direktif ini di dalam file konfigurasi Anda dan menetapkan nilainya ke any, pengguna akan dapat membuka aplikasi jika setidaknya satu kondisi terpenuhi. Berikut adalah contoh konfigurasi semacam itu:
Dengan demikian, pengguna yang tidak terotentikasi akan diberikan akses jika alamat IP-nya tercantum di antara yang diizinkan. Atau, pengguna dengan alamat IP yang ditolak masih akan dapat mengakses situs web jika mereka memasukkan username dan password yang valid.
Jadi, sekarang Anda tahu beberapa cara dasar untuk melindungi aplikasi Anda dengan memberikan izin akses hanya kepada pengguna tepercaya, serta menolaknya kepada yang tidak tepercaya dan mungkin berbahaya. Ingatlah bahwa menghabiskan sedikit waktu untuk meningkatkan keamanan aplikasi Anda sekarang dapat menghemat banyak waktu dan uang di kemudian hari dan terlepas, tidak akan merugikan.