Keamanan Sistem Operasi NetBSD untuk Aplikasi Berbasis Web – Bagian V Pengerasan NginX dan PHP-FPM dan instalasi OpenSSL yang aman

Pada artikel ini akan dibahas mengenai pengerasan Nginx dan PHP-FPM, disini juga akan ditambahkan pengerasan spesifik bagi wordpress terutama terkait folder upload dan folder search. Selain itu akan dibahas bagaimana menginstal sebuah sertifikat SSL dan konfigurasi SSL yang baik di Nginx, karena saat ini sudah banyak attack-attack yang khusus ditujukan kepada SSL.

 

Mengeraskan konfigurasi NginX

NetBSD cukup baik dalam menerapkan keamanan pada sistem operasinya, ini tercermin dari tidak banyaknya yang perlu dirubah dalam konfigurasi NginX agar tetap aman, contohnya serperti sudah menggunakan user dan group nginx sebagai pengguna defaultnya. Semua baris dibawah dapat ditambahkan pada file konfigurasi NginX yang pada net bsd terdapat di /usr/pkg/etc/nginx/nginx.conf

Untuk keepalive-timeout default dari konfiguarsi biasanya bernilai 65 detik, tentu ini terlalu lama untuk sebuah server produksi, ada baiknya disesuaikan dengan kondisi seperti kecepatan koneksi dan server.

keepalive_timeout 15;

seringkali hidden file digunakan untuk menyerang server web, untuk mencegah digunakan hidden file pada server masukan baris ini

location ~/\. { access_log off; log_not_found off; deny all;}

untuk menghindari serangan clickjacking yang memanfatkan tag html <iframe>, tambahkan opsi berikut

add_header X-Frame-Options "SAMEORIGIN";

dan ketika sebuah halaman error muncul seringkali muncul juga informasi tambahan mengenai informasi versi server, sebaiknya dimatikan saja

server_tokens off;

Serangan buffer overflow adalah ancaman serius bagi sebuah server, dan untuk mengatur buffer size yang dapat digunakan sebenarnya sangat bergantung pada aplikasi yang digunakan, namun karena ini adalah untuk wordpress yang kemungkinan menggunakan file berukuran besar kecil maka untuk memitigasi serangan ukuran buffer dapat diatur sebagai berikut :

client_body_buffer_size 1k;
client_header_buffer_size 1k;
client_max_body_size 2k;
large_client_header_buffers 2 1k;

HTTP Methods seringkali  disalah gunakan seperti DELET dan TRACE, sehingga selain yang penting-penting sebaiknya didisable saja

if ($request_method !~ ^(GET|HEAD|POST)$)
{
      return 444;
}

Setingan Nginx spesifik untuk mengeraskan wordpress

Membatasi agar tidak bisa mengupload file php

location ~* ^/wp-content/uploads/.*.php$
{
      return 403;
}

Seringkali fitur search digunakan untuk membanjiri server dengan permintaan, hal ini dapat dibatasi dengan

# tambahkan pada awal file nginx.conf
limit_req_zone $binary_remote_addr zone=wpsearch:1m rate=1r/s;
 
# tambahkan didalam server{}
    location /search { 
        limit_req zone=wpsearch burst=3 nodelay;
        try_files $uri /index.php; 
    }

 

Mengeraskan Konfigurasi PHP-FPM

Untuk mengkonfigurasi PHP-FPM harus mengedit /usr/pkg/etc/php-fpm.conf, berikut baris-baris yang dapat ditambahkan :

display_errors = Off
register_globals = Off

untuk membatasi ukuran file post dan file upload dapat menambahkan

post_max_size = 8M #atau ukuran yang dibutuhkan
upload_max_filesize = 2M #atau ukuran yang dibutuhkan

 

Instalasi dan Mengeraskan OpenSSL

Buatlah sertifikat untuk CA dan sertifikat kunci  dengan menjalankan perintah-perintah berikut ini

# cd /etc/openssl
# wget http://web.mit.edu/crypto/openssl.cnf
# cd certs
# openssl genrsa -des3 -out webmaster.key 2048
# openssl req -new -key webmaster.key -out webmaster.csr
# cp webmaster.key webmaster.key.org
# openssl rsa -in webmaster.key.org -out webmaster.pem
# rm webmaster.key.org
# openssl x509 -req -days 365 -in webmaster.csr - signedkey webmaster.key -out ca-bundle.pem
# openssl dhparam -out dhparam.pem 4096

Setelah membuat pasangan kunci, kunci tersebut dijadikan pasangan kunci https dengan memasukannya kedalam konfigurasi nginx.conf dengan menambahkan :

#tambahkan pada awal server {} setelah Listen 80

Listen 443 default ssl;

ssl_certificate_key /etc/openssl/certs/webmaster.pem;
ssl_certificate /etc/openssl/certs/ca-bundle.pem;


ssl_session_cache  builtin:1000  shared:SSL:10m;

ssl_stapling on;
ssl_stapling_verify on;

ssl_prefer_server_ciphers on;

Selain protokol TLS kita larang dengan menggunakan baris berikut (protokol ssl v3 kebawah tidak dapat digunakan)

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

Diffie Helman Ephemeral Parameters untuk key exchange yang telah kita generate diatas dapat dimasukan dengan baris berikut :

ssl_dhparam /etc/openssl/certs/dhparam.pem;

SSL Cipher suite yang direkomendasikan :

ssl_ciphers 'AES128+EECDH:AES128+EDH';

semua baris diatas cukup ditambahkan saja dalam server{} didalam nginx.conf. Setelah itu server dapat direstart dengan

# /etc/rc.d/nginx restart

 

Leave a Reply

Your email address will not be published. Required fields are marked *