Cara Melakukan Pengaturan Header Keamanan di Nginx dan Apache

Melakukan Pengaturan Header Keamanan di Nginx dan Apache adalah langkah penting untuk meningkatkan keamanan server web Kamu. Header keamanan HTTP adalah bagian yang sangat penting dari keamanan situs web karena melindungi Kamu dari berbagai jenis serangan termasuk XSS, injeksi SQL, clickjacking, dll.

Saat Kamu mengunjungi situs web apa pun dari browser web Kamu, browser Kamu memintanya dari server web tempat situs web tersebut dihosting. Server web kemudian merespons dengan HTTP Response Header. Header ini berisi data meta, kode kesalahan status, aturan cache, dan banyak lagi. Ini juga memberi tahu browser Kamu bagaimana berperilaku saat menangani konten situs web Kamu. Saat Kamu menggunakan web dan berinteraksi dengan situs web, browser Kamu menyimpan informasinya. Header ini akan membantu Kamu menguraikan komunikasi dan meningkatkan keamanan web. Ada enam header keamanan terpenting yang harus Kamu perhatikan dan disarankan untuk menerapkannya jika memungkinkan.

Perhatian!, header ini berlaku secara global di server jika Anda ingin mengubah ke file tertentu, harap tambahkan header di dalam blok lokasi (nginx) atau filesMatch (apache). Jadi jika Anda menambahkan header di dalam lokasi mana pun, file hanya akan menerapkan header di dalam blok lokasi dan header global tidak akan berfungsi untuk jenis file ini.

Berikut ini adalah panduan Cara Melakukan Pengaturan Header Keamanan di Nginx dan Apache:

1. HTTP Strict Transport Security (HSTS)

Pengamanan Header ini menginstruksikan agen pengguna (browser user) untuk hanya menggunakan koneksi HTTPs dan juga dideklarasikan oleh Strict-Transport-Security. Ini akan mencegah browser web mengakses server web melalui koneksi non-HTTPS. Saat ini semua browser web utama mendukung keamanan transportasi HTTP yang ketat. Apabila kamu mengakses non-HTTPS maka akan ada peringatan pada browser.

Header Strict-Transport-Security diabaikan oleh browser saat situs web Anda diakses melalui HTTP. Hal ini karena penyerang dapat mencegat koneksi HTTP dan memasukkan header atau menghapusnya.

Kamu dapat mengimplementasikan HSTS di Apache dengan menambahkan entri berikut di file /etc/apache2/sites-enabled/example.conf:

Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Simpan file lalu restart server Apache agar perubahan bisa diterapkan.

Kamu juga dapat mengimplementasikan HSTS di Nginx dengan menambahkan entri berikut di file /etc/nginx/sites-available/example:

add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';

Simpan file lalu restart Nginx

Catatan: Jika ingin menerapkan header ini ke file tertentu, silakan tambahkan baris add_header di blok lokasi (Nginx) atau baris set Header di blok filesMatch (Apache).

2. Content Security Policy (CSP)

Header Content-Security-Policy adalah versi perbaikan dari header X-XSS-Protection dan memberikan lapisan keamanan tambahan. Ini adalah header yang lebih kuat yang bertujuan untuk mencegah serangan XSS dan injeksi data. CSP menginstruksikan browser untuk memuat konten yang diizinkan untuk dimuat di situs web. Semua browser utama saat ini menawarkan dukungan penuh atau sebagian untuk kebijakan keamanan konten.

Kamu bisa mengimplementasikan CSP di Apache dengan menambahkan entri berikut di file /etc/Apache2/sites-enabled/example.conf:

Header always set Content-Security-Policy "default-src 'self'; font-src *;img-src * data:; script-src *; style-src *;"

Simpan file lalu restart server Apache

Mengimplementasikan CSP di Nginx dengan menambahkan entri berikut di file /etc/nginx/sites-available/example:

add_header Content-Security-Policy "default-src 'self'; font-src *;img-src * data:; script-src *; style-src *";

3. X-XSS-Protection

X-XSS juga dikenal sebagai header Cross Site Scripting digunakan untuk bertahan dari serangan Cross-Site Scripting. Filter XSS diaktifkan secara default di browser web modern seperti Chrome, IE, dan Safari. Header ini menghentikan pemuatan halaman ketika halaman tersebut mendeteksi serangan skrip lintas situs (XSS).

Penerapkan perlindungan XSS menggunakan tiga opsi tergantung pada kebutuhan spesifik.

  • X-XSS-Protection: 0 : Ini akan menonaktifkan filter sepenuhnya.
  • X-XSS-Protection: 1 : Ini akan mengaktifkan filter tetapi hanya membersihkan skrip yang berpotensi berbahaya.
  • X-XSS-Perlindungan: 1; mode=block : Ini akan mengaktifkan filter dan memblokir halaman sepenuhnya.

Untuk mengaktifkan header X-XSS-Protection di Apache, tambahkan baris berikut di file konfigurasi default server web Apache Anda /etc/apache2/sites-enabled/example.conf:

Header set X-XSS-Protection "1; mode=block"

Nginx

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

4. X-Frame-Options

Pengamanan Header X-Frame-Options digunakan untuk mempertahankan situs web Anda dari serangan clickjacking dengan menonaktifkan iframe di situs Anda. Saat ini didukung oleh semua browser web utama. Dengan header ini, Anda memberi tahu browser untuk tidak menyematkan halaman web Anda di frame/iframe.

Ada tiga cara untuk mengkonfigurasi X-Frame-Options:

  • DENY : Ini akan menonaktifkan fitur iframe sepenuhnya.
  • SAMEORIGIN : iframe hanya dapat digunakan oleh seseorang dengan asal yang sama.
  • ALLOW-FROM : Ini akan memungkinkan halaman untuk dimasukkan ke dalam iframe hanya dari URL tertentu.

Untuk mengaktifkan header X-Frame-Options di Apache, tambahkan baris berikut di file konfigurasi default server web Apache Anda /etc/Apache2/sites-enabled/example.conf:

Header always set X-Frame-Options "SAMEORIGIN"

NGINX: Ubah file /etc/nginx/sites-available/example:

add_header X-Frame-Options “SAMEORIGIN”;

5. X-Content-Type-Options

Header tipe konten-x juga disebut “Perlindungan Sniffing Browser” untuk memberitahu browser agar mengikuti tipe MIME yang ditunjukkan di header. Ini digunakan untuk mencegah browser web seperti, Internet Explorer dan Google Chrome mengendus respons dari Tipe Konten yang dinyatakan. Header nosniff tidak melindungi semua kerentanan terkait sniffing. Juga tidak ada nilai yang valid untuk header ini kecuali nosniff.

Untuk menambahkan header X-Frame-Options di Apache, tambahkan baris berikut di file konfigurasi default server web Apache Anda /etc/Apache2/sites-enabled/webdock.conf:

Header always set X-Content-Type-Options "nosniff"

Untuk menambahkan header X-Frame-Options di Nginx, tambahkan baris berikut di file konfigurasi default server web Nginx /etc/nginx/sites-available/default

add_header X-Content-Type-Options nosniff;

6. Referrer-Policy

Referrer-Policy adalah header keamanan yang mengidentifikasi alamat halaman web yang meminta halaman web saat ini. Dengan memeriksa referensi, halaman web baru dapat melihat dari mana permintaan berasal. Kebijakan Perujuk dapat dikonfigurasi untuk menyebabkan browser tidak memberi tahu situs tujuan informasi URL apa pun.

Untuk menambahkan header Referrer-Policy di Apache, tambahkan baris berikut di file konfigurasi default server web Apache Anda /etc/Apache2/sites-enabled/webdock.conf:

Header always set Referrer-Policy "strict-origin"

Untuk menambahkan header Referrer-Policy di Nginx, tambahkan baris berikut di file konfigurasi default server web Nginx Anda /etc/nginx/sites-available/example:

add_header Referrer-Policy "strict-origin";

7. Permissions-Policy

Permissions-Policy adalah header baru yang memungkinkan situs mengontrol API atau fitur mana yang dapat digunakan di browser.

Untuk menambahkan header Permissions-Policy di Apache, tambahkan baris berikut di file konfigurasi default server web Apache Anda /etc/Apache2/sites-enabled/webdock.conf:

Header always set Permissions-Policy "geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()"

Untuk menambahkan header Referrer-Policy di Nginx, tambahkan baris berikut di file konfigurasi default server web Nginx Anda /etc/nginx/sites-available/example:

add_header Permissions-Policy "geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()";

Catatan Pengaturan Header Keamanan di Nginx dan Apache

  • Ubah izin berdasarkan kebutuhan situs web Anda,
  • Value diatas hanyalah contoh script kasus penggunaan di kehidupan nyata.
  • Jika Anda ingin menerapkan header ini ke file tertentu, silakan tambahkan baris add_header di blok lokasi (Nginx) atau baris set Header di blok filesMatch (Apache).
  • Selalu save dan restart server ketika selesai melakukan perubahan.

Tidak ada pengaturan yang 100% membuat website, situs kamu aman, akan tetapi setidaknya mengurangi risiko yang terjadi apabila terjadi hal yang tidak diinginkan.

Selamat mencoba 🙂

source: https://webdock.io/en/docs/how-guides/security-guides/how-to-configure-security-headers-in-nginx-and-apache

Komentar