
netstat
(Network Statistics) adalah alat bawaan sistem operasi berbasis Unix dan Windows yang digunakan untuk menampilkan informasi tentang koneksi jaringan, port yang terbuka, dan statistik lalu lintas jaringan.
Saya biasa menggunakan netstat untuk monitoring VPS untuk mengetahui port dan IP mana saja yang sedang terhubung dan terbuka untuk memastikan tidak ada penyusup yang masuk. Maklum sekarang IP yang saya gunakan tidak sengaja ter publish di blog ini sehingga mereka melakukan brute force Alamat IP yang Brute Force SSH Server selain netstat untuk mempertahan diri juga saya install fail2ban Fail2Ban untuk melindungi Brute Force Login SSH
Netstat biasanya belum terinstal di Ubuntu versi terbaru (misalnya Ubuntu 20.04 ke atas). netstat
adalah perintah untuk menampilkan informasi tentang koneksi jaringan, port yang terbuka, dan statistik lalu lintas di sistem Linux.
Untuk mengaktifkan kembali perintah netstat
, instal paket net-tools
dengan perintah berikut:
sudo apt update && sudo apt install net-tools -y
Contoh Perintah netstat
dan Fungsinya
Contents
- 1 Contoh Perintah netstat dan Fungsinya
- 1.1 Menampilkan Semua Port yang Terbuka
- 1.2 1. 0 0.0.0.0:3009 (IPv4)
- 1.3 2. 0 :::3009 (IPv6)
- 1.4 Menampilkan Koneksi yang Aktif di Sistem
- 1.5 Mengapa Client Menggunakan Port Berbeda?
- 1.6 Kesimpulan
- 1.7 Menampilkan Koneksi yang Terhubung ke Server
- 1.8 Menampilkan Semua Koneksi dengan Nama Program
- 1.9 Menampilkan Statistik Jaringan
- 1.10 Menampilkan Rute (Routing Table)
Menampilkan Semua Port yang Terbuka
netstat -tuln
-
-t
→ Hanya menampilkan koneksi TCP -
-u
→ Hanya menampilkan koneksi UDP -
-l
→ Menampilkan port yang sedang listening -
-n
→ Menampilkan alamat IP dalam bentuk angka (tanpa resolusi DNS)
Gunanya: Melihat port yang sedang aktif dan terbuka di server.
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:7400 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:587 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:8090 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:8082 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:8085 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:8084 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:3001 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:3009 0.0.0.0:* LISTEN tcp6 0 0 :::21 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 :::7400 :::* LISTEN tcp6 0 0 :::8090 :::* LISTEN tcp6 0 0 :::8081 :::* LISTEN tcp6 0 0 :::8080 :::* LISTEN tcp6 0 0 :::8082 :::* LISTEN tcp6 0 0 :::8085 :::* LISTEN tcp6 0 0 :::8084 :::* LISTEN tcp6 0 0 :::3001 :::* LISTEN tcp6 0 0 :::3009 :::* LISTEN udp 0 0 0.0.0.0:54280 0.0.0.0:* udp 0 0 127.0.0.53:53 0.0.0.0:* udp 0 0 0.0.0.0:5353 0.0.0.0:* udp6 0 0 :::46283 :::* udp6 0 0 :::5353 :::*
Kalian bisa melihat port pada sisi server banyak yang terbuka siap menerima request dari
- 22
- 53
- 7400
- 25
- 587
- 8090
- 8081
- 8080
- 8082
- 8085
- 8084
- 3001
- 3009
Keterangan lebih lanjut mengenai IP 0 0.0.0.0.0 dengan 0 ::: yaitu
Perbedaan antara 0 0.0.0.0:3009
dan 0 :::3009
dalam output netstat
atau ss
terletak pada versi protokol IP yang digunakan:
1. 0 0.0.0.0:3009 (IPv4)
-
0.0.0.0
berarti layanan ini mendengarkan (LISTEN
) pada semua antarmuka jaringan yang tersedia menggunakan IPv4. -
Artinya, koneksi ke port 3009 bisa datang dari alamat IP mana saja selama menggunakan protokol IPv4.
-
Contoh koneksi yang diterima:
-
192.168.1.100:3009
-
10.0.0.2:3009
-
127.0.0.1:3009
(localhost)
-
2. 0 :::3009 (IPv6)
-
::
adalah bentuk singkat dari0:0:0:0:0:0:0:0
, yang berarti layanan ini mendengarkan di semua antarmuka jaringan dengan IPv6. -
Artinya, koneksi ke port 3009 dapat dilakukan menggunakan IPv6.
-
Contoh koneksi yang diterima:
-
fe80::1%lo0:3009
-
::1:3009
(IPv6 localhost)
-
Menampilkan Koneksi yang Aktif di Sistem
netstat -antp
-
-a
→ Menampilkan semua koneksi (aktif dan listening) -
-n
→ Menampilkan alamat IP tanpa resolusi DNS -
-t
→ Hanya menampilkan koneksi TCP -
-p
→ Menampilkan proses yang menggunakan koneksi
Gunanya: Melihat aplikasi atau layanan yang menggunakan koneksi jaringan.
dari port diatas, kita akan cek menggunakan perintah antp yang established dari mana saja IP client yang sedang terhubung
netstat -antp | grep ESTABLISHED
hasilnya
tcp 0 0 113.127.134.175:8081 28.124.95.170:57126 ESTABLISHED - tcp 0 0 113.127.134.175:22 38.88.8.194:35162 ESTABLISHED - tcp 0 0 113.127.134.175:22 38.88.8.194:38794 ESTABLISHED - tcp 0 0 113.127.134.175:8080 28.124.95.170:57219 ESTABLISHED - tcp 0 0 113.127.134.175:22 38.88.8.194:35190 ESTABLISHED - tcp 0 0 113.127.134.175:8081 28.124.95.170:59548 ESTABLISHED - tcp 0 0 113.127.134.175:22 38.88.8.194:35232 ESTABLISHED - tcp 0 0 113.127.134.175:8090 104.152.52.188:43132 ESTABLISHED - tcp 0 0 113.127.134.175:8081 28.124.95.170:56082 ESTABLISHED - tcp 0 0 113.127.134.175:22 38.88.8.194:35166 ESTABLISHED - tcp 0 0 113.127.134.175:8081 28.124.95.170:56715 ESTABLISHED - tcp 0 0 113.127.134.175:22 38.88.8.194:37768 ESTABLISHED - tcp 0 0 113.127.134.175:22 38.88.8.194:35188 ESTABLISHED - tcp 0 0 113.127.134.175:22 38.88.8.194:35196 ESTABLISHED - tcp 0 0 113.127.134.175:8081 28.124.95.170:59463 ESTABLISHED - tcp 0 324 113.127.134.175:22 28.124.95.170:51039 ESTABLISHED - tcp 0 0 113.127.134.175:22 38.88.8.194:35222 ESTABLISHED - tcp 0 0 113.127.134.175:8080 28.124.95.170:57244 ESTABLISHED - tcp 0 0 113.127.134.175:8081 28.124.95.170:60032 ESTABLISHED - tcp 0 0 113.127.134.175:8080 28.124.95.170:57214 ESTABLISHED - tcp 0 0 113.127.134.175:22 218.78.80.243:50322 ESTABLISHED - tcp 0 0 113.127.134.175:8081 28.124.95.170:56023 ESTABLISHED - tcp 0 0 113.127.134.175:8081 28.124.95.170:56022 ESTABLISHED -
dari data diatas IP client yang sedang terhubung ke server dengan IP yaitu
- 28.124.95.170
- 38.88.8.194
- 104.152.52.188
- 218.78.80.243
Mari kita pelajari Mengapa IP client menggunakan port yang berbeda?
tcp 0 0 113.127.134.175:22 38.88.8.194:35162 ESTABLISHED - tcp 0 0 113.127.134.175:22 38.88.8.194:38794 ESTABLISHED -
Mengapa IP client menggunakan port yang berbeda?
-
113.127.134.175:22 → Ini adalah server yang mendengarkan koneksi di port 22 (SSH).
-
38.88.8.194:35162 dan 38.88.8.194:38794 → Ini adalah client, yang menggunakan dua port berbeda (35162 dan 38794) untuk melakukan koneksi ke server.
Port yang berbeda ini disebut ephemeral ports (port sementara) dan dipilih secara acak oleh sistem operasi client untuk setiap koneksi keluar.
Mengapa Client Menggunakan Port Berbeda?
-
Setiap Koneksi TCP Memiliki Identitas Unik
TCP menggunakan kombinasi(IP sumber, port sumber, IP tujuan, port tujuan)
untuk mengidentifikasi setiap koneksi. Karena client dapat membuka lebih dari satu koneksi ke server, maka setiap koneksi membutuhkan port sumber yang unik. -
Port Ephemeral Dipilih Secara Dinamis
-
Ketika client menginisiasi koneksi ke server, sistem operasi memilih port sumber secara acak dari rentang ephemeral (biasanya antara 32768–60999 pada Linux, atau 49152–65535 pada Windows).
-
Ini dilakukan untuk menghindari bentrokan dengan port lain yang mungkin digunakan oleh aplikasi lain.
-
-
Multiple Connections dari Client ke Server
-
Jika client membuka lebih dari satu koneksi SSH ke server, maka setiap koneksi akan menggunakan port yang berbeda.
-
Contoh kasus:
-
Client membuka dua sesi SSH ke server → dua koneksi dengan port sumber berbeda.
-
Client mengalami koneksi tidak stabil dan sistemnya secara otomatis mencoba reconnect, menyebabkan penggunaan port baru.
-
-
-
Load Balancing dan NAT
-
Jika client berada di belakang NAT (Network Address Translation), router atau firewall bisa menggunakan port yang berbeda untuk setiap koneksi.
-
Kesimpulan
-
Port 22 di server tetap sama karena itu port layanan SSH.
-
Port pada client berubah karena dipilih secara dinamis oleh sistem operasi untuk membedakan sesi koneksi yang berbeda.
-
Jika ada banyak koneksi dari satu client ke server yang sama, mereka akan menggunakan port sumber yang berbeda untuk menghindari konflik dan memastikan setiap koneksi dapat dikenali secara unik.
Menampilkan Koneksi yang Terhubung ke Server
netstat -an | grep ESTABLISHED
Gunanya: Menampilkan semua koneksi yang sedang aktif/terhubung ke server.
tcp 0 0 113.127.134.175:8080 28.124.95.170:56823 ESTABLISHED tcp 0 0 113.127.134.175:22 38.88.8.194:35162 ESTABLISHED tcp 0 0 113.127.134.175:22 38.88.8.194:38794 ESTABLISHED tcp 0 0 113.127.134.175:22 38.88.8.194:35190 ESTABLISHED tcp 0 0 113.127.134.175:8081 28.124.95.170:59548 ESTABLISHED tcp 0 0 113.127.134.175:22 38.88.8.194:35232 ESTABLISHED tcp 0 0 113.127.134.175:8090 104.152.52.188:43132 ESTABLISHED tcp 0 0 113.127.134.175:8081 28.124.95.170:56082 ESTABLISHED tcp 0 0 113.127.134.175:22 38.88.8.194:35166 ESTABLISHED tcp 0 0 113.127.134.175:8081 28.124.95.170:56715 ESTABLISHED tcp 0 0 113.127.134.175:22 38.88.8.194:37768 ESTABLISHED tcp 0 0 113.127.134.175:22 38.88.8.194:35188 ESTABLISHED tcp 0 0 113.127.134.175:22 38.88.8.194:35196 ESTABLISHED tcp 0 0 113.127.134.175:8081 28.124.95.170:59463 ESTABLISHED tcp 0 0 113.127.134.175:8081 28.124.95.170:56830 ESTABLISHED tcp 0 0 113.127.134.175:22 38.88.8.194:35222 ESTABLISHED tcp 0 0 113.127.134.175:8081 28.124.95.170:60032 ESTABLISHED tcp 0 0 113.127.134.175:8081 28.124.95.170:56023 ESTABLISHED tcp 0 0 113.127.134.175:22 28.124.95.170:49910 ESTABLISHED tcp 0 0 113.127.134.175:8081 28.124.95.170:56022 ESTABLISHED
Menampilkan Semua Koneksi dengan Nama Program
netstat -p
Gunanya: Menampilkan proses yang menggunakan koneksi (misalnya, apakah Apache atau MySQL yang memakai port tertentu).
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 ip-113-127-134-175.:ssh 36.88.8.193:35162 ESTABLISHED - tcp 0 0 ip-113-127-134-175:8082 154.84.59.108:53673 FIN_WAIT2 - tcp 0 0 ip-113-127-134-175.:ssh 36.88.8.193:38794 ESTABLISHED - tcp 0 0 ip-170-134-127:http-alt 28.124.95.170::57219 ESTABLISHED - tcp 0 0 ip-113-127-134-175.:ssh 36.88.8.193:35190 ESTABLISHED - tcp 0 0 ip-113-127-134-175:tproxy 28.124.95.170::59548 ESTABLISHED - tcp 0 0 ip-113-127-134-175:8082 154.84.59.108:53681 FIN_WAIT2 -
mari kita pelajari
tcp 0 0 ip-113-127-134-175.:ssh 36.88.8.193:35162 ESTABLISHED - tcp 0 0 ip-113-127-134-175:8082 154.84.59.108:53673 FIN_WAIT2 -
pada baris pertama
tcp 0 0 ip-113-127-134-175.:ssh 36.88.8.193:35162 ESTABLISHED -
Interpretasi:
-
tcp
→ Koneksi menggunakan protokol TCP. -
0 0
→ Tidak ada data yang tertunda untuk dikirim atau diterima. -
ip-113-127-134-175.:ssh
→ Server dengan IP 113.127.134.175 menerima koneksi di port 22 (SSH). -
36.88.8.193:35162
→ Client dengan IP 36.88.8.193 sedang terhubung menggunakan port sumber 35162. -
ESTABLISHED
→ Koneksi aktif dan berjalan.
Kesimpulan:
-
IP 36.88.8.193 sedang melakukan koneksi SSH ke server 113.127.134.175.
-
Pengguna mungkin sedang mengakses server secara remote menggunakan SSH.
-
Jika koneksi ini mencurigakan, Anda bisa memeriksa dengan:
who last -i netstat -tnp | grep :22
ternyata saya cek, ada yang lagi bobol ssh server dengan IP dari 67.205.173.62
tcp 0 0 113.127.134.175:22 67.205.173.62:57824 TIME_WAIT -
pada baris kedua yaitu
tcp 0 0 ip-113-127-134-175:8082 154.84.59.108:53673 FIN_WAIT2 -
Interpretasi:
-
tcp
→ Koneksi menggunakan TCP. -
0 0
→ Tidak ada data yang tertunda untuk dikirim atau diterima. -
ip-113-127-134-175:8082
→ Server dengan IP 113.127.134.175 menerima koneksi di port 8082 (kemungkinan aplikasi web, proxy, atau API). -
154.84.59.108:53673
→ Client dengan IP 154.84.59.108 mengakses server menggunakan port sumber 53673. -
FIN_WAIT2
→ Server sudah mengirim FIN (permintaan untuk menutup koneksi), tetapi masih menunggu FIN dari client.
Kesimpulan:
-
IP 154.84.59.108 sebelumnya terhubung ke port 8082 di server, lalu memutus koneksi tetapi belum sepenuhnya ditutup.
-
Status FIN_WAIT2 menunjukkan bahwa server sudah menutup koneksi, tapi client belum mengirim respons FINterakhir.
-
Jika koneksi dalam FIN_WAIT2 terlalu lama, bisa jadi client terputus tiba-tiba atau ada masalah dengan jaringan.
-
Jika ada banyak koneksi dalam FIN_WAIT2, Anda bisa mengurangi timeout dengan:
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
Jika koneksi di FIN_WAIT2 terlalu lama, bisa ada masalah di sisi client atau server. Jika perlu, Anda bisa memaksa menutupnya dengan:
netstat -tnp | grep FIN_WAIT2 kill -9 <PID>
Atau jika ingin memblokir IP yang mencurigakan:
iptables -A INPUT -s 154.84.59.108 -j DROP
Menampilkan Statistik Jaringan
netstat -s
Gunanya: Melihat statistik jaringan, seperti jumlah paket yang dikirim/dilakukan retransmisi.
Menampilkan Rute (Routing Table)
netstat -r
Gunanya: Menampilkan tabel rute jaringan di server (setara dengan route -n
).