Skip to main content
๐Ÿš€ nusa.id cloud server linux indonesialihat paket

Diagnostik Masalah Firewall di Linux

ยท 5 min read

Koneksi SSH tiba-tiba terputus setelah menjalankan perintah tertentu. Aplikasi web merespon Connection timed out dari browser. API tidak bisa dijangkau oleh klien eksternal.

Jika Anda mengalami gejala ini, kemungkinan penyebabnya adalah aturan firewall yang memblokir lalu lintas yang diperlukan. Firewall adalah lapisan keamanan penting, tetapi konfigurasi yang salah bisa mengisolasi server Anda. Panduan ini membantu Anda mendiagnosis dan memperbaiki masalah koneksi yang terkait firewall.

Gejala Umumโ€‹

Beberapa tanda bahwa firewall mungkin menjadi penyebab masalah koneksi:

  • Koneksi SSH ditolak setelah mengaktifkan atau mengubah aturan firewall.
  • Port tertentu tidak bisa diakses dari luar, meskipun layanan sudah berjalan.
  • Aplikasi web merespon Connection refused sementara curl localhost dari dalam server berhasil.
  • Koneksi keluar terblokir โ€” server tidak bisa menjangkau repositori atau API eksternal.
  • Koneksi hanya berfungsi dari dalam server tetapi gagal dari jaringan lain.

Periksa Status Firewallโ€‹

Langkah pertama adalah mengidentifikasi apakah firewall aktif dan aturan apa yang sedang diterapkan.

UFW (Uncomplicated Firewall)โ€‹

UFW adalah frontend untuk iptables yang default di Ubuntu.

sudo ufw status verbose

Output yang menampilkan Status: active menandakan UFW sedang berjalan. Perhatikan daftar aturan yang tertera โ€” pastikan port yang Anda butuhkan (misalnya 22 untuk SSH, 80 untuk HTTP, 443 untuk HTTPS) berada dalam daftar ALLOW.

Jika output menampilkan Status: inactive, firewall UFW tidak aktif dan bukan penyebab masalah.

iptables / nftablesโ€‹

Untuk melihat aturan firewall mentah di kernel:

sudo iptables -L -n -v

Output:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0

Perhatikan policy setiap chain. Jika policy sebuah chain adalah DROP, semua lalu lintas yang tidak cocok dengan aturan akan diblokir. Jika ada aturan DROP atau REJECT yang tidak sesuai, itulah penyebabnya.

Pada system yang menggunakan nftables (default di beberapa distribusi modern), gunakan:

sudo nft list ruleset

firewalld (Rocky Linux / AlmaLinux)โ€‹

sudo firewall-cmd --list-all

Output menampilkan daftar service dan port yang diizinkan di zona default. Jika port yang diperlukan tidak terdaftar, firewall sedang memblokir koneksi pada port tersebut.

Langkah Diagnostikโ€‹

1. Uji Koneksi dari Dalam Serverโ€‹

Gunakan curl atau telnet dari dalam server untuk memverifikasi bahwa layanan berjalan:

curl -v http://localhost:80
telnet localhost 22

Jika koneksi dari localhost berhasil tetapi dari luar gagal, kemungkinan besar firewall adalah penyebabnya.

2. Uji Koneksi dari Luarโ€‹

Dari mesin lain, coba akses server menggunakan nc atau telnet:

nc -zv 203.0.113.10 22
telnet 203.0.113.10 443

Jika koneksi gagal (Connection refused vs Connection timed out):

  • Connection refused โ€” Layanan tidak berjalan, bukan firewall.
  • Connection timed out โ€” Firewall memblokir koneksi, atau ada routing yang salah.

3. Periksa Log Firewallโ€‹

UFW mencatat paket yang diblokir jika logging diaktifkan:

sudo ufw logging on
sudo tail -f /var/log/ufw.log

Untuk iptables, log biasanya muncul di /var/log/kern.log atau /var/log/messages:

sudo grep "DROP" /var/log/kern.log | tail -20

4. Nonaktifkan Firewall Sementara untuk Uji Cobaโ€‹

โš ๏ธ Peringatan: Nonaktifkan firewall hanya untuk diagnosis. Jangan biarkan server tanpa firewall di lingkungan produksi.

# UFW
sudo ufw disable

# firewalld
sudo systemctl stop firewalld

Setelah firewall dinonaktifkan, uji kembali koneksi dari luar. Jika koneksi berhasil, maka firewall adalah penyebab masalah.

Perbaikan Umumโ€‹

Izinkan Port yang Diblokirโ€‹

Tambahkan aturan pada firewall untuk mengizinkan port yang diperlukan.

UFW:

sudo ufw allow 22/tcp        # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 3306/tcp # MySQL (hanya dari IP tertentu jika memungkinkan)

firewalld:

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Izinkan IP Tertentu Sajaโ€‹

Untuk akses administratif seperti SSH atau panel kontrol, batasi hanya dari IP tertentu:

sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp

Reset Aturan ke Defaultโ€‹

Jika aturan firewall sudah tidak terurus dan sulit dilacak, reset ke default:

# UFW โ€” reset semua aturan
sudo ufw reset
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh

Setelah reset, tambahkan kembali aturan yang diperlukan satu per satu.

Verifikasiโ€‹

Setelah perbaikan, lakukan verifikasi:

  1. Periksa status firewall: sudo ufw status verbose atau sudo iptables -L -n -v.
  2. Uji koneksi dari luar: nc -zv <IP_SERVER> <PORT>.
  3. Pastikan hanya port yang memang diperlukan yang terbuka.
  4. Jika menggunakan server Nusa Cloud VPS, periksa juga aturan Managed Firewall di panel kontrol โ€” firewall di tingkat hypervisor memfilter lalu lintas sebelum mencapai server.

Ringkasan Perintah Diagnostikโ€‹

LangkahPerintah
Cek status UFWsudo ufw status verbose
Cek aturan iptablessudo iptables -L -n -v
Cek aturan nftablessudo nft list ruleset
Cek status firewalldsudo firewall-cmd --list-all
Cek log UFWsudo tail -f /var/log/ufw.log
Uji port lokalcurl -v http://localhost:PORT
Uji port dari luarnc -zv IP PORT

Butuh Bantuan?โ€‹

Jika masalah koneksi tetap terjadi meskipun firewall sudah dikonfigurasi dengan benar, buka Tiket Bantuan dan lampirkan output diagnostik dari langkah-langkah di atas.