====== 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.//