Apakah ada perintah yang bisa saya jalankan dari bash yang akan memberi tahu saya apakah port sudah terbuka?
28
Gunakan "netstat" untuk memeriksa port yang saat ini menggunakan.
netstat -antp Proto Recv-Q Kirim-Q Alamat Lokal Alamat Asing Negara PID / Nama program tcp 0 0 xxx.xxx.xxx.xxx 0.0.0.0:* DENGARKAN 16297 / bernama tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* DENGARKAN 16297 / bernama tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* DENGARKAN 16297 / bernama tcp 0 0 127.0.0.1:53 0.0.0.0:* DENGARKAN 16297 / bernama
Ini (netstat) adalah solusi tercepat ...
... tapi ini memberi Anda lebih banyak kontrol (dengan biaya kecepatan (kadang-kadang banyak kecepatan)) ...
Contoh di atas misalnya menunjukkan kepada Anda semua port TCP terbuka dan dalam
LISTEN
status, AND (-a
) milik pengguna Apache (www-data
).sumber
Semua jawaban bagus.
Namun Anda tidak menyebutkan apakah Anda masuk ke komputer yang dimaksud. ; P
Jika tidak, maka nmap adalah teman Anda.
untuk pemula coba:
nmap -O
target
amap juga merupakan pilihan yang baik yang juga akan mencoba menebak perangkat lunak server dengan meraih halaman spanduk.
untuk pemula coba:
amap
target
1-6000
sumber
Mencoba
Jika Anda mendapatkan hasil apa pun, ada sesuatu yang mendengarkan dan terikat, misalnya
sumber
Tampilkan
t
port cp yang sedangl
istening, tampilkann
umbers saja (jangan pecahkan nama - buatlah lebih cepat) dan perlihatkanp
rocess yang melakukan mendengarkan (p
hanya berfungsi jika Anda root)Tampilkan
u
port dp yang sedangl
istening, tampilkann
umbers saja (jangan pecahkan nama - buatlah lebih cepat) dan perlihatkanp
rocess yang melakukan mendengarkan (p
hanya berfungsi jika Anda root)Tampilkan
u
port dp yang terbuka tetapi tidak mendengarkan, tampilkan banyakn
saja (jangan pecahkan nama - buatlah lebih cepat) dan tunjukkanp
rocess yang melakukan mendengarkan (p
hanya berfungsi jika Anda root)Tampilkan
a
ll port yang digunakan, tampilkann
umbers saja - jangan pecahkan namamisalnya
untuk melihat apakah ada yang mendengarkan di port localhost 25 / TCP, atau
untuk melihat apakah ada soket baik lokal atau jarak jauh baik mendengarkan (lokal) atau terhubung ke (lokal atau jauh) untuk setiap host / antarmuka
sumber
lsof (daftar file yang terbuka) adalah alat yang baik untuk melihat apakah suatu proses mendengarkan pada port
netstat adalah alat yang baik untuk melihat apakah ada koneksi aktif.
sumber
Anda tidak menyebutkan protokol apa yang ingin Anda gunakan, yaitu TCP atau UDP - dan juga penting untuk menyadari bahwa "port" tidak cukup granular yang didukung sistem untuk mengacaukan soket. Misalnya jika sistem Anda memiliki beberapa alamat IP maka port 80 mungkin digunakan pada semua alamat IP (baik aplikasi telah terikat ke "0.0.0.0" atau "::" atau ke setiap alamat IP berturut-turut), atau mungkin dalam gunakan hanya pada subset dari alamat IP tersebut.
Cara terbaik, dan paling pasti, untuk menentukan apakah port / alamat itu gratis dan tersedia adalah berusaha mengikatnya. Netcat berguna untuk ini.
akan mencoba untuk mengikat ke port TCP NN aktif (opsional, default akan menjadi semua alamat) abcd Tambahkan opsi -u untuk melakukan hal yang sama di UDP
Selanjutnya, untuk mengetahui apakah port benar-benar "terbuka" seperti yang Anda minta - Anda harus mulai melihat aturan firewall potensial. Lagi-lagi hal yang paling mudah adalah mencoba terhubung ke port. Gunakan netcat seperti di atas, di server, dan dari klien gunakan netcat untuk mencoba menyambungkan ke port yang Anda buka.
nc [-u] abcd NN
akan terhubung ke port NN pada abcd, menggunakan UDP jika flag -u ditentukan. Anda kemudian dapat mengetik input ke ujung klien, dan itu akan muncul di server. Jika tidak, Anda perlu melihat alat khusus sistem dan jaringan.
sumber
Saya menggunakan fuser (dalam paket psmisc):
Membawa kembali pid yang terikat pada port ini.
Jika ini untuk mengetahui apakah suatu port mendengarkan, telnet lama yang baik melakukan triknya :)
sumber
One-liner ini akan memberi Anda daftar semua port TCP yang digunakan. Ia bekerja di bash di Ubuntu dan OS X.
netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq
Daftar ini akan memiliki satu port per baris tanpa informasi tambahan.
sumber
for port in $(netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq); do echo EXECUTE COMMAND FOR PORT $port; done
Banyak cara melakukannya memberi saya masalah karena mereka tidak bekerja di linux dan osx, dan / atau karena mereka tidak menunjukkan port yang digunakan oleh buruh pelabuhan, atau proses yang dimiliki oleh root. Sekarang saya hanya menggunakan program javascript ini:
(pastikan Anda telah menginstal node dan berfungsi dengan
node
tidak adilnodejs
atau ubah programnya)simpan berikut ini ke file yang disebut
check-port
di jalur Anda atau di proyek Andamengatur izin
lari dari jalurmu
atau lari dari direktori yang sama
sejauh ini bekerja dengan cukup baik.
sumber