GNU/Linux >> Belajar Linux >  >> Linux

Cara Memeriksa (Memindai) Port Terbuka di Linux

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.


Linux
  1. Cara memeriksa versi Redhat

  2. Cara Memeriksa Port Terbuka di Linux dengan netstat, lsof, dan nmap

  3. Bagaimana Cara Menutup Port Di Linux?

  1. Cara Mengetahui Daftar Semua Port Terbuka di Linux

  2. Cara Memeriksa Mendengarkan / Membuka Port dengan Netstat di Linux

  3. Cara membuat daftar port terbuka di server Linux/Unix

  1. Cara Memeriksa Ruang Disk di Linux

  2. Cara memeriksa port yang terbuka di RHEL 8 / CentOS 8 Linux

  3. Cara menampilkan/memeriksa port terbuka di Ubuntu Linux