Daftar Isi
- 1 Memahami Tantangan Hosting Multidomain di Linux
- 2 Pengenalan Arsitektur
- 3 Langkah 1: Memperbarui Sistem
- 4 Langkah 2: Mengonfigurasi Firewall dengan UFW
- 5 Langkah 3: Menginstal dan Mengonfigurasi Fail2Ban
- 6 Langkah 4: Mengoptimalkan Konfigurasi NGINX
- 7 Langkah 5: Mengatur PHP-FPM untuk Performa Optimal
- 8 Langkah 6: Memantau Log dengan Journalctl dan Logwatch
- 9 Langkah 7: Implementasi Backup dan Restore
- 10 Langkah 8: Tips Terakhir dan Kesalahan Umum
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 hardening Linux pada server yang menjalankan NGINX dan PHP-FPM.
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:
sudo apt update && sudo apt upgrade -yPerintah 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 enablePerintah 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 fail2banSetelah terinstal, kita perlu mengkonfigurasi fail2ban. Buat salinan konfigurasi default:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localSelanjutnya, buka file konfigurasi tersebut dan ubah pengaturan sesuai kebutuhan Anda:
sudo nano /etc/fail2ban/jail.localCari 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 = 86400Pengaturan 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.confUbah pengaturan berikut:
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10Pengaturan 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.serviceSelain itu, Anda dapat menggunakan Logwatch untuk mendapatkan ringkasan harian dari aktivitas server:
sudo apt install logwatchSetelah instalasi, Anda dapat menjalankan Logwatch dengan:
logwatch --detail high --mailto your-email@example.com --range yesterdayIni 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.phpdengan 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.
Untuk memperdalam pemahaman Anda mengenai pengaturan server yang efektif, kami sarankan Anda membaca artikel “Linux Server untuk Infrastruktur Website Modern“.
