GNU/Linux >> Belajar Linux >  >> Linux

Cara Memperkuat dan Mengamankan Server Web NGINX di Linux

Nginx bisa dibilang salah satu server web gratis dan opensource yang paling banyak digunakan di hosting situs web dengan lalu lintas tinggi. Ia terkenal karena stabilitasnya, kinerja luar biasa, konsumsi sumber daya yang rendah, dan konfigurasi ramping. Beberapa situs populer yang didukung oleh Nginx termasuk WordPress.com, GitHub, Netflix, Airbnb, Hulu, Eventbrite, Pinterest, dan SoundCloud.

Meskipun kuat dan stabil, konfigurasi default tidak aman dan penyesuaian tambahan diperlukan untuk memperkuat server web dan memberikan keamanan yang sangat dibutuhkan untuk mencegah serangan dan pelanggaran.

Dalam artikel ini, kami membahas beberapa langkah yang dapat Anda ambil untuk memperkuat dan mengamankan server web Nginx Anda dan mendapatkan hasil maksimal darinya.

1) Menerapkan Sertifikat SSL

Salah satu langkah awal dan penting dalam memperkuat server web Nginx Anda adalah mengamankannya dengan menggunakan sertifikat SSL. Sertifikat SSL adalah sertifikat digital kriptografis yang mengenkripsi lalu lintas antara server web Anda dan browser web pengunjung situs Anda. Ini juga memaksa situs Anda untuk menggunakan protokol HTTPS aman dan menghapus HTTP yang mengirimkan lalu lintas dalam teks biasa. Dengan demikian, komunikasi bolak-balik diamankan dan dijaga dari peretas yang mungkin mencoba menguping dan mencuri informasi rahasia seperti nama pengguna, sandi, dan informasi kartu kredit.

Anda dapat memanfaatkan sertifikat SSL Let’s Encrypt Gratis yang mudah dipasang dan dikonfigurasi serta berlaku selama 90 hari. Setelah menginstalnya, Anda dapat memverifikasi kekuatan enkripsi SSL dengan menguji domain Anda di SSL Labs . Hasilnya ditunjukkan di bawah ini.

Seperti yang Anda lihat, domain yang kami gunakan mendapat nilai B, karena dukungan protokol yang lemah yang disorot dengan warna Kuning. Kami masih perlu melakukan beberapa penyesuaian untuk membawanya ke Grade A. Mari kita lihat bagaimana kami dapat meningkatkan dukungan Protokol di langkah berikutnya.

2) Nonaktifkan protokol SSL / TLS yang lemah

Seperti yang Anda lihat dari hasil, menerapkan SSL tidak selalu berarti bahwa situs Anda sepenuhnya aman. Versi usang seperti TLS 1.0, TLS 1.1, dan SSL 3 dianggap lemah dan menghadirkan kerentanan yang dapat dieksploitasi oleh peretas dan pada akhirnya membahayakan server web Anda. Protokol ini rentan terhadap kerentanan seperti POODLE, BEAST, dan CRIME.

Faktanya, browser web yang paling populer dan banyak digunakan telah mengumumkan berakhirnya dukungan untuk TLS 1.0 dan TLS 1.1 dalam tenggat waktu yang ditunjukkan.

  • Nama Browser           Tanggal
  • Google Chrome          Januari 2020
  • Mozilla Firefox            Maret 2020
  • Safari/Webkit              Maret 2020
  • Microsoft Edge            Juni 2020

Dengan informasi ini, akan lebih bijaksana untuk menyesuaikan diri dengan protokol keamanan terbaru, dan pada saat menulis artikel ini, protokol terbaru adalah TLS 1.2 dengan TLS 1.3 diharapkan nanti pada tahun 2020.

Untuk menerapkan TLS 1.2 dan  TLS 1.3, kita akan mengedit 2 file:

  • /etc/nginx/nginx.conf  –  Ini adalah file konfigurasi nginx utama
  • /etc/nginx/sites-available/example.com (atau /default)

Jika Anda menjalankan Let's Encrypt SSL, pastikan untuk mengedit file berikut

  • /etc/nginx/nginx.conf
  •  /etc/letsencrypt/options-ssl-nginx.conf

Gunakan langkah-langkah berikut untuk menonaktifkan Protokol SSL / TLS yang lemah

Langkah 1) Edit file nginx.conf

Pertama, pastikan Anda membuat cadangan file /etc/nginx/nginx.conf sebelum membuat perubahan apa pun. Kemudian buka file menggunakan editor teks pilihan Anda

$ sudo vi /etc/nginx/nginx.conf

Cari baris berikut

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE

Untuk menonaktifkan protokol yang lemah, cukup hapus protokol TLSv1 dan TLSv1.1 dan tambahkan TLSv1.2 &TLSv1.3 di bagian akhir.

ssl_protocols TLSv1.2  TLSv1.3 ; # Dropping SSLv3, ref: POODLE

Ini akan muncul sebagai berikut pada baris 36

Simpan dan keluar dari file konfigurasi.

Langkah 2) Edit file blok server Nginx

Protokol usang mungkin masih ada di file konfigurasi blok server Nginx Anda masing-masing. File konfigurasi blok terdapat di direktori /etc/nginx/sites-available/.

Oleh karena itu, lanjutkan dan ubah file konfigurasi blok Anda

$ sudo vi /etc/nginx/sites-available/example.com
OR
$ sudo vi /etc/nginx/sites-available/default

Seperti sebelumnya, gulir dan temukan baris berikut

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

Sekali lagi, hapus protokol TLSv1 dan TLSv1.1 dan tambahkan TLSv1.3 di bagian akhir.

CATATAN: Jika Anda menggunakan Let's Encrypt SSL, ubah file SSL:

$ sudo vi /etc/letsencrypt/options-ssl-nginx.conf

Agar perubahan tetap ada, mulai ulang server web Nginx

$ sudo systemctl restart nginx

Sekarang pergilah ke pengujian SSL Labs dan uji domain Anda sekali lagi. Kali ini, Anda harus mendapatkan peringkat A seperti yang ditunjukkan.

3)  Mencegah pengungkapan informasi

Bagian dari pengerasan server Anda melibatkan pembatasan pengungkapan informasi di server web Anda sebanyak mungkin. Informasi dapat bocor melalui header HTTP atau pelaporan kesalahan. Beberapa informasi ini mencakup versi Nginx yang Anda jalankan, dan Anda tidak ingin mengungkapkannya kepada peretas.

Secara default, Nginx menampilkan informasi header HTTP saat Anda menjalankan perintah:

$ curl -I http://localhost

Dari output pada baris kedua, Anda dapat melihat bahwa versi Nginx dan sistem operasi yang dijalankannya telah diungkapkan

Server:nginx/1.14.0 (Ubuntu)

Versi juga akan ditampilkan di browser web jika halaman kesalahan seperti halaman kesalahan 404 ditampilkan seperti yang ditunjukkan.

Untuk menghindari kebocoran informasi ini, edit nginx.conf file dan di bawah bagian http {, batalkan komentar pada baris berikut

server_tokens off;

Simpan perubahan dan keluar. Kemudian restart server web agar perubahan terlihat.

$ sudo systemctl restart nginx

Sekarang muat ulang halaman kesalahan dan perhatikan perbedaannya. Versi dan OS yang dijalankan Nginx telah dihilangkan.

Cara lain untuk memeriksa seberapa banyak informasi yang bocor dari server web Anda adalah dengan mengunjungi Situs Tanda Tangan Server dan periksa domain Anda. Jika semuanya baik-baik saja, Anda akan mendapatkan output berikut.

4)  Singkirkan metode HTTP yang tidak diinginkan

Praktik lain yang baik adalah menonaktifkan protokol yang tidak diinginkan yang tidak akan diterapkan oleh server web. Baris di bawah ini akan mengizinkan penerapan metode GET, POST, dan HEAD dan mengecualikan semua metode lain termasuk TRACE dan DELETE. Tambahkan baris berikut di file blok server Anda.

location / {
limit_except GET HEAD POST { deny all; }
}

5) Nonaktifkan rangkaian sandi yang lemah

Selain implementasi SSL, jadikan tujuan Anda untuk menonaktifkan cipher yang lemah dan tidak aman termasuk cipher RC4. Ini dibundel secara default semata-mata untuk tujuan kompatibilitas mundur dengan rilis Nginx sebelumnya dan tidak ada alasan yang baik untuk memilikinya karena mereka berfungsi sebagai kerentanan potensial yang dapat dieksploitasi. Oleh karena itu, di file ssl.conf Anda, ganti cipher dengan cipher suite berikut.

'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

6) Hapus semua modul yang tidak perlu

Untuk lebih meminimalkan lanskap ancaman, disarankan untuk menghapus modul yang tidak perlu dari pengaturan server default. Praktik terbaik mengharuskan Anda menjaga profil ramping dan hanya mengaktifkan modul yang digunakan dalam menyajikan konten dari server web. Namun, berhati-hatilah, jangan mencopot atau menghapus modul yang mungkin Anda perlukan. Sebagai rekomendasi, lakukan pengujian di QA atau lingkungan pengujian sebelum memutuskan modul mana yang harus dinonaktifkan dan modul mana yang diperlukan untuk server web Anda.

7) Mencegah Luapan Lebih Baik

Dalam manajemen memori, buffer adalah lokasi penyimpanan yang menampung sementara data saat mulai ditransfer dari satu lokasi memori ke lokasi memori lainnya.

Ketika volume data melebihi kapasitas buffer memori, buffer overflow terjadi. Dengan kata lain, buffer overflows terjadi ketika sebuah program menulis lebih banyak data pada blok memori yang dapat disimpan atau ditanganinya.

Penyerang dapat mengeksploitasi kerentanan ini untuk mengirim kode berbahaya yang dapat membahayakan sistem. Sebagai praktik standar, disarankan untuk membuat beberapa penyesuaian pada server Web untuk mengurangi masalah tersebut. Tambahkan baris kode di bawah ini ke file nginx.conf.

##buffer policy
client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;
##end buffer policy

8) Mencegah serangan XSS

Serangan XSS (cross-site scripting) adalah serangan di mana peretas menggunakan aplikasi web untuk menyuntikkan kode berbahaya atau skrip sisi browser ke situs tepercaya. Ketika pengunjung situs mengunjungi situs, skrip diunduh dan dapat mengakses berbagai sumber daya browser seperti cookie dan token sesi.

Salah satu tindakan pencegahan terhadap jenis serangan tersebut adalah dengan menambahkan baris di bawah ini dalam file ssl.conf.

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

9) Hindari serangan Clickjacking

Untuk menghindari serangan clickjacking, tambahkan X-Frame-Options di header HTTP di file nginx.conf seperti yang ditunjukkan

add_header X-Frame-Options "SAMEORIGIN";

Setelah selesai, simpan dan mulai ulang server web Nginx.

10) Tolak agen pengguna otomatis

Untuk menjaga server Anda aman dari bot dan skrip otomatis lainnya yang mungkin digunakan oleh penyerang untuk mengambil informasi dari situs Anda, adalah bijaksana untuk secara eksplisit menolak agen pengguna tertentu yang pada akhirnya dapat menyebabkan serangan penolakan layanan DOS. Tambahkan baris berikut di file nginx.conf.

if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
return 403;
}

11) Mencegah hotlinking Gambar

Hotlinking adalah praktik di mana pengguna menautkan gambar ke situs web Anda alih-alih langsung mengunggah gambar di situs mereka. Ketika ini terjadi, gambar Anda muncul di situs mereka dan sisi sebaliknya adalah Anda harus membayar bandwidth tambahan.

Untuk mencegah hal ini terjadi, cari arahan lokasi di dalam file konfigurasi Nginx dan tambahkan cuplikan berikut

# Stop deep linking or hot linking
location /images/ {
  valid_referers none blocked www.example.com example.com;
   if ($invalid_referer) {
     return   403;
   }
}

Anda juga dapat menentukan ekstensi gambar seperti yang ditunjukkan:

valid_referers blocked www.example.com example.com;
if ($invalid_referer) {
    rewrite ^/images/uploads.*\.(gif|jpg|jpeg|png)$ http://www.example.com/banned.jpg last
}

12)  Tetap perbarui Nginx

Mudah kan? Menjaga server web Anda tetap up to date adalah salah satu cara Anda dapat mengamankan server Anda. Memperbarui server web Anda menerapkan tambalan yang diperlukan yang mengatasi kerentanan yang sudah ada sebelumnya yang dapat dieksploitasi oleh peretas untuk menyusupi server Anda.

Itu adalah ringkasan dari beberapa langkah utama yang dapat Anda ambil untuk memperkuat server web Nginx Anda dan mengamankannya dari teknik eksploitasi umum. Ini akan sangat membantu dalam melindungi file situs web Anda dan juga pengunjung di situs Anda.

Baca Juga :Cara Mengonfigurasi NGINX sebagai Load Balancer TCP/UDP di Linux


Linux
  1. Apa itu Server Web, dan Bagaimana Cara Kerja Server Web?

  2. Cara Menginstal Server Web Nginx di Linux

  3. Cara Memasang dan Mengamankan Server PostgreSQL di RockyLinux 8

  1. Cara Membuat Server TeamSpeak di Linux, Windows, dan macOS

  2. Bagaimana Memperbaiki Kerentanan DROWN di server Web Apache/NGINX dan SMTP?

  3. Cara Install RabbitMQ Server dan Erlang di Linux

  1. Tips dan Trik untuk Mengamankan Server Web Nginx Anda

  2. Cara menginstal server web Apache di Linux

  3. Cara Meng-host Situs Web di Server Web NGINX