How to Check Open Port of Linux
Isi kandungan:
- Apakah Pelabuhan Terbuka?
- Semak Buka Pelabuhan dengan
nmap
- Semak Buka Pelabuhan dengan
netcat
- Semak Buka Pelabuhan menggunakan Bash Pseudo Device
- Kesimpulannya
Sama ada anda menyelesaikan masalah sambungan rangkaian atau mengkonfigurasi firewall salah satu perkara pertama yang perlu diperiksa adalah apakah port yang sebenarnya dibuka pada sistem anda.
Artikel ini menerangkan beberapa pendekatan untuk mengetahui apa port dibuka ke luar pada sistem Linux anda.
Apakah Pelabuhan Terbuka?
Pelabuhan mendengarkan ialah port rangkaian yang didengar oleh aplikasi. Anda boleh mendapatkan senarai port pendengaran di sistem anda dengan menanyakan susunan rangkaian dengan arahan seperti
ss
,
netstat
atau
lsof
. Setiap pelabuhan mendengar boleh dibuka atau ditutup (ditapis) menggunakan firewall.
Secara umum, port terbuka ialah port rangkaian yang menerima paket masuk dari lokasi terpencil.
Sebagai contoh, jika anda menjalankan pelayan web yang mendengarkan pada port
80
dan
443
dan port tersebut terbuka pada sesiapa sahaja firewall anda (kecuali IP yang disekat) akan dapat mengakses laman web yang dihoskan pada pelayan web anda menggunakan penyemak imbasnya. Dalam kes ini, kedua
80
dua
80
dan
443
adalah pelabuhan terbuka.
Pelabuhan terbuka boleh menimbulkan risiko keselamatan kerana setiap pelabuhan terbuka boleh digunakan oleh penyerang untuk mengeksploitasi kerentanan atau melakukan sebarang jenis serangan lain. Anda harus mendedahkan hanya port yang diperlukan untuk fungsi aplikasi anda dan menutup semua pelabuhan lain.
Semak Buka Pelabuhan dengan
nmap
Nmap adalah alat pengimbasan rangkaian yang kuat yang boleh mengimbas tuan rumah tunggal dan rangkaian besar. Ia digunakan terutamanya untuk pemeriksaan keselamatan dan ujian penembusan.
Sekiranya tersedia,
nmap
harus menjadi alat pertama anda apabila mengimbas pengimbasan port. Selain pengimbasan port
nmap
juga dapat mengesan alamat Mac, jenis OS, versi kernel, dan banyak lagi.
Perintah berikut yang dikeluarkan dari konsol menentukan pelabuhan mana yang mendengar sambungan TCP dari rangkaian:
sudo nmap -sT -p- 10.10.8.8
The
-sT
memberitahu
nmap
untuk mengimbas port TCP dan
-p-
untuk mengimbas semua 65535 port. Jika
-p-
tidak digunakan
nmap
akan mengimbas hanya 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 bahawa hanya port
22
,
80
dan
8069
dibuka pada sistem sasaran.
Untuk mengimbas penggunaan UDP port
-sU
bukan
-sT
:
sudo nmap -sU -p- 10.10.8.8
Untuk mendapatkan maklumat lanjut, lawati halaman lelaki nmap dan baca tentang semua pilihan berkuasa lain alat ini.
Semak Buka Pelabuhan dengan
netcat
Netcat (atau
nc
) adalah alat baris arahan yang boleh membaca dan menulis data dalam semua rangkaian, menggunakan protokol TCP atau UDP.
Dengan
netcat
anda boleh mengimbas satu port atau julat port.
Sebagai contoh untuk mengimbas port TCP terbuka pada mesin jauh dengan alamat IP
10.10.8.8
dalam lingkungan
20-80
anda akan menggunakan arahan berikut:
nc -z -v 10.10.8.8 20-80
Opsyen
-z
memberitahu
nc
untuk mengimbas hanya untuk pelabuhan terbuka, tanpa menghantar sebarang data dan
-v
adalah untuk maklumat lebih lanjut.
Output akan kelihatan 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 succeeded!… Connection to 10.10.8.8 80 port succeeded!
nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!
Untuk mengimbas port UDP lulus pilihan
-u
ke perintah
nc
:
nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded
Semak Buka Pelabuhan menggunakan Bash Pseudo Device
Satu lagi cara untuk memeriksa sama ada port tertentu terbuka atau ditutup adalah dengan menggunakan bash shell
/dev/tcp/..
atau
/dev/udp/..
pseudo device.
Apabila melaksanakan arahan pada peranti
/dev/$PROTOCOL/$HOST/$IP
pseudo-device, Bash akan membuka sambungan TCP atau UDP ke hos yang ditentukan pada port yang ditentukan.
Pernyataan if..else berikut akan memeriksa sama ada port
443
pada
kernel.org
terbuka:
if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi
if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi
Port is open
Bagaimanakah kod di atas berfungsi?
Waktu tamat lalai ketika menyambung ke port menggunakan peranti pseudo sangat besar sehingga kami menggunakan perintah
timeout
untuk membunuh perintah ujian setelah 5 detik. Jika sambungan ditubuhkan ke port
kernel.org
443
, arahan ujian akan kembali benar.
Anda juga boleh menggunakan gelung untuk memeriksa pelbagai port:
for PORT in {20..80}; do timeout 1 bash -c " /dev/null" && echo "port $PORT is open" done
for PORT in {20..80}; do timeout 1 bash -c " /dev/null" && echo "port $PORT is open" done
Output akan kelihatan seperti ini:
port 22 is open port 80 is open
Kesimpulannya
Kami telah menunjukkan beberapa alat yang boleh anda gunakan untuk mengimbas pelabuhan terbuka. Terdapat juga utiliti dan kaedah lain untuk memeriksa port terbuka, sebagai contoh, anda boleh menggunakan modul
socket
Python,
curl
,
telnet
atau
wget
.
Blok Pelabuhan untuk Mengehadkan Akses Dalam Talian

Gunakan tetapan penghala untuk memastikan pekerja jujur.
Data Selfie adalah sambungan Chrome sumber terbuka dan terbuka yang membantu anda mengetahui bagaimana jejak Facebook semua aktiviti anda menggunakan algoritma pembelajaran mesin.

Pernah tertanya-tanya bagaimana
Bagaimana untuk menyemak pelabuhan mendengar di linux (port yang digunakan)

Artikel ini menerangkan bagaimana untuk mengetahui pelabuhan yang digunakan dan perkhidmatan yang didengar di mana port menggunakan arahan netstat, ss dan lsof. Arahan ini boleh digunakan untuk semua sistem operasi berasaskan Linux dan Unix seperti macOS.