Cara Mengonfigurasi Header Keamanan di Nginx

Mengonfigurasi header keamanan di NGINX sangat penting untuk meningkatkan keamanan aplikasi web Anda. Header keamanan melindungi dari berbagai serangan, seperti skrip lintas situs (XSS), clickjacking, dan serangan injeksi kode lainnya. Mereka menginstruksikan browser tentang cara menangani konten situs Anda, sehingga memberikan lapisan keamanan tambahan.

Panduan ini akan memandu Anda melalui langkah-langkah untuk mengonfigurasi header keamanan di NGINX, membantu Anda melindungi aplikasi web dan meningkatkan keamanan secara keseluruhan.

Menerapkan HTTP Strict Transport Security (HSTS) di NGINX

Memahami HST

HTTP Strict Transport Security (HSTS) adalah protokol keamanan situs web yang penting. Ini memberlakukan bahwa koneksi ke domain secara eksklusif melalui HTTPS. Hal ini mengurangi risiko seperti serangan man-in-the-middle dan memastikan integritas dan kerahasiaan data yang dikirimkan secara online. Saat pengguna mencoba mengakses situs melalui HTTP, HSTS secara otomatis meningkatkan koneksi ke HTTPS.

Mengonfigurasi HSTS di NGINX

Untuk mengatur HSTS di NGINX, Anda harus memperbarui blok server di file konfigurasi NGINX. File ini biasanya berada di /etc/nginx/nginx.conf atau dalam konfigurasi spesifik situs di /etc/nginx/sites-available/. Pembaruan ini melibatkan penambahan header yang menginstruksikan browser untuk selalu menggunakan HTTPS untuk domain yang ditentukan.

Di blok server untuk domain Anda, tambahkan baris berikut:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

Baris ini berisi dua komponen:

  • max-age=31536000: Perintahkan browser untuk mengingat penggunaan HTTPS untuk situs Anda selama 12 bulan ke depan.
  • includeSubDomains: Menerapkan kebijakan HSTS ke semua subdomain situs Anda untuk keamanan komprehensif.

Contoh Konfigurasi NGINX dengan HSTS

Konfigurasi NGINX Anda dengan header HSTS mungkin terlihat seperti ini:

upstream my_portal {
    server 127.0.0.1:8080;
}

server {
    listen 80;
    server_name example.com;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

    location / {
        proxy_pass http://my_portal;
    }
}

Setelah menambahkan header ini, muat ulang NGINX untuk menerapkan perubahan dengan sudo systemctl reload nginx atau sudo nginx -s reload.

Contoh Konfigurasi NGINX Tambahan

Untuk skenario yang berbeda, konfigurasi NGINX Anda dengan HSTS mungkin berbeda. Berikut adalah contoh tambahan:

Server Multi-Domain

server {
    listen 80;
    server_name example1.com example2.com;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

    location / {
        # Configuration details
    }
}

Konfigurasi ini menerapkan HSTS ke beberapa domain yang dihosting di server yang sama. Setiap domain yang terdaftar akan menerapkan koneksi HTTPS.

Server dengan Penghentian SSL

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/certificate;
    ssl_certificate_key /path/to/private/key;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

    location / {
        # Configuration details
    }
}

Pengaturan ini ditujukan untuk server yang menangani penghentian SSL. Ini mengonfigurasi HSTS pada port aman (443) dengan sertifikat SSL tertentu, memperkuat koneksi aman.

Mengonfigurasi Kebijakan Keamanan Konten (CSP) di NGINX

Menerapkan CSP di NGINX

Mengintegrasikan Kebijakan Keamanan Konten (CSP) ke dalam NGINX adalah langkah strategis untuk meningkatkan keamanan aplikasi web. Ini melibatkan penambahan header tertentu dalam blok server file konfigurasi NGINX Anda. Biasanya ditemukan di /etc/nginx/nginx.conf atau di direktori /etc/nginx/sites-available/, file ini memerlukan pengeditan yang cermat untuk menerapkan CSP secara efektif.

Untuk pengaturan CSP dasar, tambahkan baris berikut di blok server:

add_header Content-Security-Policy "default-src 'self';" always;

Arahan ini membatasi pemuatan konten ke domain situs web ('self'), sehingga secara signifikan mengurangi risiko eksekusi konten eksternal yang berbahaya.

Contoh Konfigurasi NGINX dengan CSP

Konfigurasi NGINX Anda dengan arahan dasar CSP mungkin terlihat seperti ini:

upstream my_portal {
    server 127.0.0.1:8080;
}

server {
    listen 80;
    server_name example.com;
    add_header Content-Security-Policy "default-src 'self';" always;

    location / {
        proxy_pass http://my_portal;
    }
}

Muat ulang NGINX dengan sudo systemctl reload nginx atau sudo nginx -s reload setelah menambahkan arahan ini.

Menyesuaikan CSP untuk Kebutuhan Spesifik

CSP dapat disesuaikan untuk memenuhi kebutuhan keamanan spesifik situs web Anda. Berikut adalah konfigurasi yang diperluas untuk berbagai skenario:

Mengizinkan Gambar dari Sumber Apa Pun

add_header Content-Security-Policy "default-src 'self'; img-src *;" always;

Konfigurasi ini mengizinkan pemuatan gambar dari sumber mana pun, mempertahankan kontrol ketat terhadap jenis konten lainnya.

Konfigurasi Skrip dan Gaya Tertentu

add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trustedscript.com; style-src 'self' 'unsafe-inline';";

Setelan ini memungkinkan skrip dari domain Anda dan sumber eksternal tepercaya dipadukan dengan gaya sebaris, sehingga menyeimbangkan fungsionalitas dan keamanan.

Menjelajahi Arahan dan Opsi CSP

Arahan di CSP

Arahan CSP adalah aturan yang menentukan kebijakan untuk tipe konten tertentu. Arahan umum meliputi:

  • default-src: Kebijakan default diterapkan pada sebagian besar tipe konten.
  • script-src: Mengatur sumber sumber daya JavaScript.
  • style-src: Menentukan sumber yang diizinkan untuk sumber daya CSS.
  • img-src: Mengontrol sumber sumber daya gambar.
  • connect-src: Menetapkan kebijakan untuk koneksi jaringan seperti XMLHttpRequest, WebSocket, dan EventSource.

Ekspresi Sumber di CSP

Ekspresi sumber menentukan sumber yang diizinkan untuk setiap arahan:

  • 'none': Memblokir semua sumber.
  • 'self': Mengizinkan sumber daya dari asal yang sama.
  • 'unsafe-inline': Mengizinkan sumber daya inline seperti gaya atau URL JavaScript.
  • 'unsafe-eval': Mengizinkan JavaScript eval() fungsi dan metode serupa.
  • https:: Mengaktifkan sumber daya dari URL HTTPS apa pun.

Mengonfigurasi Perlindungan X-XSS di NGINX

Pengantar Perlindungan X-XSS

X-XSS-Protection, atau header Cross-Site Scripting, sangat penting untuk melindungi aplikasi web dari serangan XSS (Cross-Site Scripting). Didukung oleh browser web utama seperti Chrome, Internet Explorer, dan Safari, header ini meningkatkan keamanan web dengan mencegah pemuatan halaman ketika serangan XSS terdeteksi.

Mengaktifkan Perlindungan X-XSS di NGINX

Mengintegrasikan header X-XSS-Protection ke dalam konfigurasi server NGINX Anda akan memperkuat perlindungan XSS asli browser. Untuk mengaktifkan fitur keamanan ini, akses file konfigurasi NGINX Anda, biasanya terletak di /etc/nginx/nginx.conf atau di direktori /etc/nginx/sites-available/.

Di blok server file konfigurasi NGINX Anda, masukkan arahan ini:

add_header X-XSS-Protection "1; mode=block";

Petunjuk ini terdiri dari dua bagian:

  • 1: Mengaktifkan Filter XSS browser.
  • mode=block: Mengarahkan browser untuk memblokir halaman jika serangan XSS terdeteksi, daripada mencoba membersihkannya.

Contoh Konfigurasi NGINX dengan X-XSS-Protection

Contoh konfigurasi NGINX termasuk X-XSS-Protection mungkin muncul sebagai berikut:

upstream my_portal {
    server 127.0.0.1:8080;
}

server {
    listen 80;
    server_name example.com;
    add_header X-XSS-Protection "1; mode=block";

    location / {
        proxy_pass http://my_portal;
    }
}

Setelah menambahkan header ini, muat ulang NGINX menggunakan sudo systemctl reload nginx atau sudo nginx -s reload.

Skenario Konfigurasi NGINX Tambahan

Untuk Server dengan SSL

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/certificate;
    ssl_certificate_key /path/to/private/key;
    add_header X-XSS-Protection "1; mode=block";

    # Further configuration
}

Pengaturan ini ditujukan untuk server dengan SSL, memastikan X-XSS-Protection aktif pada koneksi terenkripsi.

Menangani Banyak Domain

server {
    listen 80;
    server_name example1.com example2.com;
    add_header X-XSS-Protection "1; mode=block";

    # Further configuration
}

Konfigurasi ini menerapkan perlindungan X-XSS di beberapa domain yang dihosting di satu server.

Mengonfigurasi Opsi X-Frame di NGINX

Peran Opsi X-Frame

X-Frame-Options adalah header keamanan penting yang dirancang untuk melindungi situs web dari serangan clickjacking. Ini mencegah halaman web ditampilkan dalam bingkai atau iframe, yang sering digunakan dalam serangan ini. Didukung oleh semua browser web utama, X-Frame-Options memberikan perlindungan luas, meningkatkan keamanan keberadaan web Anda di berbagai platform.

Menerapkan Opsi X-Frame di NGINX

Memasukkan header X-Frame-Options dalam konfigurasi server NGINX Anda sangat penting dalam meningkatkan keamanan situs Anda. Tugas ini melibatkan pengeditan file konfigurasi NGINX, biasanya ditemukan di /etc/nginx/nginx.conf atau di direktori /etc/nginx/sites-available/.

Untuk mengaktifkan fitur keamanan ini, tambahkan arahan berikut ke blok server di file konfigurasi NGINX Anda:

add_header X-Frame-Options "DENY";

Arahan ini, yang disetel ke “DENY,” menginstruksikan browser untuk memblokir segala upaya untuk merender halaman dalam bingkai atau iframe, sehingga menawarkan pertahanan yang kuat terhadap clickjacking.

Contoh Konfigurasi NGINX dengan X-Frame-Options

Contoh setup NGINX dengan header X-Frame-Options adalah sebagai berikut:

upstream my_portal {
    server 127.0.0.1:8080;
}

server {
    listen 80;
    server_name example.com;
    add_header X-Frame-Options "DENY";

    location / {
        proxy_pass http://my_portal;
    }
}

Setelah Anda menambahkan header ini, penting untuk memuat ulang NGINX untuk mengaktifkan perubahan. Ini dapat dilakukan dengan menggunakan sudo systemctl reload nginx atau sudo nginx -s reload.

Memperluas Konfigurasi NGINX untuk X-Frame-Options

Untuk Server yang Mendukung SSL

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/certificate;
    ssl_certificate_key /path/to/private/key;
    add_header X-Frame-Options "DENY";

    # Additional configuration
}

Konfigurasi ini ditujukan untuk server dengan SSL, memastikan X-Frame-Options diterapkan pada koneksi aman.

Menangani Banyak Domain

server {
    listen 80;
    server_name example1.com example2.com;
    add_header X-Frame-Options "DENY";

    # Additional configuration
}

Penyiapan ini menerapkan header X-Frame-Options di beberapa domain pada server yang sama, sehingga memperkuat keamanan untuk setiap domain.

Menerapkan Opsi Tipe Konten X di NGINX

Peran Opsi Tipe Konten X

X-Content-Type-Options adalah header keamanan penting dalam keamanan web yang mencegah browser dari sniffing tipe MIME. Header ini memperkuat bahwa browser menghormati tipe konten yang dinyatakan dalam header HTTP, mengatasi kerentanan keamanan yang dapat muncul ketika browser salah menafsirkan tipe file, seperti memperlakukan file gambar sebagai HTML yang dapat dieksekusi, yang dapat menyebabkan serangan skrip lintas situs (XSS).

Menyiapkan Opsi Tipe Konten X di NGINX

Untuk meningkatkan keamanan server web Anda dengan header X-Content-Type-Options, Anda perlu memodifikasi file konfigurasi NGINX secara langsung. File ini biasanya ditemukan di /etc/nginx/nginx.conf atau dalam konfigurasi spesifik situs di /etc/nginx/sites-available/.

Gabungkan header ini dengan menambahkan baris berikut ke server blok konfigurasi NGINX Anda:

add_header X-Content-Type-Options "nosniff";

Pengaturan "nosniff" mengarahkan browser untuk secara ketat mengikuti jenis konten yang ditentukan server secara ketat, mencegah interpretasi alternatif terhadap konten.

Contoh Konfigurasi NGINX dengan X-Content-Type-Options

Konfigurasi NGINX dengan X-Content-Type-Options mungkin disusun sebagai berikut:

upstream my_portal {
    server 127.0.0.1:8080;
}

server {
    listen 80;
    server_name example.com;
    add_header X-Content-Type-Options "nosniff";

    location / {
        proxy_pass http://my_portal;
    }
}

Setelah memperbarui konfigurasi Anda, pastikan untuk memuat ulang NGINX agar perubahan diterapkan, menggunakan sudo systemctl reload nginx atau sudo nginx -s reload.

Contoh Konfigurasi NGINX yang Diperluas

Konfigurasi untuk SSL/TLS

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/key.pem;
    add_header X-Content-Type-Options "nosniff";

    # Additional SSL configurations and locations
}

Penyiapan ini ditujukan untuk server dengan SSL/TLS, menerapkan X-Content-Type-Options pada koneksi aman untuk meningkatkan keamanan.

Konfigurasi Server Multi-Domain

server {
    listen 80;
    server_name example1.com example2.com;
    add_header X-Content-Type-Options "nosniff";

    # Additional configurations for multiple domains
}

Konfigurasi ini menerapkan header X-Content-Type-Options di beberapa domain yang dihosting di server yang sama, memastikan pengaturan keamanan yang konsisten di semua domain.

Mengonfigurasi Kebijakan Perujuk di NGINX

Fungsi Kebijakan Perujuk

Kebijakan Perujuk adalah header HTTP penting untuk meningkatkan privasi dan keamanan pengguna di web. Ini mengontrol berapa banyak informasi rujukan yang disertakan dalam header Perujuk ketika pengguna bernavigasi dari situs Anda ke situs lain, melindungi informasi sensitif dari paparan dalam permintaan web.

Menyiapkan Kebijakan Perujuk di NGINX

Untuk mengimplementasikan header Referrer-Policy di server NGINX Anda, modifikasi file konfigurasi NGINX, biasanya ditemukan di /etc/nginx/nginx.conf atau di direktori /etc/nginx/sites-available/. Tambahkan arahan berikut ke blok server:

add_header Referrer-Policy "no-referrer";

Arahan ini, disetel ke “no-referrer”, memastikan tidak ada informasi perujuk yang dikirim selama navigasi situs, sehingga memaksimalkan privasi.

Contoh Konfigurasi NGINX dengan Kebijakan Referrer

Konfigurasi NGINX Anda dengan header Referrer-Policy akan terlihat seperti ini:

upstream my_portal {
    server 127.0.0.1:8080;
}

server {
    listen 80;
    server_name example.com;
    add_header Referrer-Policy "no-referrer";

    location / {
        proxy_pass http://my_portal;
    }
}

Setelah menambahkan header ini, muat ulang NGINX dengan perintah seperti sudo systemctl reload nginx atau sudo nginx -s reload.

Opsi dan Definisi Kebijakan Perujuk

  • no-referrer: Tidak ada informasi perujuk yang dikirim.
  • no-referrer-when-downgrade (default): Mengirim informasi perujuk untuk tujuan asal yang sama atau untuk URL tujuan aman (HTTPS) dari halaman aman.
  • origin: Mengirim asal (skema, host, dan port) saja.
  • origin-when-cross-origin: Mengirimkan URL lengkap untuk permintaan asal yang sama tetapi hanya asal untuk kasus lain.
  • asal yang sama: Mengirim perujuk lengkap untuk permintaan asal yang sama tetapi tidak ada header untuk permintaan lintas asal.
  • strict-origin: Mengirimkan asal untuk permintaan HTTPS tetapi tidak ada header untuk permintaan HTTP.
  • strict-origin-when-cross-origin: Mengirim perujuk lengkap ke permintaan asal yang sama, asal ke tujuan HTTPS dari halaman HTTPS, dan tanpa header ke tujuan HTTP.
  • unsafe-url: Mengirim URL lengkap tanpa memandang asal atau keamanannya (tidak disarankan).

Contoh Konfigurasi NGINX yang Diperluas

Konfigurasi SSL/TLS

server {
    listen 443 ssl;
    server_name secure.example.com;
    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/key.pem;
    add_header Referrer-Policy "no-referrer";

    # Additional SSL configurations
}

Konfigurasi ini menerapkan header Referrer-Policy di lingkungan yang aman dan mendukung SSL/TLS, sehingga meningkatkan privasi pada koneksi terenkripsi.

Konfigurasi Server Multi-Domain

server {
    listen 80;
    server_name example1.com example2.com;
    add_header Referrer-Policy "no-referrer";

    # Additional configurations for each domain
}

Penyiapan ini memastikan bahwa header Kebijakan Perujuk diterapkan di beberapa domain yang dihosting di server yang sama, dengan menjaga pengaturan privasi tetap konsisten.

Menerapkan Kebijakan Izin di NGINX

Memahami Kebijakan Izin

Header Izin-Kebijakan memberdayakan administrator web dengan kontrol yang tepat atas fitur browser dan API di situs web mereka. Mengonfigurasi header ini secara signifikan meningkatkan keamanan dan privasi situs, memungkinkan pembatasan fitur seperti geolokasi, kamera, dan mikrofon berdasarkan kebutuhan spesifik situs Anda.

Mengonfigurasi Kebijakan Izin di NGINX

Untuk memasukkan header Permissions-Policy di server NGINX Anda, modifikasi file konfigurasi NGINX, biasanya terletak di /etc/nginx/nginx.conf atau di dalam direktori /etc/nginx/sites-available/.

Tambahkan arahan berikut ke blok server:

add_header Permissions-Policy "geolocation=(); midi=(); notifications=(); push=(); sync-xhr=(); accelerometer=(); gyroscope=(); magnetometer=(); payment=(); usb=(); vr=(); camera=(); microphone=(); speaker=(); vibrate=(); ambient-light-sensor=(); autoplay=(); encrypted-media=(); execute-clipboard=(); document-domain=(); fullscreen=(); imagecapture=(); lazyload=(); legacy-image-formats=(); oversized-images=(); unoptimized-lossy-images=(); unoptimized-lossless-images=(); unsized-media=(); vertical-scroll=(); web-share=(); xr-spatial-tracking=();";

Petunjuk ini mencantumkan berbagai fitur browser dan API, menyetel semuanya ke () yang secara efektif menonaktifkannya. Konfigurasi ini memberikan pendekatan komprehensif untuk membatasi fitur yang dapat membahayakan privasi atau keamanan pengguna.

Contoh Konfigurasi NGINX dengan Kebijakan Izin

Berikut ini contoh tampilan konfigurasi NGINX Anda dengan header Permissions-Policy:

upstream my_portal {
    server 127.0.0.1:8080;
}

server {
    listen 80;
    server_name example.com;
    add_header Permissions-Policy "geolocation=(); midi=(); notifications=(); push=(); sync-xhr=(); accelerometer=(); gyroscope=(); magnetometer=(); payment=(); usb=(); vr=(); camera=(); microphone=(); speaker=(); vibrate=(); ambient-light-sensor=(); autoplay=(); encrypted-media=(); execute-clipboard=(); document-domain=(); fullscreen=(); imagecapture=(); lazyload=(); legacy-image-formats=(); oversized-images=(); unoptimized-lossy-images=(); unoptimized-lossless-images=(); unsized-media=(); vertical-scroll=(); web-share=(); xr-spatial-tracking=();";

    location / {
        proxy_pass http://my_portal;
    }
}

Arahan ini secara komprehensif mencantumkan berbagai fitur browser dan API, mengaturnya ke () untuk menonaktifkannya secara efektif.

Contoh Konfigurasi NGINX dengan Kebijakan Izin

Konfigurasi NGINX Anda, termasuk Kebijakan Izin, mungkin tampak seperti ini:

upstream my_portal {
    server 127.0.0.1:8080;
}

server {
    listen 80;
    server_name example.com;
    add_header Permissions-Policy "geolocation=(); midi=(); notifications=(); push=(); sync-xhr=(); accelerometer=(); gyroscope=(); magnetometer=(); payment=(); usb=(); vr=(); camera=(); microphone=(); speaker=(); vibrate=(); ambient-light-sensor=(); autoplay=(); encrypted-media=(); execute-clipboard=(); document-domain=(); fullscreen=(); imagecapture=(); lazyload=(); legacy-image-formats=(); oversized-images=(); unoptimized-lossy-images=(); unoptimized-lossless-images=(); unsized-media=(); vertical-scroll=(); web-share=(); xr-spatial-tracking=();";

    location / {
        proxy_pass http://my_portal;
    }
}

Muat ulang NGINX dengan sudo systemctl reload nginx atau sudo nginx -s reload setelah melakukan perubahan ini.

Izin-Opsi Kebijakan Dijelaskan

Header Izin-Kebijakan memungkinkan Anda menyesuaikan penggunaan berbagai fitur:

  • geolokasi: Mengontrol akses ke data geolokasi.
  • midi: Mengelola akses ke perangkat MIDI.
  • pemberitahuan: Mengatur tampilan notifikasi.
  • dorongan: Mempengaruhi fungsionalitas pemberitahuan push.
  • sinkronisasi-xhr: Berkaitan dengan XMLHTTPRequest yang sinkron.
  • akselerometer: Mendiktekan akses ke akselerometer perangkat.
  • giroskop: Mengontrol akses giroskop.
  • magnetometer: Mengelola akses ke magnetometer perangkat.
  • pembayaran: Berlaku untuk fitur permintaan pembayaran.
  • usb: Mengatur akses ke perangkat USB.
  • vr: Berkenaan dengan fitur realitas virtual.
  • kamera: Mengelola akses kamera.
  • mikropon: Mendiktekan akses mikrofon.
  • pembicara: Mengontrol akses ke perangkat speaker.
  • bergetar: Mempengaruhi getaran API.
  • sensor cahaya sekitar: Berkaitan dengan sensor cahaya sekitar.
  • putar otomatis: Mengontrol pemutaran otomatis media.
  • media terenkripsi: Mengelola akses media terenkripsi.
  • eksekusi-papan klip: Mengatur akses baca/tulis papan klip.
  • domain-dokumen: Berkaitan dengan fitur document.domain.
  • layar penuh: Mendiktekan akses layar penuh.
  • pengambilan gambar: Mengontrol fungsionalitas pengambilan gambar.
  • beban malas: Mempengaruhi pemuatan gambar yang lambat.
  • format gambar lama: Berkaitan dengan format gambar lama.
  • gambar berukuran besar: Mengatur pemuatan gambar berukuran besar.
  • gambar yang tidak dioptimalkan: Mengelola gambar lossy yang tidak dioptimalkan.
  • gambar yang tidak dioptimalkan-lossless: Berkenaan dengan gambar lossless yang tidak dioptimalkan.
  • media tidak berukuran: Mengontrol media tanpa ukuran eksplisit.
  • gulir vertikal: Mempengaruhi pengguliran vertikal.
  • berbagi web: Berkaitan dengan fitur berbagi web.
  • xr-pelacakan spasial: Mengatur pelacakan spasial XR.

Konfigurasi Lanjutan Kebijakan Izin di NGINX

Mengonfigurasi Kebijakan Izin dengan Domain dan Wildcard Tertentu

Selain pengaturan dasar penonaktifan fitur menggunakan (), Kebijakan Izin di NGINX dapat disesuaikan untuk mengizinkan fitur tertentu dari domain tertentu atau menggunakan wildcard. Konfigurasi lanjutan ini memungkinkan kontrol yang lebih berbeda atas apa yang dapat diakses situs web Anda dan dari mana.

Contoh: Mengizinkan Fitur dari Domain Tertentu

server {
    listen 80;
    server_name example.com;
    add_header Permissions-Policy "geolocation=(https://trusteddomain.com), microphone=(https://alloweddomain.com)";

    location / {
        proxy_pass http://my_portal;
    }
}

Konfigurasi ini memungkinkan akses data geolokasi hanya dari https://trusteddomain.com dan akses mikrofon hanya dari https://alloweddomain.com, meningkatkan keamanan dengan membatasi fitur sensitif ini ke sumber tepercaya.

Contoh: Menggunakan Wildcard untuk Izin Luas

server {
    listen 80;
    server_name example.com;
    add_header Permissions-Policy "camera=*; fullscreen=*";

    location / {
        proxy_pass http://my_portal;
    }
}

Wildcard * dalam pengaturan ini mengizinkan akses kamera dan mode layar penuh dari domain mana pun. Pendekatan ini menawarkan izin yang lebih luas, cocok untuk situs web yang memerlukan akses fitur ekstensif dari berbagai sumber.

Contoh: Menggabungkan Pembatasan dan Izin

server {
    listen 80;
    server_name example.com;
    add_header Permissions-Policy "accelerometer=(); gyroscope=(self https://example2.com); payment=*";

    location / {
        proxy_pass http://my_portal;
    }
}

Dalam konfigurasi ini, akses akselerometer dinonaktifkan, akses giroskop diizinkan dari domain yang sama dan https://example2.com, dan permintaan pembayaran diizinkan dari semua domain.

Memverifikasi Header Keamanan dengan Perintah Curl di NGINX

Menggunakan Curl untuk Memeriksa Header Keamanan

Perintah curl adalah alat yang berharga untuk memverifikasi konfigurasi header keamanan di server NGINX Anda. Ini memungkinkan Anda memeriksa header situs web Anda dan mengonfirmasi bahwa header keamanan telah dikonfigurasi dengan benar. Langkah verifikasi ini penting untuk memastikan bahwa tindakan keamanan server web Anda aktif dan berfungsi sebagaimana mestinya.

Menjalankan Perintah Curl untuk Verifikasi Header

Untuk memeriksa header situs web Anda, jalankan perintah berikut di terminal Anda:

curl -I http://example.com

Ganti example.com dengan nama domain Anda. Perintah ini meminta header dari server Anda, memberikan wawasan tentang konfigurasi keamanan aktif.

Keluaran dan Interpretasi yang Diharapkan

Saat menjalankan perintah curl, Anda akan menerima keluaran yang menyerupai berikut ini:

HTTP/1.1 200 OK
Server: nginx
Date: Mon, 20 Mar 2023 00:00:00 GMT
Content-Type: text/html
Connection: keep-alive
Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Security-Policy: default-src 'self';
X-XSS-Protection: 1; mode=block
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: no-referrer
Permissions-Policy: geolocation=(); midi=(); notifications=(); push=(); sync-xhr=(); accelerometer=(); gyroscope=(); magnetometer=(); payment=(); usb=(); vr=(); camera=(); microphone=(); speaker=(); vibrate=(); ambient-light-sensor=(); autoplay=(); encrypted-media=(); execute-clipboard=(); document-domain=(); fullscreen=(); imagecapture=(); lazyload=(); legacy-image-formats=(); oversized-images=(); unoptimized-lossy-images=(); unoptimized-lossless-images=(); unsized-media=(); vertical-scroll=(); web-share=(); xr-spatial-tracking=();"

Output ini mengonfirmasi keberadaan dan konfigurasi yang benar dari berbagai header keamanan di server Anda, seperti Strict-Transport-Security, Content-Security-Policy, X-XSS-Protection, dan lainnya. Setiap header yang tercantum dalam output memainkan peran tertentu dalam mengamankan dan melindungi server web Anda dari berbagai kerentanan web.

Kesimpulan

Dengan mengonfigurasi header keamanan di NGINX, Anda meningkatkan keamanan aplikasi web Anda secara signifikan. Tinjau dan perbarui header keamanan Anda secara rutin untuk beradaptasi dengan ancaman keamanan yang terus berkembang. Menerapkan header ini membantu melindungi dari berbagai serangan dan memastikan pengalaman penjelajahan yang lebih aman bagi pengguna Anda. Pertahankan kewaspadaan dan selalu perbarui konfigurasi NGINX Anda untuk melindungi aset web Anda dengan kuat.

Joshua James
Ikuti aku
Postingan terbaru oleh Joshua James (Lihat semua)

Tinggalkan komentar