Panduan Keamanan dan Pengerasan Server Web Nginx

Praktik terbaik keamanan Nginx.


Nginx adalah server web yang paling cepat berkembang di industri ini, dan saat ini, ia memegang posisi nomor dua dalam pangsa pasar.

Ini awalnya dirilis pada tahun 2004, dan sejak itu telah mendapatkan reputasi yang sangat baik dan digunakan di jutaan situs tersibuk.

Ada alasan untuk itu – Nginx adalah terik dengan cepat.

Pada artikel ini, saya akan berbicara tentang beberapa panduan penting untuk mengamankan Nginx untuk lingkungan produksi. Jadi mari kita mulai.

SSL / TLS

Terapkan Sertifikat SSL

Langkah pertama dalam keamanan web adalah menerapkan SSL agar Anda dapat mengakses aplikasi web dengan https dan menambahkan lapisan enkripsi dalam komunikasi.

  • Gunakan OpenSSL untuk menghasilkan CSR dengan 2048 bit dan sha-2

openssl req -nodes -new -sha256 -newkey rsa: 2048 -kunci bestflare.key -out bestflare.csr

  • Perintah di atas akan menghasilkan CSR dan file kunci saat ini bekerja secara langsung. Jangan lupa untuk mengubah nama file .csr dan .key.

Dapatkan CSR yang ditandatangani oleh otoritas sertifikat dan setelah Anda memiliki sertifikat yang ditandatangani, Anda dapat menerapkannya di Nginx seperti di bawah ini.

  • Masuk ke server Nginx
  • Buka folder conf di mana Anda memiliki file ssl.conf.

Catatan: Dalam instalasi default di Linux, Anda akan memiliki file ini di bawah /etc/nginx/conf.d.

  • Edit file dan tambahkan berikut ini, yang akan memungkinkan Nginx untuk mendengarkan pada port 443

server {
dengarkan 443 ssl;
server_name bestflare.com;
ssl aktif;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
}

Catatan: jangan lupa untuk mengubah jalur sertifikat dan file kunci.

  • Simpan konfigurasi dan mulai kembali Nginx. Sertifikat SSL berhasil diterapkan.

bestflare-ssl-cert

Pengoptimalan SSL / TLS

Memiliki SSL tidak berarti sepenuhnya aman dan di situlah sebagai pakar Keamanan Web, Anda perlu menerapkan konfigurasi untuk mengamankan server web.

Untuk mulai dengan, saya akan merekomendasikan menjalankan Pemindaian SSL terhadap situs web untuk menemukan skor dan kerentanan esensial.

ssl-labs-rating-c

Jadi peringkat SSL Labs saat ini adalah “C” dan target adalah membuatnya “A.”

Nonaktifkan protokol SSL / TLS yang lemah

SSL 3, TLS 1.0, dan TLS 1.1 rentan, dan kami hanya akan mengizinkan protokol TLS 1.2 yang kuat.

  • Edit file ssl.conf dan tambahkan di bawah ini dalam blok server

ssl_protocols TLSv1.2;

  • Simpan file ssl.conf dan mulai kembali Nginx

Nonaktifkan suite sandi yang lemah

Suite sandi yang lemah dapat menyebabkan kerentanan seperti kebuntuan, dan itulah sebabnya kami hanya perlu mengizinkan sandi yang kuat.

  • Tambahkan berikut ini ke blok server di file ssl.conf

ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EECDH + ECDSA + SHA384 EECDH + ECDSA + SHA256 EECDH + aRSA + SHA384 EECDH + aRSA + SHA256 EECDH + aRSA + RCR TINGGAL! ! MD5! EXP! PSK! SRP! DSS";

  • Simpan file dan mulai ulang Nginx

Instal Sertifikat Rantai

Tidak memiliki sertifikat berantai juga memengaruhi peringkat keseluruhan dan ini mungkin menunjukkan kesalahan saat menjelajah di peramban modern seperti Chrome. Anda perlu mendapatkan sertifikat berantai dari otoritas. Sebagian besar Anda akan menemukan di situs web mereka atau hanya Google itu.

  • Tambahkan konten berantai sertifikat dalam sertifikat situs web seperti di bawah ini. Dalam contoh saya, ini akan menjadi /opt/cert/bestflare.pem

sertifikat-rantai

  • Simpan file dan mulai kembali Nginx

Secure Diffie-Hellman untuk TLS

Diffie-Hellman kurang aman dari yang diyakini. Salah satu praktik terbaik yang akhir-akhir ini ditambahkan dalam daftar adalah mengamankan Diffie-hellman. Membuat DH GROUP unik dan menambahkan ssl_dhparam di file ssl.conf melakukan hal ini.

  • Hasilkan Grup DH Unik dengan menggunakan OpenSSL

openssl dhparam -out dhparams.pem 4096

  • Ini akan memakan waktu beberapa menit dan akan menghasilkan file dhparams.pem pada direktori kerja saat ini
  • Salin dhparams.pem ke folder cert
  • Ubah ssl.conf dan tambahkan berikut dalam blok server

ssl_dhparam /opt/cert/dhparams.pem;

  • Simpan file dan mulai kembali Nginx

Itu harus cukup untuk optimasi SSL / TLS dan mari kita coba lagi URL untuk melihat peringkatnya.

ssllabs-a-rating

Woo ho! Jadi sekarang Anda bisa melihatnya “SEBUAH” peringkat oleh SSLLabs. Sudah selesai dilakukan dengan baik!

Ini ssl.conf lengkap

# Konfigurasi server HTTPS
server {
dengarkan 443 ssl;
server_name bestflare.com;
ssl aktif;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers aktif;
ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EECDH + ECDSA + SHA384 EECDH + ECDSA + SHA256 EECDH + aRSA + SHA384 EECDH + aRSA + SHA256 EECDH + aRSA + RCR TINGGAL!! ! MD5! EXP! PSK! SRP! DSS";
ssl_dhparam /opt/cert/dhparams.pem;
}

Kebocoran Informasi

Pada instalasi Nginx default Anda akan memiliki banyak informasi sensitif yang terungkap, yang dapat membantu peretas untuk bersiap menghadapi serangan.

Jika Anda bekerja pada lingkungan kepatuhan PCI, ini dianggap sebagai kerentanan kebocoran informasi dan harus memperbaiki item tersebut.

Anda harus menggunakan server_tokens off untuk menonaktifkan kebocoran informasi. Saya sudah menjelaskan ini di artikel saya sebelumnya. Hapus Versi dari Server Header Banner di Nginx

Keamanan Aplikasi Web

Konfigurasi Nginx default tidak sempurna dan dapat memiliki banyak kerentanan karena itu kami mengeraskannya agar aman.

Nonaktifkan metode HTTP yang tidak diinginkan

Sebagian besar waktu, Anda hanya perlu, KEPALA & POST HTTP request di aplikasi web Anda. Mengizinkan TRACE atau DELETE berisiko karena dapat memungkinkan serangan Pelacakan Lintas Situs dan berpotensi memungkinkan peretas untuk mencuri informasi cookie.

  • Ubah nginx.conf dan tambahkan berikut ini di bawah blok server

if ($ request_method! ~ ^ (DAPATKAN | KEPALA | POST) $)
{
kembali 405;
}

Simpan file dan mulai kembali Nginx. Ini sekarang akan menampilkan 405 Tidak Diizinkan jika seseorang mencoba menggunakan TRACE, DELETE, PUT, OPTIONS.

Chandans-iMac: ~ chandan $ telnet bestflare.com 80
Mencoba 128.199.100.162…
Terhubung ke bestflare.com.
Karakter melarikan diri adalah ‘^]’.
TRACE / HTTP / 1.1
Tuan rumah: pengujian
HTTP / 1.1 405 Tidak Diizinkan
Server: nginx
Tanggal: Sab, 11 Jul 2015 06:04:34 GMT
Jenis-Konten: teks / html
Panjang Konten: 166
Koneksi: tutup

Serangan Clickjacking

Anda dapat menyuntikkan X-FRAME-OPTIONS dalam HTTP Header untuk mencegah serangan clickjacking.

Ini dicapai dengan menambahkan di bawah ini dalam file nginx.conf

add_header X-Frame-Options "SAMAORIGIN";

Header di atas akan menginstruksikan browser untuk memuat sumber daya SAJA dari asal yang sama.

Perlindungan X-XSS

Suntikkan HTTP Header dengan perlindungan X-XSS untuk mengurangi serangan skrip Lintas Situs.

  • Ubah file nginx.conf untuk menambahkan yang berikut ini

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

  • Simpan file konfigurasi dan mulai ulang Nginx. Anda dapat menggunakan Uji Judul alat untuk memverifikasi setelah implementasi.

Anda juga mungkin tertarik untuk mengimplementasikan header aman yang direkomendasikan OWASP yang dijelaskan di sini.

Menerapkan WAF Mod Security

Tambahkan lapisan keamanan tambahan dengan menerapkan ModSecurity Firewall Aplikasi Web dengan OWASP Core Rule Set.

Atau, jika Anda dapat mempertimbangkan menggunakan keamanan berbasis cloud seperti SUCURI di depan server Nginx.

Tetap perbarui Nginx

Terakhir namun tidak kalah pentingnya, Anda harus selalu memperbarui Nginx karena ada banyak peningkatan kinerja, perbaikan keamanan, dan fitur baru yang ditambahkan.

Saya harap ini membantu Anda menjaga keamanan Nginx Anda.

Selanjutnya, Anda mungkin tertarik untuk belajar membangun Nginx untuk kinerja tinggi dari awal.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map