Server

Panduan Lengkap Mengamankan Server Linux VPS dari Serangan Siber 2026

Server VPS yang tidak diamankan dengan benar adalah target empuk bagi penyerang. Setiap hari, ribuan bot memindai port SSH, mencoba password lemah, dan mengeksploitasi kerentanan software. Artikel ini membahas langkah-langkah konkret untuk mengamankan server Linux VPS kamu dari serangan siber, mulai dari hardening SSH hingga monitoring real-time.

Mengapa Keamanan VPS Sangat Penting

Sebelum masuk ke teknis, pahami risikonya. Server VPS yang baru diinstall biasanya memiliki:

  • SSH port 22 terbuka dengan password authentication aktif
  • Firewall belum dikonfigurasi atau bahkan mati total
  • User root bisa login langsung tanpa batasan
  • Software default dengan konfigurasi yang tidak aman
  • Update otomatis tidak aktif, sehingga patch keamanan tidak terpasang

Serangan brute-force SSH bisa mencoba ribuan kombinasi password per menit. Tanpa proteksi, server kamu bisa terkompromi dalam hitungan jam.

Langkah 1 - Konfigurasi SSH yang Aman

SSH adalah pintu utama akses server. Konfigurasi SSH yang buruk adalah celah keamanan paling umum yang dieksploitasi penyerang.

Nonaktifkan Login Root via SSH

Langkah pertama yang harus dilakukan adalah mencegah login root langsung. Buat user baru dan gunakan sudo untuk akses administratif:


# Buat user baru
adduser deployer
usermod -aG sudo deployer

# Copy SSH key ke user baru
rsync --archive --chown=deployer:deployer ~/.ssh /home/deployer

Edit konfigurasi SSH untuk menonaktifkan login root:


sudo nano /etc/ssh/sshd_config

Ubah parameter berikut:


PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers deployer

Restart SSH service setelah perubahan:


sudo systemctl restart sshd

Dengan konfigurasi ini, hanya user deployer yang bisa login, hanya menggunakan SSH key, dan session akan otomatis disconnect setelah 10 menit tidak aktif.

Langkah 2 - Setup Firewall dengan UFW

UFW (Uncomplicated Firewall) adalah frontend yang memudahkan konfigurasi iptables. Prinsip dasarnya: blokir semua traffic masuk, buka hanya port yang dibutuhkan.


# Install UFW jika belum ada
sudo apt install ufw -y

# Set default policy
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Buka port yang dibutuhkan
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'

# Aktifkan firewall
sudo ufw enable

# Cek status
sudo ufw status verbose

Output dari ufw status akan terlihat seperti ini:


Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere      # SSH
80/tcp                     ALLOW IN    Anywhere      # HTTP
443/tcp                    ALLOW IN    Anywhere      # HTTPS

Jika kamu menjalankan database server, jangan buka port database ke internet. Gunakan SSH tunnel untuk akses remote database.

Langkah 3 - Install dan Konfigurasi Fail2Ban

Fail2Ban memantau log file dan secara otomatis memblokir IP yang melakukan percobaan login gagal berulang. Ini adalah pertahanan penting melawan brute-force attack.


# Install Fail2Ban
sudo apt install fail2ban -y

# Buat konfigurasi lokal (jangan edit file asli)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

sudo nano /etc/fail2ban/jail.local

Konfigurasi yang direkomendasikan:


[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
banaction = ufw

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400

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

Aktifkan dan mulai Fail2Ban:


sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# Cek status banned IPs
sudo fail2ban-client status sshd

Dengan konfigurasi ini, IP yang gagal login SSH 3 kali dalam 10 menit akan diblokir selama 24 jam penuh.

Langkah 4 - Automatic Security Updates

Kerentanan software baru ditemukan setiap hari. Patch keamanan harus segera diterapkan tanpa menunggu update manual.


# Install unattended-upgrades
sudo apt install unattended-upgrades -y

# Aktifkan auto-update keamanan
sudo dpkg-reconfigure -plow unattended-upgrades

Untuk konfigurasi lebih detail, edit file berikut:


sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Tambahkan konfigurasi agar reboot otomatis jika diperlukan:


Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
Unattended-Upgrade::Remove-Unused-Dependencies "true";

Verifikasi bahwa auto-update aktif:


sudo systemctl status unattended-upgrades
cat /var/log/unattended-upgrades/unattended-upgrades.log

Langkah 5 - Secure Nginx Configuration

Nginx yang tidak dikonfigurasi dengan benar bisa membocorkan informasi server atau rentan terhadap serangan.

Tambahkan header keamanan di konfigurasi Nginx:


server {
    listen 443 ssl http2;
    server_name example.com;

    # Header keamanan
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';" always;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    # Sembunyikan versi Nginx
    server_tokens off;

    # Limit request body size
    client_max_body_size 10M;

    # Rate limiting
    limit_req_zone $binary_remote_addr zone=general:10m rate=10r/s;
}

Nonaktifkan HTTP dan paksa redirect ke HTTPS:


server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}

Restart Nginx setelah konfigurasi:


sudo nginx -t
sudo systemctl restart nginx

Langkah 6 - Monitoring dan Logging

Keamanan tanpa monitoring ibarat memasang pintu tapi tidak pernah melihat siapa yang mencoba masuk. Setup logging dan monitoring yang memadai.

Konfigurasi Log Rotation

Pastikan log tidak memenuhi disk dan tetap tersimpan untuk audit:


sudo nano /etc/logrotate.d/custom-logs

/var/log/auth.log {
    weekly
    rotate 12
    compress
    delaycompress
    missingok
    notifempty
}

Monitor Login Attempts

Buat script sederhana untuk memantau percobaan login:


#!/bin/bash
# /usr/local/bin/check-logins.sh

echo "=== Failed SSH logins today ==="
grep "Failed password" /var/log/auth.log |     grep "$(date +%b\ %d)" |     awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -20

echo ""
echo "=== Successful logins today ==="
grep "Accepted" /var/log/auth.log |     grep "$(date +%b\ %d)"

Tambahkan cron job untuk menjalankan monitoring setiap jam:


chmod +x /usr/local/bin/check-logins.sh
echo "0 * * * * /usr/local/bin/check-logins.sh >> /var/log/login-monitor.log" | sudo crontab -

Langkah 7 - Scan Rootkit dan Malware

Install tool untuk scan rootkit dan malware secara berkala:


# Install rkhunter dan chkrootkit
sudo apt install rkhunter chkrootkit -y

# Update database rkhunter
sudo rkhunter --update
sudo rkhunter --propupd

# Jalankan scan
sudo rkhunter --check --sk

Jadwalkan scan otomatis setiap minggu:


echo "0 2 * * 0 /usr/bin/rkhunter --check --sk --report-warnings-only | mail -s 'RKHunter Report' [email protected]" | sudo crontab -

Langkah 8 - Secure File Permissions

Permission file yang salah bisa memungkinkan penyerang membaca sensitive data atau mengubah konfigurasi.


# Set permission yang benar untuk direktori home
chmod 700 /home/deployer
chmod 700 /home/deployer/.ssh
chmod 600 /home/deployer/.ssh/authorized_keys

# Set ownership yang benar
chown -R deployer:deployer /home/deployer

# Cek file world-writable yang mencurigakan
find / -type f -perm -o+w -not -path "/proc/*" -not -path "/sys/*" 2>/dev/null

# Cek file SUID yang tidak biasa
find / -type f -perm -4000 -not -path "/proc/*" 2>/dev/null

Langkah 9 - Network Security Hardening

Konfigurasi kernel parameters untuk meningkatkan keamanan jaringan:


sudo nano /etc/sysctl.d/99-security.conf

# Disable IP forwarding
net.ipv4.ip_forward = 0

# Disable ICMP redirect
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

# Enable SYN flood protection
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2

# Ignore ICMP broadcast
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Disable source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# Log martian packets
net.ipv4.conf.all.log_martians = 1

Terapkan perubahan:


sudo sysctl -p /etc/sysctl.d/99-security.conf

Langkah 10 - Backup Strategy

Keamanan terbaik sekalipun tidak menjamin 100% aman. Backup adalah jaring pengaman terakhir.


#!/bin/bash
# /usr/local/bin/backup-server.sh

BACKUP_DIR="/backup/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR

# Backup website files
tar -czf $BACKUP_DIR/webfiles.tar.gz /var/www/html/

# Backup database
mysqldump -u appuser -p'PasswordKuat123!' --all-databases > $BACKUP_DIR/databases.sql

# Backup konfigurasi
tar -czf $BACKUP_DIR/configs.tar.gz /etc/nginx/ /etc/php/ /etc/ssh/

# Hapus backup lebih dari 30 hari
find /backup -type d -mtime +30 -exec rm -rf {} +

echo "Backup completed: $BACKUP_DIR"

Jadwalkan backup harian:


chmod +x /usr/local/bin/backup-server.sh
echo "0 4 * * * /usr/local/bin/backup-server.sh >> /var/log/backup.log 2>&1" | sudo crontab -

Kesimpulan

Mengamankan server VPS bukan tugas satu kali, tapi proses berkelanjutan. Sepuluh langkah di atas memberikan fondasi keamanan yang solid:

  1. Konfigurasi SSH yang aman dengan key-based authentication
  2. Firewall UFW yang memblokir traffic tidak perlu
  3. Fail2Ban untuk mencegah brute-force attack
  4. Automatic security updates agar patch selalu terbaru
  5. Nginx headers untuk proteksi aplikasi web
  6. Monitoring dan logging untuk deteksi dini
  7. Scan rootkit dan malware secara berkala
  8. File permissions yang ketat
  9. Network hardening melalui sysctl
  10. Backup strategy sebagai jaring pengaman

Jalankan semua langkah ini secara berkala dan monitor log server kamu. Keamanan VPS yang baik adalah investasi yang jauh lebih murah dibanding menangani akibat dari serangan yang berhasil.


You may also like


0 Comments


Leave a Reply

Comments with links or spam keywords will be rejected.
Scroll to Top