Memeriksa Port Terbuka dan Mendengarkan di Linux Menggunakan netstat dan ss
Memantau port terbuka dan mendengarkan pada sistem Linux adalah salah satu praktik paling penting untuk mempertahankan keamanan server, mendiagnosis masalah jaringan, dan mengelola infrastruktur Anda secara efektif. Dengan secara teratur mengaudit port mana yang terbuka dan layanan mana yang terikat padanya, Anda dapat secara proaktif mengidentifikasi upaya akses tidak sah, mendeteksi kesalahan konfigurasi, dan menghilangkan permukaan serangan yang tidak perlu sebelum menjadi kerentanan serius.
Baik Anda menjalankan aplikasi lalu lintas tinggi pada paket VPS Hosting atau mengelola armada mesin bare-metal, memahami eksposur jaringan server Linux Anda tidak dapat ditawar. Panduan ini menyediakan panduan yang komprehensif dan akurat secara teknis tentang cara menggunakan netstat dan ss — dua alat baris perintah yang paling banyak digunakan untuk inspeksi port di Linux — bersama dengan alat tambahan dan praktik terbaik dunia nyata.
Daftar Isi
- Memahami Port dan Jenisnya
- Memeriksa Port dengan netstat
- Memeriksa Port dengan ss
- Membandingkan netstat vs. ss
- Alat Lain untuk Memeriksa Port Terbuka
- Praktik Terbaik Keamanan untuk Manajemen Port Terbuka
- Kesimpulan
1. Memahami Port dan Jenisnya {#understanding-ports}
Sebelum mendalami alat-alat itu sendiri, penting untuk membangun pemahaman yang jelas tentang apa itu port, bagaimana mereka dikategorikan, dan mengapa memantau mereka penting.
Apa Itu Port Jaringan?
Port jaringan adalah titik akhir komunikasi logis yang terkait dengan proses atau layanan tertentu pada host. Port memungkinkan server tunggal dengan satu alamat IP untuk menjalankan beberapa layanan jaringan secara bersamaan — misalnya, server web pada port 80, daemon SSH pada port 22, dan database pada port 3306.
Kategori Port
| Rentang | Kategori | Deskripsi |
|---|---|---|
| 0–1023 | Port Terkenal | Dicadangkan untuk layanan sistem standar (HTTP, SSH, FTP, dll.) |
| 1024–49151 | Port Terdaftar | Digunakan oleh aplikasi dan middleware (MySQL, PostgreSQL, dll.) |
| 49152–65535 | Port Dinamis/Ephemeral | Ditugaskan sementara untuk koneksi klien keluar |
Status Port yang Akan Anda Temui
- LISTEN — Port terbuka dan layanan secara aktif menunggu koneksi masuk.
- ESTABLISHED — Koneksi aktif ada antara dua titik akhir.
- TIME_WAIT — Koneksi ditutup; sistem menunggu untuk memastikan ujung jauh menerima pengakuan akhir.
- CLOSE_WAIT — Ujung jauh telah menutup koneksi; aplikasi lokal belum menutup sisinya.
Protokol Transportasi
- TCP (Transmission Control Protocol): Berorientasi koneksi, andal, dengan pemeriksaan kesalahan dan pengiriman terjamin. Digunakan oleh HTTP, HTTPS, SSH, FTP, dan sebagian besar protokol lapisan aplikasi.
- UDP (User Datagram Protocol): Tanpa koneksi, lebih cepat, tetapi tanpa jaminan pengiriman. Digunakan oleh DNS, NTP, DHCP, dan layanan streaming.
2. Memeriksa Port dengan netstat {#netstat}
Apa Itu netstat?
netstat (statistik jaringan) adalah utilitas baris perintah klasik yang menampilkan koneksi jaringan aktif, tabel perutean, statistik antarmuka, dan port mendengarkan. Meskipun secara resmi telah dihentikan mendukung ss pada distribusi Linux modern, netstat tetap banyak digunakan — terutama pada sistem warisan dan di lingkungan di mana administrator sangat akrab dengan sintaksnya.
Menginstal netstat
netstat adalah bagian dari paket net-tools, yang tidak lagi diinstal secara default pada banyak distribusi modern. Instal sebagai berikut:
Debian / Ubuntu:
sudo apt update && sudo apt install net-tools -yCentOS / RHEL / AlmaLinux / Rocky Linux:
sudo yum install net-tools -y
# or on newer versions:
sudo dnf install net-tools -yArch Linux:
sudo pacman -S net-toolsSintaks netstat Inti
sudo netstat [options]Memeriksa Semua Port TCP dan UDP yang Mendengarkan
sudo netstat -tulnRincian flag:
| Flag | Arti |
|---|---|
-t | Tampilkan koneksi dan port TCP |
-u | Tampilkan koneksi dan port UDP |
-l | Tampilkan hanya soket mendengarkan (port menunggu koneksi) |
-n | Tampilkan alamat IP dan nomor port numerik (lewati resolusi DNS untuk kecepatan) |
Contoh output:
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 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp6 0 0 :::443 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*Membaca output:
- Proto — Protokol yang digunakan (tcp, udp, tcp6, udp6).
- Local Address — Alamat IP dan nomor port tempat layanan mendengarkan.
0.0.0.0berarti layanan mendengarkan di semua antarmuka yang tersedia;127.0.0.1berarti hanya dapat diakses secara lokal. - Foreign Address — Alamat klien jauh (ditampilkan sebagai
0.0.0.0:*untuk port mendengarkan tanpa koneksi aktif). - State — Status koneksi (
LISTEN,ESTABLISHED,TIME_WAIT, dll.).
Termasuk Informasi Proses
Untuk melihat proses mana yang memiliki setiap port mendengarkan, tambahkan flag -p:
sudo netstat -tulnpContoh output dengan info proses:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1023/sshd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2847/nginx
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 3102/mysqld> Catatan: Anda harus menjalankan perintah ini dengan sudo untuk melihat nama proses untuk semua pengguna, bukan hanya milik Anda sendiri.
Memfilter Output untuk Port atau Layanan Tertentu
Gunakan grep untuk mempersempit hasil ke port atau layanan tertentu:
# Check if anything is listening on port 80
sudo netstat -tuln | grep ":80"
# Check for SSH (port 22)
sudo netstat -tuln | grep ":22"
# Check for MySQL (port 3306)
sudo netstat -tuln | grep ":3306"
# Check for HTTPS (port 443)
sudo netstat -tuln | grep ":443"Melihat Semua Koneksi Aktif (Bukan Hanya Mendengarkan)
Untuk melihat semua koneksi aktif, termasuk yang sudah terbentuk, hilangkan flag -l:
sudo netstat -tunpMenampilkan Tabel Perutean
sudo netstat -rMenampilkan Statistik Antarmuka Jaringan
sudo netstat -i3. Memeriksa Port dengan ss {#ss}
Apa Itu ss?
ss (statistik soket) adalah pengganti modern untuk netstat, dikembangkan sebagai bagian dari paket iproute2. Ini berkomunikasi langsung dengan kernel Linux melalui soket Netlink, membuatnya jauh lebih cepat dan efisien daripada netstat — terutama pada sistem dengan ribuan koneksi bersamaan.
ss diinstal secara default pada hampir semua distribusi Linux modern, termasuk Ubuntu 18.04+, CentOS 7+, Debian 9+, dan turunannya.
Sintaks ss Inti
ss [options] [filter]Memeriksa Semua Port TCP dan UDP yang Mendengarkan
ss -tulnFlag memiliki arti yang identik dengan netstat:
| Flag | Arti |
|---|---|
-t | Tampilkan soket TCP |
-u | Tampilkan soket UDP |
-l | Tampilkan hanya soket mendengarkan |
-n | Tampilkan alamat numerik (tanpa resolusi DNS) |
Contoh output:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:3306 0.0.0.0:*
tcp LISTEN 0 511 [::]:443 [::]:*
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:*Termasuk Informasi Proses
sudo ss -tulnpContoh output:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1023,fd=3))
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=2847,fd=6))
tcp LISTEN 0 128 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=3102,fd=21))Memfilter berdasarkan Protokol
Tampilkan hanya port TCP mendengarkan:
ss -tlTampilkan hanya port UDP mendengarkan:
ss -ulTampilkan semua koneksi TCP (termasuk yang sudah terbentuk):
ss -tPemfilteran Lanjutan dengan ss
Salah satu fitur paling kuat dari ss adalah pemfilteran berbasis ekspresi bawaan, yang memungkinkan Anda memfilter berdasarkan port, alamat, status, dan lainnya — tanpa mengandalkan grep.
Filter berdasarkan nomor port tertentu:
ss -tuln sport = :80
ss -tuln sport = :443
ss -tuln sport = :22Filter berdasarkan port tujuan:
ss -tuln dport = :3306Tampilkan semua soket dalam status ESTABLISHED:
ss -t state establishedTampilkan semua soket dalam status LISTEN:
ss -t state listeningFilter berdasarkan alamat IP sumber:
ss -tuln src 192.168.1.100Tampilkan koneksi ke host jauh tertentu:
ss -t dst 203.0.113.50Gabungkan beberapa filter:
ss -t state established '( dport = :443 or sport = :443 )'Menampilkan Penggunaan Memori Soket
ss juga dapat menampilkan penggunaan memori terperinci per soket, yang berguna untuk mendiagnosis masalah kinerja:
ss -tmMenampilkan Informasi Timer
ss -toIni menampilkan timer retransmisi dan timer keepalive untuk koneksi TCP, yang sangat berharga untuk mendiagnosis masalah stabilitas koneksi.
4. Membandingkan netstat vs. ss {#comparison}
Kedua alat mencapai tujuan fundamental yang sama, tetapi ada perbedaan bermakna yang harus memandu pilihan Anda:
| Fitur | netstat | ss |
|---|---|---|
| Paket | net-tools (sering tidak diinstal sebelumnya) | iproute2 (diinstal sebelumnya pada distro modern) |
| Kecepatan | Lebih lambat (membaca dari /proc/net/) | Lebih cepat (menggunakan antarmuka kernel Netlink) |
| Kinerja dalam skala besar | Menurun dengan ribuan koneksi | Menangani jumlah koneksi besar secara efisien |
| Pemfilteran lanjutan | Memerlukan piping ke grep | Pemfilteran berbasis ekspresi bawaan |
| Detail output | Baik | Lebih terperinci (memori, timer, dll.) |
| Dukungan IPv6 | Memadai | Sangat baik |
| Status pemeliharaan | Dihentikan | Secara aktif dipertahankan |
| Kurva pembelajaran | Akrab bagi admin berpengalaman lama | Sintaks sedikit berbeda tetapi terdokumentasi dengan baik |
Kapan Menggunakan netstat
- Saat mengelola sistem Linux yang lebih lama (CentOS 6, Debian 7, dll.) di mana
ssmungkin tidak tersedia. - Saat bekerja dengan skrip atau dokumentasi yang sudah menggunakan sintaks
netstat. - Saat Anda lebih nyaman dengan format output-nya dan tidak memerlukan pemfilteran lanjutan.
Kapan Menggunakan ss
- Pada distribusi Linux modern apa pun (Ubuntu 18.04+, CentOS 7+, Debian 9+, dan yang lebih baru).
- Saat mengelola server dengan volume tinggi koneksi bersamaan — seperti yang berjalan pada Dedicated Servers di bawah beban berat.
- Saat Anda memerlukan pemfilteran lanjutan, informasi timer, atau statistik memori soket.
- Untuk otomasi dan skrip di mana kinerja penting.
5. Alat Lain untuk Memeriksa Port Terbuka {#other-tools}
Selain netstat dan ss, beberapa utilitas lain berguna untuk inspeksi port dan analisis jaringan di Linux.
lsof — Daftar File Terbuka (Termasuk Soket)
lsof (List Open Files) memperlakukan soket jaringan sebagai file (konsisten dengan filosofi Linux “semuanya adalah file”) dan dapat menampilkan proses mana yang memiliki port tertentu terbuka.
Instal lsof:
# Debian/Ubuntu
sudo apt install lsof -y
# CentOS/RHEL
sudo yum install lsof -yPeriksa proses mana yang menggunakan port 80:
sudo lsof -i :80Periksa proses mana yang menggunakan port 443:
sudo lsof -i :443Daftar semua koneksi jaringan:
sudo lsof -iDaftar semua soket TCP mendengarkan:
sudo lsof -i TCP -s TCP:LISTENContoh output:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 2847 root 6u IPv4 23456 0t0 TCP *:http (LISTEN)
nginx 2848 www-data 6u IPv4 23456 0t0 TCP *:http (LISTEN)nmap — Network Mapper
nmap adalah alat pemindaian jaringan yang kuat yang digunakan untuk audit keamanan, penemuan jaringan, dan pemindaian port. Tidak seperti ss dan netstat (yang memeriksa sistem lokal), nmap dapat memindai host lokal dan jauh.
Instal nmap:
# Debian/Ubuntu
sudo apt install nmap -y
# CentOS/RHEL
sudo yum install nmap -yPindai semua port TCP pada localhost:
sudo nmap -sT localhostPindai port terbuka dengan deteksi OS:
sudo nmap -sT -O localhostPindai rentang port tertentu:
sudo nmap -p 1-1024 localhostPindai port UDP (memerlukan root):
sudo nmap -sU localhostPindai server jauh:
sudo nmap -sT 203.0.113.50> Penting: Hanya pindai sistem yang Anda miliki atau yang memiliki izin eksplisit untuk dipindai. Pemindaian port tidak sah dapat melanggar hukum dan persyaratan layanan.
fuser — Identifikasi Proses Menggunakan File atau Soket
# Find which process is using port 80 (TCP)
sudo fuser 80/tcp
# Find which process is using port 53 (UDP)
sudo fuser 53/udp/proc/net/ — Antarmuka Kernel Langsung
Untuk tujuan skrip, Anda dapat membaca informasi port langsung dari sistem file virtual kernel Linux:
# View raw TCP socket table
cat /proc/net/tcp
# View raw UDP socket table
cat /proc/net/udpPerhatikan bahwa alamat dan port dalam /proc/net/tcp ditampilkan dalam heksadesimal dan memerlukan konversi untuk keterbacaan manusia. Alat seperti ss dan netstat mengurai data ini secara otomatis.
6. Praktik Terbaik Keamanan untuk Manajemen Port Terbuka {#security}
Mengetahui cara memeriksa port terbuka hanya setengah dari pertempuran. Bertindak atas informasi tersebut adalah yang menjaga server Anda tetap aman. Berikut adalah praktik terbaik yang dapat ditindaklanjuti yang harus diikuti oleh setiap administrator Linux:
Prinsip Eksposur Paling Sedikit
Hanya ekspos port yang benar-benar diperlukan untuk aplikasi Anda berfungsi. Setiap port terbuka adalah vektor serangan potensial. Secara teratur audit port mendengarkan Anda dan tutup atau firewall apa pun yang tidak perlu dapat diakses secara publik.
Ikat Layanan ke Antarmuka Tertentu
Hindari mengikat layanan ke 0.0.0.0 (semua antarmuka) kecuali diperlukan. Misalnya, server database MySQL hanya boleh mendengarkan pada 127.0.0.1 jika hanya diakses secara lokal:
# In /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1Gunakan Firewall
Gunakan ufw (Ubuntu) atau firewalld / iptables (CentOS/RHEL) untuk membatasi akses ke port terbuka berdasarkan alamat IP, subnet, atau antarmuka jaringan:
# Allow SSH only from a specific IP (ufw)
sudo ufw allow from 203.0.113.10 to any port 22
# Deny all other access to port 22
sudo ufw deny 22Secara Teratur Audit Port Mendengarkan
Jadwalkan audit port reguler menggunakan pekerjaan cron atau alat pemantauan. Port mendengarkan baru yang tiba-tiba dapat menunjukkan layanan yang dikompromikan, kesalahan konfigurasi, atau — dalam kasus terburuk — malware:
# Quick audit command — save output and compare over time
sudo ss -tulnp > /var/log/port_audit_$(date +%F).txtAmankan Layanan dengan SSL/TLS
Layanan apa pun yang terbuka untuk internet — server web, server mail, panel kontrol — harus menggunakan koneksi terenkripsi. Pasangkan port terbuka Anda dengan SSL Certificates yang valid untuk melindungi data dalam transit dan mencegah serangan man-in-the-middle.
Pantau Perubahan yang Tidak Terduga
Gunakan alat deteksi intrusi seperti AIDE, Tripwire, atau auditd untuk memberi tahu Anda saat proses baru mulai mendengarkan pada port. Integrasikan dengan logging terpusat (misalnya, ELK Stack, Graylog) untuk vis
