====== Modul 4: Network Security, Firewall (UFW/iptables), & SSH Hardening ======
[[:start|← Kembali ke Beranda]] | [[:materi_3|← Modul 3]]
===== Tujuan =====
* Memahami prinsip dasar keamanan jaringan dan ancaman umum.
* Mengonfigurasi firewall menggunakan UFW dan iptables.
* Mengamankan layanan SSH (hardening).
===== Dasar Teori =====
==== Prinsip CIA ====
^ Prinsip ^ Arti ^
| **Confidentiality** | Data hanya dapat diakses oleh pihak yang berwenang |
| **Integrity** | Data tidak berubah tanpa izin |
| **Availability** | Layanan tersedia saat dibutuhkan |
==== Ancaman Umum ====
^ Ancaman ^ Keterangan ^ Mitigasi ^
| Brute force | Menebak password berulang kali | Autentikasi kunci, batas percobaan, fail2ban |
| Port scanning | Mencari port/layanan yang terbuka | Firewall, tutup port yang tidak dipakai |
| DoS/DDoS | Membanjiri layanan hingga tidak bisa diakses | Rate limiting, firewall |
| Man-in-the-middle | Penyadapan atau pengubahan komunikasi | Enkripsi (SSH, HTTPS) |
==== Firewall ====
Firewall menyaring paket masuk dan keluar berdasarkan aturan (alamat, port, protokol). Prinsip yang disarankan: **default deny**, yaitu tolak semuanya, lalu izinkan hanya yang diperlukan.
* **iptables:** alat bawaan Linux untuk mengatur aturan paket (netfilter), fleksibel namun sintaksnya rumit.
* **UFW (Uncomplicated Firewall):** antarmuka sederhana di atas iptables, cocok untuk pemula.
===== Langkah Praktikum =====
==== A. Firewall dengan UFW ====
> **Peringatan:** izinkan port SSH **sebelum** mengaktifkan UFW agar tidak terkunci dari server.
sudo apt install ufw -y
# Kebijakan dasar
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Izinkan layanan yang dibutuhkan
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Aktifkan dan cek status
sudo ufw enable
sudo ufw status verbose
Perintah lain yang berguna:
sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp
sudo ufw limit 22/tcp
sudo ufw delete allow 80/tcp
sudo ufw status numbered
==== B. Firewall dengan iptables ====
Urutan penting: aturan **ACCEPT** dibuat dulu, kebijakan **DROP** dipasang terakhir.
# Izinkan koneksi yang sudah berjalan dan loopback
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
# Izinkan SSH dan Web
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Izinkan ping (opsional)
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# Terakhir: tolak semua selebihnya
sudo iptables -P INPUT DROP
# Lihat aturan
sudo iptables -L -n -v --line-numbers
Simpan agar permanen setelah reboot:
sudo apt install iptables-persistent -y
sudo netfilter-persistent save
> Gunakan **salah satu** (UFW atau iptables), jangan keduanya sekaligus agar aturan tidak bentrok.
==== C. SSH Hardening ====
**1. Buat kunci SSH di komputer klien dan salin ke server:**
ssh-keygen -t ed25519
ssh-copy-id user@192.168.1.10
**2. Pastikan login dengan kunci berhasil**, lalu edit ''/etc/ssh/sshd_config'' di server:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 30
AllowUsers user
**3. Periksa sintaks dan restart:**
sudo sshd -t
sudo systemctl restart ssh
> **Peringatan:** jangan tutup sesi SSH yang sedang aktif sebelum menguji login baru dari terminal lain. Jika konfigurasi salah, sesi lama masih bisa dipakai untuk memperbaikinya.
**Opsi tambahan:** mengganti port SSH (misalnya ''Port 2222'') mengurangi serangan otomatis, tetapi bukan pengamanan utama. Jika dipakai, izinkan port baru di firewall sebelum restart SSH.
**Proteksi brute force dengan fail2ban:**
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
===== Verifikasi =====
# Port yang terbuka di server
sudo ss -tulpn
# Pindai dari komputer lain (hanya port yang diizinkan boleh terbuka)
nmap 192.168.1.10
# Uji login SSH sebagai root (harus ditolak)
ssh root@192.168.1.10
# Lihat percobaan login gagal
sudo journalctl -u ssh | grep -i "failed"
===== Tugas =====
- Terapkan aturan firewall (UFW atau iptables) yang hanya mengizinkan SSH, HTTP, dan HTTPS.
- Pindai server dengan ''nmap'' sebelum dan sesudah firewall aktif, lalu bandingkan hasilnya.
- Aktifkan login SSH dengan kunci dan nonaktifkan login root serta password.
- Lampirkan tangkapan layar ''ufw status'' (atau ''iptables -L'') dan hasil percobaan login root yang ditolak.
===== Referensi =====
* Dokumentasi Ubuntu: UFW dan OpenSSH.
* Manual ''iptables'' dan ''sshd_config'' (''man iptables'', ''man sshd_config'').
----
//Modul ini merupakan bagian dari Knowledge Base Lab Komunikasi Data – Kelompok 10.//