SECURITY

Studi Kasus Infrastruktur

Server yang diamankan memiliki layanan:

  • Nginx (Web Server)
  • WordPress (3–4 Website)
  • MariaDB (Database)
  • Bind9 (DNS Server)
  • Mail Server (Postfix, Dovecot, OpenDKIM)

Server dengan banyak service dalam satu VPS memiliki attack surface yang besar, sehingga membutuhkan pendekatan keamanan berlapis (layered security), bukan hanya firewall dasar.

Tujuan Part 1:

  • Hardening sistem operasi Ubuntu 24
  • Pengamanan akses SSH
  • Konfigurasi firewall dan network security
  • Hardening service utama (Nginx, MariaDB, Mail, Bind9)
  • Fondasi monitoring dan logging keamanan

1. Update dan Patch Sistem (Langkah Wajib)

Sistem yang tidak diperbarui merupakan target utama eksploitasi karena kerentanan lama sering sudah diketahui publik.

Perbarui seluruh paket:

sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y

Aktifkan automatic security updates:

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure unattended-upgrades

Manfaat:

  • Patch kerentanan kernel
  • Update security patch otomatis
  • Mengurangi risiko zero-day exploit lama

2. Hardening Akses SSH (Keamanan Pintu Utama Server)

2.1 Nonaktifkan Login Root dan Password

Edit konfigurasi SSH:

sudo nano /etc/ssh/sshd_config

Ubah parameter berikut:

Port 8801
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Restart service SSH:

sudo systemctl restart ssh

Penjelasan:

  • Disable root login mencegah brute force langsung ke akun administrator
  • Disable password authentication mencegah serangan dictionary attack
  • Public key jauh lebih aman dibanding password

2.2 Gunakan SSH Key Authentication (Sangat Direkomendasikan)

Di komputer lokal:

ssh-keygen -t ed25519
ssh-copy-id -p 8801 user@IP_SERVER

Keuntungan:

  • Hampir mustahil di-bruteforce
  • Standar keamanan server produksi
  • Lebih aman untuk akses jarak jauh

3. Firewall dan Network Security (UFW)

Install UFW:

sudo apt install ufw -y

Konfigurasi default policy:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Buka hanya port yang diperlukan:

sudo ufw allow 8801/tcp   # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 25/tcp # SMTP
sudo ufw allow 587/tcp # Mail Submission
sudo ufw allow 993/tcp # IMAPS
sudo ufw allow 53 # DNS (Bind9)

Aktifkan firewall:

sudo ufw enable
sudo ufw status verbose

Catatan keamanan:
Port database (3306) sebaiknya tidak dibuka ke publik kecuali benar-benar diperlukan.


4. Audit dan Nonaktifkan Service yang Tidak Digunakan

Semakin sedikit service aktif, semakin kecil permukaan serangan.

Cek port terbuka:

ss -tulnp

Cek service aktif:

systemctl list-units --type=service --state=running

Nonaktifkan service yang tidak diperlukan:

sudo systemctl disable nama-service
sudo systemctl stop nama-service

5. Hardening Kernel dan Network Stack

Edit konfigurasi sysctl:

sudo nano /etc/sysctl.conf

Tambahkan konfigurasi berikut:

net.ipv4.tcp_syncookies = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

Terapkan konfigurasi:

sudo sysctl -p

Fungsi:

  • Mitigasi SYN flood attack
  • Perlindungan terhadap IP spoofing
  • Mengurangi risiko network reconnaissance

6. Hardening MariaDB (Database Security)

Edit konfigurasi MariaDB:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Pastikan binding hanya lokal:

bind-address = 127.0.0.1

Jalankan secure installation:

sudo mysql_secure_installation

Rekomendasi pengamanan:

  • Hapus anonymous user
  • Nonaktifkan remote root login
  • Hapus test database
  • Gunakan password kuat untuk root database

Alasan:
Database adalah target utama pencurian data dan privilege escalation.


7. Hardening Nginx (Web Server Security)

Edit konfigurasi utama:

sudo nano /etc/nginx/nginx.conf

Tambahkan:

server_tokens off;
client_max_body_size 20M;

Tambahkan security headers di setiap server block:

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "no-referrer-when-downgrade";

Manfaat:

  • Mengurangi fingerprinting server
  • Mitigasi clickjacking
  • Perlindungan dasar terhadap XSS dan MIME sniffing

8. Hardening Mail Server (Postfix, Dovecot, OpenDKIM)

Edit konfigurasi Postfix:

sudo nano /etc/postfix/main.cf

Pastikan konfigurasi berikut:

smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination

Tujuan:

  • Mencegah open relay
  • Menghindari penyalahgunaan server untuk spam
  • Meningkatkan reputasi IP mail server

9. Hardening Bind9 (DNS Security)

Edit konfigurasi:

sudo nano /etc/bind/named.conf.options

Tambahkan:

recursion no;
allow-transfer { none; };
version "not disclosed";

Penjelasan:

  • Mencegah DNS amplification attack
  • Menyembunyikan versi Bind9 dari attacker
  • Mencegah zone transfer ilegal

10. Install Fail2Ban (Anti Brute Force Protection)

Install Fail2Ban:

sudo apt install fail2ban -y

Buat konfigurasi lokal:

sudo nano /etc/fail2ban/jail.local

Contoh konfigurasi dasar:

[sshd]
enabled = true
port = 8801
maxretry = 5
bantime = 1h

Restart Fail2Ban:

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

Fungsi:

  • Blokir otomatis brute force SSH
  • Proteksi login attack WordPress
  • Proteksi layanan mail dari login abuse

11. Logging dan Audit Security

Install audit daemon:

sudo apt install auditd -y
sudo systemctl enable auditd
sudo systemctl start auditd

Lokasi log penting:

/var/log/auth.log
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/mail.log

Manfaat logging:

  • Deteksi aktivitas mencurigakan
  • Investigasi insiden keamanan
  • Monitoring percobaan login ilegal

12. Praktik Keamanan Tambahan yang Direkomendasikan

Beberapa praktik profesional yang sering diabaikan pemula:

  1. Gunakan user non-root untuk operasional server
  2. Backup database harian (mysqldump atau backup otomatis)
  3. Gunakan SSL/TLS untuk semua website (HTTPS wajib)
  4. Batasi permission file WordPress (chmod dan chown yang benar)
  5. Pisahkan network service jika memungkinkan (frontend dan backend)
  6. Gunakan password kuat dan unik untuk setiap service
  7. Monitor penggunaan resource dan trafik server secara berkala

Kesimpulan Part 1

Setelah seluruh hardening di atas diterapkan, server akan memiliki peningkatan keamanan signifikan:

  • Lebih tahan terhadap brute force attack
  • Risiko exploit service berkurang
  • Database tidak terekspos publik
  • Mail server tidak menjadi open relay
  • DNS lebih aman dari abuse
  • Fondasi siap untuk implementasi IDS/IPS dan WAF pada tahap lanjutan

Part 1 ini merupakan fondasi keamanan wajib sebelum masuk ke tingkat lanjutan seperti Intrusion Detection System (Snort/Suricata), Web Application Firewall (ModSecurity), dan Security Monitoring terpusat yang akan dibahas pada Part 2.

Pada tahap ini kita akan membahas:

  1. Konsep IDS vs IPS
  2. Implementasi Snort atau Suricata
  3. Integrasi dengan firewalld (auto blocking)
  4. Web Application Firewall (ModSecurity untuk Nginx)
  5. Malware scanning
  6. Monitoring dan alerting real-time
  7. Rekomendasi arsitektur keamanan untuk VPS 1–2 GB RAM

— Advanced Security & Intrusion Detection

1. Memahami IDS dan IPS

Sebelum instalasi, penting memahami konsepnya.

IDS (Intrusion Detection System)

  • Mendeteksi aktivitas mencurigakan
  • Mengirim alert
  • Tidak langsung memblokir

IPS (Intrusion Prevention System)

  • Mendeteksi
  • Langsung memblokir serangan

Snort dan Suricata bisa berjalan dalam mode IDS maupun IPS.

Untuk VPS kecil (1–2 GB RAM), Suricata biasanya lebih stabil dan modern dibanding Snort versi lama.


2. Rekomendasi: Gunakan Suricata (Lebih Modern dari Snort)

Walaupun kamu menyebut Snort, secara praktik produksi saat ini banyak administrator beralih ke Suricata karena:

  • Multi-threaded (lebih efisien CPU)
  • Lebih aktif dikembangkan
  • Integrasi firewall lebih mudah

Install Suricata:

sudo apt update
sudo apt install suricata -y

Cek interface jaringan:

ip a

Biasanya:

  • eth0
  • ens3

Edit konfigurasi:

sudo nano /etc/suricata/suricata.yaml

Cari bagian:

af-packet:

Sesuaikan interface dengan milikmu:

- interface: eth0

3. Aktifkan Mode IPS (Inline dengan NFQUEUE)

Agar Suricata bisa memblokir trafik, gunakan mode NFQUEUE.

Edit suricata.yaml dan pastikan:

nfqueue:
- id: 0
accept-mark: 1
repeat-mark: 1

Kemudian hubungkan dengan firewalld.

Tambahkan rule iptables (yang dipakai firewalld di backend):

sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -j NFQUEUE --queue-num 0
sudo firewall-cmd --runtime-to-permanent

Restart Suricata:

sudo systemctl restart suricata
sudo systemctl enable suricata

Sekarang Suricata bisa menjadi IPS (bukan hanya IDS).


4. Update Rule Deteksi (Sangat Penting)

Rule default terlalu minim.

Gunakan Emerging Threats rule:

sudo suricata-update

Restart:

sudo systemctl restart suricata

Log alert bisa dilihat di:

/var/log/suricata/fast.log

5. Integrasi Alert Otomatis (Security Alerting)

Kita bisa buat sistem notifikasi sederhana.

Contoh monitoring alert real-time:

tail -f /var/log/suricata/fast.log

Untuk alert otomatis via email, bisa buat script sederhana:

sudo nano /usr/local/bin/suricata-alert.sh

Isi contoh:

#!/bin/bash
tail -Fn0 /var/log/suricata/fast.log | \
while read line ; do
echo "$line" | mail -s "SURICATA ALERT" admin@domain.com
done

Buat executable:

sudo chmod +x /usr/local/bin/suricata-alert.sh

Jalankan via systemd service agar selalu aktif.


6. Web Application Firewall (ModSecurity untuk Nginx)

Karena kamu menjalankan WordPress, ini sangat penting.

Install:

sudo apt install libnginx-mod-http-modsecurity -y

Aktifkan modul:

sudo nano /etc/nginx/nginx.conf

Tambahkan di dalam http block:

modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;

Install OWASP Core Rule Set:

sudo apt install modsecurity-crs -y

Aktifkan rule OWASP untuk:

  • SQL Injection
  • XSS
  • Remote File Inclusion
  • WordPress exploit

Restart Nginx:

sudo systemctl restart nginx

7. Malware Scanner (Tambahan Penting untuk WordPress)

Install ClamAV:

sudo apt install clamav clamav-daemon -y
sudo freshclam

Scan manual:

clamscan -r /var/www/

Untuk scan otomatis harian, gunakan cron.


8. Hardening Tambahan Firewalld

Cek zone aktif:

sudo firewall-cmd --get-active-zones

Pastikan hanya service yang diperlukan:

sudo firewall-cmd --list-all

Batasi rate SSH:

sudo firewall-cmd --permanent --add-rich-rule='rule service name="ssh" limit value="5/m" accept'
sudo firewall-cmd --reload

Ini membatasi percobaan login berlebihan.


9. Monitoring Profesional (Level Lebih Tinggi)

Jika ingin lebih serius, pertimbangkan:

  • Wazuh (SIEM + IDS)
  • Grafana + Prometheus
  • Centralized log server
  • Fail2Ban terintegrasi dengan Suricata

Namun untuk VPS kecil, Suricata + Fail2Ban + ModSecurity sudah cukup kuat.


10. Rekomendasi Arsitektur Aman untuk 1 VPS

Karena semua service ada di satu server:

Idealnya:

  • Database bind ke localhost
  • DNS recursion dimatikan
  • Mail server tidak open relay
  • IDS aktif
  • WAF aktif
  • Fail2Ban aktif
  • Backup otomatis

Untuk skala lebih besar:
Pisahkan menjadi:

  • Server Web
  • Server Mail
  • Server DNS
  • Server Database

Namun untuk pembelajaran, satu VPS masih wajar.


Setelah Part 2 Server Kamu Akan:

  • Memiliki IDS/IPS aktif
  • Bisa mendeteksi dan memblokir serangan otomatis
  • Memiliki Web Application Firewall untuk WordPress
  • Memiliki malware scanning
  • Memiliki alert keamanan real-time
  • Lebih tahan terhadap exploit massal bot internet

Kalau kamu mau, Part 3 bisa masuk ke:

  • Advanced log centralization
  • Honeypot untuk jebak attacker
  • Automatic IP blacklist global
  • Integrasi dengan Cloudflare
  • Security hardening khusus WordPress (file permission, wp-config lockdown)
  • Email reputation protection (SPF, DKIM, DMARC detail)

Part ini masuk level semi-profesional (mendekati praktik production security). Fokusnya bukan hanya “mencegah serangan”, tapi juga:

  • Mendeteksi anomali lebih cepat
  • Mengumpulkan log terpusat
  • Menjebak attacker (honeypot)
  • Otomatis blacklist IP berbahaya
  • Hardening khusus WordPress dan Mail Server

Semua tetap disesuaikan untuk VPS tunggal yang menjalankan:
Nginx + WordPress + MariaDB + Bind9 + Postfix + Dovecot + OpenDKIM + Suricata + Firewalld.


— Advanced Security Monitoring & Defensive Architecture

1. Centralized Logging (Fondasi Monitoring Profesional)

Server tanpa log terpusat = buta terhadap serangan.

Minimal log yang wajib dimonitor:

  • /var/log/auth.log (login & SSH)
  • /var/log/nginx/access.log
  • /var/log/nginx/error.log
  • /var/log/mail.log
  • /var/log/suricata/fast.log
  • /var/log/fail2ban.log

1.1 Install Rsyslog (Jika belum aktif penuh)

sudo apt install rsyslog -y
sudo systemctl enable rsyslog
sudo systemctl start rsyslog

1.2 Pisahkan Log Berdasarkan Service (Best Practice)

Buat direktori log khusus:

sudo mkdir -p /var/log/security

Edit konfigurasi rsyslog:

sudo nano /etc/rsyslog.d/50-security.conf

Contoh konfigurasi:

if $programname == 'sshd' then /var/log/security/ssh.log
if $programname == 'nginx' then /var/log/security/nginx.log
if $programname == 'postfix' then /var/log/security/mail.log
& stop

Restart:

sudo systemctl restart rsyslog

Manfaat:

  • Investigasi insiden lebih cepat
  • Log tidak bercampur
  • Monitoring lebih terstruktur

2. Log Monitoring Otomatis (Logwatch)

Install Logwatch:

sudo apt install logwatch -y

Jalankan laporan harian manual:

sudo logwatch --detail high --mailto admin@domain.com --range today

Atur otomatis via cron:

sudo nano /etc/cron.daily/00logwatch

Logwatch akan mengirim ringkasan:

  • Failed SSH login
  • Suspicious activity
  • Service error
  • Attack pattern dasar

3. SIEM Ringan (Wazuh Agent — Level Enterprise Monitoring)

Jika ingin monitoring tingkat enterprise namun masih di 1 VPS, gunakan Wazuh agent (ringan).

Install dependencies:

sudo apt install curl apt-transport-https unzip -y

Install Wazuh Agent:

curl -s https://packages.wazuh.com/4.x/apt/install.sh | sudo bash
sudo apt install wazuh-agent -y

Fungsi Wazuh:

  • File integrity monitoring
  • Rootkit detection
  • Log correlation
  • Intrusion detection tambahan
  • Compliance monitoring (PCI, CIS benchmark)

Catatan:
Jika RAM < 2 GB, gunakan hanya agent tanpa server Wazuh lokal.


4. Honeypot (Menjebak Attacker & Scanner Bot)

Honeypot sangat efektif untuk:

  • Mendeteksi scanner bot internet
  • Mengumpulkan IP attacker
  • Menambah threat intelligence

Rekomendasi ringan: Cowrie (SSH Honeypot)

Install dependency:

sudo apt install git python3-venv python3-pip -y

Install Cowrie:

cd /opt
sudo git clone https://github.com/cowrie/cowrie.git
cd cowrie
sudo python3 -m venv cowrie-env
source cowrie-env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Jalankan honeypot:

bin/cowrie start

Best practice:

  • Jalankan honeypot di port SSH palsu (misal 2222)
  • SSH asli tetap di port custom (misal 8801)

5. Automatic IP Blacklist (Threat Intelligence Integration)

Gunakan ipset + firewalld untuk block IP berbahaya global.

Install ipset:

sudo apt install ipset -y

Buat blacklist set:

sudo ipset create blacklist hash:ip

Integrasi dengan firewalld:

sudo firewall-cmd --permanent --new-ipset=blacklist --type=hash:ip
sudo firewall-cmd --permanent --add-rich-rule='rule source ipset=blacklist drop'
sudo firewall-cmd --reload

Contoh block IP manual:

sudo firewall-cmd --permanent --ipset=blacklist --add-entry=1.2.3.4
sudo firewall-cmd --reload

Ini memungkinkan:

  • Block attacker otomatis
  • Integrasi dengan Suricata alert
  • Skalabilitas blacklist besar

6. File Integrity Monitoring (Deteksi Malware & Backdoor)

Install AIDE:

sudo apt install aide -y
sudo aideinit

Cek perubahan file sistem:

sudo aide --check

Sangat penting untuk WordPress karena:

  • Banyak malware inject file PHP tersembunyi
  • Backdoor sering disisipkan di theme/plugin

7. Hardening Khusus WordPress (Critical Layer)

Karena WordPress adalah target utama bot internet.

7.1 Permission File yang Aman

sudo find /var/www/ -type d -exec chmod 755 {} \;
sudo find /var/www/ -type f -exec chmod 644 {} \;

wp-config.php (lebih ketat):

chmod 600 /var/www/site/wp-config.php

7.2 Disable File Editing di Dashboard

Edit wp-config.php:

define('DISALLOW_FILE_EDIT', true);

7.3 Proteksi wp-admin dengan Nginx

Tambahkan:

location /wp-admin {
allow IP_KAMU;
deny all;
}

Atau gunakan basic auth untuk lapisan tambahan.


8. Advanced Mail Server Security (Postfix + Dovecot + OpenDKIM)

8.1 Aktifkan SPF, DKIM, dan DMARC (Wajib Produksi)

DNS Record:

TXT v=spf1 mx a ip4:IP_SERVER ~all

DKIM: sudah menggunakan OpenDKIM (pastikan signing aktif)

DMARC:

v=DMARC1; p=quarantine; rua=mailto:admin@domain.com

Manfaat:

  • Mencegah spoofing email
  • Meningkatkan reputasi IP
  • Menghindari blacklist mail server

8.2 Proteksi Brute Force Mail (Fail2Ban Jail)

Tambahkan di jail.local:

[postfix]
enabled = true[dovecot]
enabled = true

9. Backup Otomatis (Security = Recovery Capability)

Backup database harian:

crontab -e

Contoh:

0 2 * * * mysqldump -u root -pPASSWORD --all-databases > /backup/db-$(date +\%F).sql

Backup konfigurasi penting:

  • /etc/nginx
  • /etc/postfix
  • /etc/dovecot
  • /etc/bind
  • /var/www

Ideal:
Backup ke storage eksternal (object storage atau server lain).


10. Security Benchmark & Audit (Level Profesional)

Install Lynis (security auditing tool):

sudo apt install lynis -y
sudo lynis audit system

Lynis akan:

  • Memberi skor keamanan server
  • Menunjukkan misconfiguration
  • Memberi rekomendasi hardening tambahan

Digunakan oleh banyak administrator Linux dan auditor keamanan.


Arsitektur Keamanan Final (Setelah Part 1–3)

Lapisan keamanan server kamu menjadi:

Layer 1: Firewalld (Network Filtering)
Layer 2: Fail2Ban (Brute Force Protection)
Layer 3: Suricata IDS/IPS (Intrusion Detection & Prevention)
Layer 4: ModSecurity WAF (Web Protection WordPress)
Layer 5: AIDE (File Integrity Monitoring)
Layer 6: Logwatch + Rsyslog (Monitoring & Alerting)
Layer 7: Backup System (Disaster Recovery)
Layer 8: Mail Security (SPF, DKIM, DMARC)


Hasil Setelah Part 3 (Security Posture)

Server akan:

  • Mendeteksi serangan secara real-time
  • Memiliki log keamanan terpusat
  • Memblokir attacker otomatis
  • Melindungi WordPress dari exploit massal
  • Mendeteksi perubahan file berbahaya
  • Memiliki sistem audit keamanan berkala
  • Siap digunakan untuk environment production skala kecil–menengah

Jika kamu lanjut ke Part 4 (Ultra Hardening), kita bisa masuk ke:

  • Kernel hardening (AppArmor/SELinux tuning)
  • Chroot jail untuk service (Bind9, Nginx)
  • Isolasi service dengan container security
  • Zero Trust SSH (Port knocking + 2FA)
  • Threat hunting manual (analisis log attacker nyata)
  • Integrasi dengan reverse proxy protection seperti Cloudflare untuk perlindungan DDoS dan WAF eksternal

TERBARU CEK DIBAWAH !!!