Pengaturan firewall di Linux umumnya menggunakan iptables atau firewalld (di distribusi modern seperti CentOS/RHEL) atau ufw (di Ubuntu). Untuk penggunaan tingkat expert, biasanya fokus pada keamanan, pengaturan granular, dan pengendalian lalu lintas dengan aturan yang ketat. Berikut adalah panduan umum:
1. Menggunakan iptables untuk Firewall
Dasar Perintah iptables
Melihat aturan firewall aktif:
iptables -L -v -n
-L: Menampilkan aturan yang aktif.
-v: Menampilkan detail (seperti byte/packet).
-n: Menampilkan IP tanpa memetakan ke nama host.
Flush (hapus semua aturan):
iptables -F
Mengatur kebijakan default:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
INPUT: Lalu lintas masuk.
FORWARD: Lalu lintas melewati server.
OUTPUT: Lalu lintas keluar.
Aturan iptables Umum
a. Mengizinkan SSH
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Mengizinkan koneksi SSH pada port 22.
b. Mengizinkan HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Mengizinkan akses web server untuk HTTP (port 80) dan HTTPS (port 443).
c. Mengizinkan Ping
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
d. Membatasi Koneksi dari IP Tertentu
iptables -A INPUT -s 192.168.1.100 -j DROP
Memblokir IP spesifik (192.168.1.100).
e. Membatasi Rate Koneksi
iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/minute --limit-burst 5 -j ACCEPT
Membatasi koneksi SSH menjadi maksimal 3 koneksi per menit.
f. NAT (Masquerading untuk Router)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Mengaktifkan NAT pada antarmuka eth0.
2. Menggunakan Firewalld
Firewalld adalah firewall berbasis zona yang lebih modern dan digunakan di distribusi seperti CentOS/RHEL.
Dasar Perintah Firewalld
Melihat status:
firewall-cmd --state
Melihat aturan aktif:
firewall-cmd --list-all
Membuka port:
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
Reload aturan:
firewall-cmd --reload
3. Menggunakan UFW (Uncomplicated Firewall)
UFW biasanya digunakan di Ubuntu dan mempermudah pengaturan firewall.
Dasar Perintah UFW
Melihat status:
ufw status
Mengizinkan layanan atau port:
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
Menolak koneksi:
ufw deny 22/tcp
Aktifkan UFW:
ufw enable
4. Contoh Konfigurasi Tingkat Lanjut
Firewall untuk Server Web dengan Load Balancer
Iptables:
iptables -A INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP
Mengizinkan akses HTTP/HTTPS hanya dari jaringan lokal.
Firewalld:
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="80" protocol="tcp" accept' --permanent
firewall-cmd --reload
5. Debugging Firewall
Melihat log iptables: Tambahkan aturan logging:
iptables -A INPUT -j LOG --log-prefix "IPTABLES DROPPED: " --log-level 4
Log dapat dilihat di /var/log/messages atau /var/log/syslog.
Memantau koneksi aktif:
netstat -anp | grep <port>
Memeriksa aturan NAT:
iptables -t nat -L -v -n
6. Kesimpulan
Gunakan iptables untuk kontrol granular dan custom firewall rules.
Gunakan firewalld jika bekerja dengan zona jaringan yang lebih kompleks.
Gunakan ufw untuk konfigurasi firewall yang lebih sederhana dan cepat.
Dengan pengaturan ini, server Linux Anda bisa lebih aman dan efisien! 🚀