Baik Anda memecahkan masalah konektivitas jaringan atau mengonfigurasi firewall, salah satu hal pertama yang harus diperiksa adalah port apa yang sebenarnya dibuka di sistem Anda.
Artikel ini menjelaskan beberapa pendekatan untuk mengetahui port apa yang dibuka ke luar pada sistem Linux Anda.
Apa itu Open Port #
Port mendengarkan adalah port jaringan tempat aplikasi mendengarkan. Anda bisa mendapatkan daftar port mendengarkan pada sistem Anda dengan menanyakan tumpukan jaringan dengan perintah seperti ss
, netstat
atau lsof
. Setiap port pendengar dapat dibuka atau ditutup (difilter) menggunakan firewall.
Secara umum, port terbuka adalah port jaringan yang menerima paket masuk dari lokasi yang jauh.
Misalnya, jika Anda menjalankan server web yang mendengarkan port 80
dan 443
dan port tersebut terbuka di firewall Anda, siapa pun (kecuali ip yang diblokir) akan dapat mengakses situs web yang dihosting di server web Anda menggunakan browsernya. Dalam hal ini, keduanya 80
dan 443
adalah port terbuka.
Port terbuka dapat menimbulkan risiko keamanan karena setiap port 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 lainnya.
Periksa Port Terbuka dengan nmap
#
Nmap adalah alat pemindaian jaringan yang kuat yang dapat memindai satu host dan jaringan besar. Ini terutama digunakan untuk audit keamanan dan pengujian penetrasi.
Jika tersedia, nmap
harus menjadi alat pertama Anda dalam hal pemindaian port. Selain pemindaian port, nmap
juga dapat mendeteksi alamat Mac, jenis OS, versi kernel, dan banyak lagi.
Perintah berikut yang dikeluarkan dari konsol menentukan port mana yang mendengarkan koneksi TCP dari jaringan:
sudo nmap -sT -p- 10.10.8.8
-sT
memberitahu nmap
untuk memindai port TCP dan -p-
untuk memindai semua 65535 port. Jika -p-
tidak digunakan nmap
hanya akan memindai 1000 port paling populer.
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
dibuka pada sistem target.
Untuk memindai port UDP gunakan -sU
bukannya -sT
:
sudo nmap -sU -p- 10.10.8.8
Untuk informasi lebih lanjut, kunjungi halaman manual nmap dan baca tentang semua opsi canggih lainnya dari alat ini.
Periksa Port Terbuka dengan netcat
#
Netcat (atau nc
) adalah alat baris perintah yang dapat membaca dan menulis data di seluruh 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 rentang 20-80
Anda akan menggunakan perintah berikut:
nc -z -v 10.10.8.8 20-80
-z
opsi memberitahu nc
untuk memindai hanya port yang terbuka, tanpa mengirim data apa pun dan -v
adalah untuk informasi yang lebih verbose.
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 dengan port terbuka yang akan dicetak di layar, filter hasilnya dengan grep
perintah.
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, lewati -u
opsi ke nc
perintah:
nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded
2>&1
konstruksi mengarahkan kesalahan standar ke output standar. Periksa Port Terbuka menggunakan Perangkat Bash Pseudo #
Cara lain untuk memeriksa apakah port tertentu terbuka atau tertutup adalah dengan menggunakan shell Bash /dev/tcp/..
atau /dev/udp/..
perangkat semu.
Saat menjalankan perintah pada /dev/$PROTOCOL/$HOST/$IP
pseudo-device, Bash akan membuka koneksi TCP atau UDP ke host yang ditentukan pada port yang ditentukan.
if..elsestatement berikut akan memeriksa apakah port 443
di kernel.org
buka:
if timeout 5 bash -c '</dev/tcp/kernel.org/443 &>/dev/null'
then
echo "Port is open"
else
echo "Port is closed"
fi
Port is open
Bagaimana cara kerja kode di atas?
Saat menghubungkan ke port menggunakan perangkat semu, batas waktu default sangat besar, jadi kami menggunakan timeout
perintah untuk mematikan perintah tes setelah 5 detik. Jika koneksi dibuat ke kernel.org
port 443
perintah tes akan mengembalikan true.
Untuk memeriksa rentang port, gunakan loop for:
for PORT in {20..80}; do
timeout 1 bash -c "</dev/tcp/10.10.8.8/$PORT &>/dev/null" && echo "port $PORT is open"
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 yang terbuka. Ada juga utilitas dan metode lain untuk memeriksa port yang terbuka, misalnya, Anda dapat menggunakan socket
Python modul, curl
, telnet
atau wget
.
Jika Anda memiliki pertanyaan atau komentar, silakan tinggalkan komentar di bawah.