Cara Cek Port Terbuka di Server Linux dengan ss dan nmap

abcdefghaniv Diperbarui

Cara Cek Port Terbuka di Server Linux dengan ss dan nmap

Setiap port yang terbuka adalah satu pintu ke server Anda. Sebagian pintu memang harus terbuka, misalnya 443 untuk situs. Masalahnya, banyak server membuka lebih banyak pintu daripada yang pemiliknya sadari: layanan yang dipasang sekali lalu terlupa, atau kontainer yang diam-diam menerbitkan port ke internet. Dalam beberapa insiden terakhir, penyerang tidak perlu menembus apa pun yang rumit. Mereka cukup mengetuk pintu yang memang dibiarkan terbuka.

Artikel ini menunjukkan cara melihat semua port yang terbuka di server Linux, dari dalam server dan dari luar, cara membaca hasilnya, dan cara menutup yang tidak perlu. Semua perintah memakai alat yang sudah ada atau mudah dipasang: ss dan nmap.

Diuji pada:
haniv@thevault:~$ cat /etc/issue
Ubuntu 26.04.1 LTS \n \l
haniv@thevault:~$ nmap --version
Nmap version 7.98 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.4.8 openssl-3.5.5 libssh2-1.11.1 libz-1.3.1 libpcre2-10.46 libpcap-1.10.6 nmap-libdnet-1.18.0 ipv6
Compiled without:
Available nsock engines: epoll poll select
haniv@thevault:~$ date
Mon Nov  2 07:35:14 AM UTC 2026
haniv@thevault:~$

  

Ringkasnya: jalankan sudo ss -tulpn di server untuk melihat apa yang mendengarkan, lalu nmap dari komputer lain untuk melihat apa yang benar-benar terjangkau dari luar. Bandingkan keduanya. Selisihnya menunjukkan apa yang diblokir firewall.

Apa arti "port terbuka"

Ada dua hal berbeda yang sering tercampur:

  • Layanan mendengarkan (listening): ada program di server yang menunggu koneksi pada sebuah port. Ini terlihat dari dalam server.
  • Port terjangkau dari luar: koneksi dari internet benar-benar sampai ke layanan itu. Ini bergantung pada firewall server, firewall penyedia VPS, dan pengaturan jaringan.

Sebuah layanan bisa mendengarkan tetapi diblokir firewall, dan itu aman selama firewall-nya benar. Karena itu kita mengecek dua sisi.

Langkah 1: lihat apa yang mendengarkan dengan ss

sudo ss -tulpn

Arti opsinya: -t TCP, -u UDP, -l hanya yang mendengarkan, -p tampilkan nama proses, -n tampilkan angka port tanpa menerjemahkan nama.

Format keluarannya seperti ini (angka dan layanan di server Anda akan berbeda):

Contoh sudo ss -tulpn


Cara membaca kolom Local Address

Yang tampilArtinyaApa yang perlu dilakukan
0.0.0.0:PORT atau [::]:PORTMendengarkan di semua antarmuka. Bisa dijangkau dari luar bila firewall mengizinkan.Pastikan Anda memang ingin layanan ini terbuka.
127.0.0.1:PORT atau [::1]:PORTHanya bisa diakses dari server itu sendiri.Aman dari luar. Cocok untuk database dan layanan internal.
Alamat IP tertentu (mis. 10.0.0.5:PORT)Hanya pada antarmuka itu, misalnya jaringan privat atau VPN.Periksa apakah antarmuka itu terjangkau dari luar.

Untuk setiap baris yang berawalan 0.0.0.0 atau [::], tanyakan: apakah saya tahu layanan ini, dan apakah ia perlu terbuka ke internet? Kalau jawabannya tidak, itu kandidat untuk ditutup.

Langkah 2: cek firewall

sudo ufw status verbose

Perintah ini menampilkan kebijakan bawaan dan aturan yang aktif. Kalau UFW belum aktif, hasilnya Status: inactive. Cara mengaturnya ada di checklist keamanan VPS Linux baru.

Awas kontainer Docker

Port yang diterbitkan kontainer Docker dapat melewati aturan UFW, karena Docker mengatur aturan jaringannya sendiri. Jadi UFW yang tampak rapi belum menjamin kontainer Anda tertutup. Cek port yang diterbitkan:

docker ps --format "table {{.Names}}\t{{.Ports}}"

Bila Anda melihat 0.0.0.0:8080->80/tcp, port 8080 terbuka ke semua alamat. Agar hanya bisa diakses dari server itu sendiri, ikat ke 127.0.0.1 di berkas compose:

ports:
  - "127.0.0.1:8080:80"

Langkah 3: cek dari luar dengan nmap

Hanya untuk server milik sendiri atau yang Anda punya izin tertulis untuk diperiksa. Memindai sistem orang lain tanpa izin bisa melanggar hukum dan aturan penyedia layanan. Cek juga ketentuan penyedia VPS Anda.

Jalankan dari komputer atau jaringan lain, misalnya dari hotspot ponsel, bukan dari server itu sendiri:

nmap -Pn -p 1-10000 ALAMAT-IP-SERVER

Untuk memeriksa semua port TCP, ganti dengan -p-; prosesnya lebih lama. Untuk UDP yang paling umum:

sudo nmap -Pn -sU --top-ports 50 ALAMAT-IP-SERVER

Arti status yang muncul: open (ada layanan yang menjawab), closed (terjangkau tetapi tidak ada layanan), filtered (tidak ada jawaban, biasanya dibuang firewall). Untuk UDP, hasil open|filtered berarti nmap tidak bisa memastikan.

Contoh hasil scan nmap

Cara membandingkan: semua yang open pada nmap seharusnya ada di daftar ss dan memang Anda niatkan terbuka. Layanan di ss yang tidak muncul di nmap berarti sudah ditahan firewall.

Menutup port yang tidak perlu

Urutan dari yang paling bersih:

  1. Matikan layanan yang tidak dipakai.
    sudo systemctl disable --now NAMA-LAYANAN
  2. Ikat layanan ke 127.0.0.1 bila hanya dipakai lokal (pengaturan bind atau listen di berkas konfigurasi layanan itu, atau pemetaan port Docker seperti di atas).
  3. Batasi lewat firewall untuk layanan yang harus berjalan tetapi tidak perlu terbuka untuk semua orang. Contoh: SSH hanya dari satu alamat.
    sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
    sudo ufw status numbered

    Alamat 203.0.113.10 hanyalah contoh; ganti dengan alamat Anda. Hapus aturan lama yang terlalu longgar dengan sudo ufw delete NOMOR, dan buka sesi SSH kedua untuk menguji sebelum menutup sesi pertama.

Setelah itu ulangi Langkah 1 dan 3, dan pastikan yang Anda tutup benar-benar hilang dari nmap.

Contoh kasus: pintu yang dibiarkan terbuka

  • Server media Plex. Pada serangan Plex2Shell, layanan di port 32400 yang terjangkau dari internet menjadi sasaran. Jika Anda memakai Plex, cek apakah port itu perlu terbuka untuk umum. Detail dan langkah update ada di artikel Plex2Shell.
  • Nextcloud dan layanan web lain. Aplikasi yang terbuka ke internet menjadi sasaran begitu ada celah. Lihat kasus Nextcloud dan Collabora CODE untuk contoh cara memeriksa server setelah ada celah.
  • Router dan perangkat jaringan. Per 5 September 2026, Shadowserver mencatat sekitar 122.500 perangkat MikroTik dengan antarmuka SSH yang terbuka ke internet, menurut laporan BleepingComputer. Perangkat dengan layanan manajemen terbuka seperti itulah yang dibidik rantai serangan yang dilaporkan CERT Polska.

Daftar periksa

  • Saya sudah menjalankan sudo ss -tulpn dan tahu fungsi setiap layanan yang mendengarkan di 0.0.0.0 atau [::].
  • Saya sudah memeriksa dari luar dengan nmap (hanya pada server saya).
  • Port yang diterbitkan kontainer Docker sudah saya cek dan yang tidak perlu diikat ke 127.0.0.1.
  • Layanan yang tidak dipakai sudah dimatikan.
  • Firewall aktif dan hanya membuka yang diperlukan.

Sumber

Belum ada komentar

- Kritik dan saran sangat saya nantikan untuk kemajuan blog ini.
- Silakan report, jika ada link yang mati.
- Mohon untuk berkomentar sesuai dengan tema postingan.
- Dilarang berkomentar yang mencantumkan LINK AKTIF.