Jakhoster.blog

Edukasi 24 May 2026

Linux Hardening NGINX untuk VPS Multidomain

Linux Hardening NGINX untuk VPS Multidomain
Advertisement

Memahami Tantangan Hosting Multidomain di Linux

Dalam lingkungan produksi, terutama ketika mengelola VPS hosting untuk banyak domain, tantangan utama yang sering dihadapi adalah pengelolaan beban server, keamanan, dan performa. Misalnya, dalam sebuah kasus nyata di perusahaan kami, kami menghadapi masalah performa yang signifikan saat traffic meningkat secara tiba-tiba. Setiap domain harus dilayani dengan cepat, sementara juga harus mempertahankan keamanan tinggi dari serangan seperti brute force atau malware. Karena itu, kami memutuskan untuk melakukan Linux Hardening NGINX.

Pengenalan Arsitektur

Sebelum kita mulai, mari kita tinjau arsitektur yang akan kita gunakan. Kami menggunakan VPS yang menjalankan Ubuntu 22.04 LTS dengan NGINX sebagai web server dan PHP-FPM untuk memproses skrip PHP. Database menggunakan MariaDB. Kami juga akan menggunakan beberapa alat untuk pemantauan dan keamanan seperti fail2ban dan logwatch.

Langkah 1: Memperbarui Sistem

Pertama-tama, pastikan semua paket di sistem Anda diperbarui. Ini adalah langkah penting untuk memastikan bahwa Anda memiliki semua patch keamanan terbaru. Gunakan perintah berikut:

Advertisement
sudo apt update && sudo apt upgrade -y

Perintah ini melakukan dua hal: pertamanya, apt update meminta informasi terbaru dari repositori, dan keduanya apt upgrade -y akan menginstal semua pembaruan yang tersedia tanpa meminta konfirmasi. Menjalankan perintah ini secara teratur akan sangat membantu dalam menjaga keamanan sistem Anda.

Langkah 2: Mengonfigurasi Firewall dengan UFW

Setelah sistem diperbarui, kita perlu mengonfigurasi firewall. UFW (Uncomplicated Firewall) adalah alat yang bagus untuk memulai. Pertama, kita perlu mengaktifkan UFW dan menambahkan aturan untuk membolehkan trafik SSH dan HTTP/HTTPS:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable

Perintah di atas pertama-tama mengizinkan koneksi untuk SSH, yang penting untuk mengelola server secara remote, dan aturan kedua untuk mengizinkan trafik menuju NGINX. Setelah itu, kita mengaktifkan firewall dengan ufw enable.

Langkah 3: Menginstal dan Mengonfigurasi Fail2Ban

Fail2Ban adalah alat yang dapat membantu melindungi server dari serangan brute force dengan memblokir alamat IP yang gagal login setelah sejumlah percobaan tertentu. Instalasi dapat dilakukan dengan:

sudo apt install fail2ban

Setelah terinstal, kita perlu mengkonfigurasi fail2ban. Buat salinan konfigurasi default:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Selanjutnya, buka file konfigurasi tersebut dan ubah pengaturan sesuai kebutuhan Anda:

sudo nano /etc/fail2ban/jail.local

Cari bagian [sshd] dan ubah enabled menjadi true. Anda juga dapat menambahkan pengaturan untuk NGINX:

[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 3
bantime = 86400

Pengaturan ini akan memblokir alamat IP yang melakukan lebih dari 3 kali percobaan gagal dalam 24 jam.

Langkah 4: Mengoptimalkan Konfigurasi NGINX

Setelah keamanan dasar diterapkan, kita perlu memastikan bahwa NGINX dioptimalkan untuk performa. Pertama, kita akan mengubah pengaturan di /etc/nginx/nginx.conf:

worker_processes auto;
worker_connections 1024;

Dengan mengatur worker_processes ke auto, sistem akan menyesuaikan jumlah proses worker sesuai dengan jumlah core CPU tersedia, sementara worker_connections menentukan jumlah koneksi per proses worker.

Kemudian, tambahkan gzip compression untuk mempercepat pengiriman konten:

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

Dengan mengaktifkan gzip, kita bisa mengurangi ukuran data yang dikirim ke klien, sehingga mempercepat waktu loading.

Langkah 5: Mengatur PHP-FPM untuk Performa Optimal

Berikutnya, kita akan mengoptimalkan pengaturan PHP-FPM. Buka file konfigurasi PHP-FPM:

sudo nano /etc/php/7.4/fpm/pool.d/www.conf

Ubah pengaturan berikut:

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10

Pengaturan ini mengizinkan PHP-FPM untuk mengelola proses PHP dengan lebih efisien berdasarkan traffic yang meningkat. Anda dapat menyesuaikan pengaturan max_children berdasarkan sumber daya server Anda.

Langkah 6: Memantau Log dengan Journalctl dan Logwatch

Pemantauan log sangat penting dalam menjaga kesehatan server. Gunakan journalctl untuk melihat log sistem dan NGINX:

journalctl -u nginx.service

Selain itu, Anda dapat menggunakan Logwatch untuk mendapatkan ringkasan harian dari aktivitas server:

sudo apt install logwatch

Setelah instalasi, Anda dapat menjalankan Logwatch dengan:

logwatch --detail high --mailto your-email@example.com --range yesterday

Ini akan mengirimkan laporan via email dengan detail tinggi tentang aktivitas server kemarin.

Langkah 7: Implementasi Backup dan Restore

Kami tidak dapat membahas keamanan tanpa menyentuh backup. Skenario terburuk adalah ketika kita kehilangan data. Gunakan rsync untuk melakukan backup:

rsync -av --delete /var/www/html /path/to/backup/

Perintah ini akan mengcopy semua file dari direktori web dan melakukan sinkronisasi dengan lokasi backup. Opsi --delete memastikan bahwa file yang dihapus di sumber juga dihapus di backup.

Langkah 8: Tips Terakhir dan Kesalahan Umum

Saat mengonfigurasi server, ada beberapa kesalahan umum yang perlu dihindari:

  • Melebih-lebihkan batas max_children di PHP-FPM, yang dapat menyebabkan kehabisan memori.
  • Melupakan untuk mengamankan file konfigurasi seperti config.php dengan izin yang tepat.
  • Tidak memantau log secara teratur, yang dapat menyebabkan ketidakpastian di kemudian hari.

Secara umum, implementasi keamanan hardening ini adalah langkah penting untuk memastikan server produksi yang aman dan optimal. Dengan mengikuti langkah-langkah di atas, Anda meningkatkan ketahanan sistem dari serangan dan memastikan bahwa semua domain di server dapat berfungsi dengan baik meski di tengah lalu lintas yang padat.

Rekomendasi Sponsor