Apakah Anda memecahkan masalah konektivitas jaringan atau mengonfigurasi firewall, salah satu hal pertama yang perlu diperiksa adalah port mana yang terbuka pada sistem Anda.
Artikel ini menjelaskan beberapa pendekatan untuk mengetahui port mana yang terbuka ke luar pada sistem Anda.
Apa itu Open Port
Open port, dikenal juga dengan listening port, adalah port jaringan yang digunakan aplikasi apapun untuk berinteraksi dengan dunia luar. Anda dapat melihat listening port pada sistem Anda dengan melakukan kueri network stack dengan perintah seperti ss
, netstat
atau lsof
. Setiap listening port dapat dibuka atau ditutup (difilter) menggunakan firewall.
Secara umum, open port adalah port jaringan yang menerima paket masuk dari lokasi jarak jauh.
Misalnya, jika Anda menjalankan server web yang listening pada port 80
dan 443
,dan port tersebut terbuka pada firewall Anda, siapa pun (kecuali ip yang diblokir) akan dapat mengakses situs web yang dihosting di server web Anda menggunakan browser-nya. Dalam hal ini, baik 80
dan 443
adalah open ports (port yang terbuka).
Port yang terbuka dapat menimbulkan risiko keamanan, karena setiap port yang terbuka dapat digunakan oleh penyerang untuk mengeksploitasi kerentanan atau melakukan jenis serangan lainnya. Anda harus mengekspos hanya port yang diperlukan untuk fungsionalitas aplikasi Anda dan menutup semua port lain.
Periksa Open Ports dengan nmap
Nmap adalah alat pemindaian jaringan powerful yang dapat memindai host tunggal dan jaringan besar. Nmap ibarat sebuah kompas yang sering digunakan untuk audit keamanan dan penetration testing.
Jika nmap tersedia di sistem, nmap adalah alat pertama yang paling direkomendasikan ketika butuh tool untuk pemindaian port. Selain port scanning, nmap juga dapat mendeteksi alamat Mac, tipe OS, versi kernel, dan banyak lagi.
Perintah berikut menentukan port mana yang listening koneksi TCP dari jaringan:
sudo nmap -sT -p- 10.10.8.8
Opsi tambahan -sT
akan memberitahu nmap
untuk memindai port TCP dan -p-
untuk memindai semua port 65535. Jika -p- tidak digunakan, nmap
hanya akan memindai 1000
port.
Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-09 23:10 CEST Nmap scan report for 10.10.8.8 Host is up (0.0012s latency). Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http MAC Address: 08:00:27:05:49:23 (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds
Output di atas menunjukkan bahwa hanya port 22
, 80
dan 8069
yang dibuka pada sistem target.
Untuk memindai port UDP gunakan -sU
:
sudo nmap -sU -p- 10.10.8.8
Untuk informasi lebih lanjut, kunjungi halaman manual nmap dan baca tentang semua opsi kuat lainnya dari alat ini.
Periksa Open Ports dengan netcat
Netcat (atau nc
) adalah alat baris perintah yang dapat membaca dan menulis data melalui koneksi jaringan, menggunakan protokol TCP
atau UDP
.
Dengan netcat
Anda dapat memindai satu port atau rentang port.
Misalnya untuk memindai port TCP terbuka pada mesin jarak jauh dengan alamat IP 10.10.8.8
dalam kisaran 20-80
Anda akan menggunakan perintah berikut:
nc -z -v 10.10.8.8 20-80
Opsi -z
memberitahu nc
untuk memindai hanya untuk port terbuka, tanpa mengirim data a pa pun dan -v
adalah untuk informasi yang lebih lengkap.
Outputnya akan terlihat seperti ini:
nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port [tcp/ssh] succeeded! ... Connection to 10.10.8.8 80 port [tcp/http] succeeded!
Jika Anda hanya ingin baris-baris dengan port yang terbuka dicetak pada layar, Anda dapat memfilter hasilnya dengan perintah grep
.
nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded! Connection to 10.10.8.8 80 port [tcp/http] succeeded!
Untuk memindai port UDP, gunakan opsi -u
ke perintah nc
:
nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded
Periksa Port Terbuka menggunakan Bash Pseudo
Cara lain untuk memeriksa apakah port tertentu terbuka atau tertutup adalah dengan menggunakan perangkat Bash shell /dev/tcp/
.. atau /dev/udp/
.. pseudo.
Saat menjalankan perintah pada pseudo-device /dev/$PROTOCOL/$HOST/$IP
, Bash akan membuka koneksi TCP atau UDP ke host yang ditentukan pada port yang ditentukan.
Pernyataan if..else
berikut akan memeriksa apakah port 443
di kernel.org
terbuka atau tidak:
if timeout 5 bash -c '</dev/tcp/kernel.org/443 &>/dev/null' then echo "Port terbuka" else echo "Port tertutup" fi
Port is open
Bagaimana cara kerja kode di atas?
Timeout default saat menghubungkan ke port menggunakan pseudo device sangat besar, sehingga kita menggunakan perintah timeout
untuk mematikan perintah tes setelah 5 detik. Jika koneksi dibuat ke kernel.org port 443, maka perintah tes akan kembali benar.
Anda juga dapat menggunakan loop for untuk memeriksa rentang port:
for PORT in {20..80}; do timeout 1 bash -c "</dev/tcp/10.10.8.8/$PORT &>/dev/null" && echo "port $PORT terbuka" done
Outputnya akan terlihat seperti ini:
port 22 is open port 80 is open
Kesimpulan
Kami telah menunjukkan kepada Anda beberapa alat yang dapat Anda gunakan untuk memindai port terbuka. Ada juga utilitas dan metode lain untuk memeriksa port terbuka, misalnya, Anda dapat menggunakan modul socket Python, curl
, telnet
atau wget
.