Pertanyaan Periksa apakah port terbuka atau tertutup pada server Linux?


Bagaimana saya bisa memeriksa apakah port mendengarkan di server Linux?


170
2017-09-07 17:24




Tidak jelas apa yang kau tanyakan. Apa yang Anda maksud dengan "terbuka"? Apakah maksud Anda beberapa server sedang mendengarkan pada port itu? Atau maksud Anda itu diizinkan oleh firewall sistem? Atau apa? - David Schwartz
Saya pikir port sedang diblokir di server saya dan ingin membuka blokir / buka lagi. - James Anderson
netstat -an | grep PORTNUMBER | grep -i listen Jika output kosong, port tidak digunakan. - automatix


Jawaban:


Anda dapat memeriksa apakah suatu proses mendengarkan pada port TCP atau UDP dengan netstat -tuplen.

Untuk memeriksa apakah beberapa port dapat diakses dari luar (ini mungkin apa yang Anda inginkan), Anda dapat menggunakan scanner port seperti Nmap dari lain sistem. Menjalankan Nmap di host yang sama yang ingin Anda periksa tidak berguna untuk tujuan Anda.


158
2017-09-07 17:31



GNU netstat mengetahui parameternya -t, -u, -p, -l, -e, dan -n. Berkat opsi parser itu dapat diekspresikan sebagai -tuplen. linux.die.net/man/8/netstat - joschi
Juga telnet perintah biasanya hanya mendukung TCP, jadi Anda kurang beruntung jika layanan yang ingin Anda periksa berjalan pada protokol lain. - joschi
ya, saya menggunakan windows maka kebingungan. - Dexter
nc adalah alternatif (lebih baik) untuk telnet. Ini mendukung UDP juga. - Tsvetomir Dimitrov
Gunakan dengan sudo: sudo netstat -tuplen. Ini akan memberi Anda proses yang dimiliki bukan hanya oleh Anda, tetapi juga oleh orang lain, dan, itu akan mencetak detail tambahan (seperti PID / Nama Program) jika mereka belum ditampilkan sebagai pengguna non-root. - John Red


Cara tercepat untuk menguji apakah port TCP terbuka (termasuk firewall perangkat keras apa pun yang Anda miliki), adalah mengetik, dari komputer jarak jauh (misalnya desktop Anda):

telnet myserver.com 80

Yang akan mencoba membuka koneksi ke port 80 di server itu. Jika Anda sempat keluar atau menyangkal, port tidak terbuka :)


83
2017-09-07 17:33



mengatakan bahwa itu tidak mengenali "telnet" sebagai perintah ... - James Anderson
"yum install telnet" untuk menginstal paket klien telnet. - cjc
Says: telnet: hubungkan ke alamat 82.165.148.224: Koneksi ditolak - James Anderson
Ditulis di atas: if you get a time out or deny, the port is not open - Industrial
Bagaimana jika Anda tidak memiliki izin untuk memasang telnet? Apakah ada alat standar lain? - KC Baltz


Oke, dalam ringkasan, Anda memiliki server yang dapat Anda masuki. Anda ingin melihat apakah ada sesuatu yang mendengarkan pada beberapa port. Sebagai root, jalankan:

netstat -nlp

ini akan menampilkan daftar proses yang mendengarkan pada port TCP dan UDP. Anda dapat memindai (atau grep) untuk proses yang Anda minati, dan / atau nomor port yang Anda harapkan untuk dilihat.

Jika proses yang Anda harapkan tidak ada, Anda harus memulai proses itu dan memeriksa kembali netstat. Jika prosesnya ada, tetapi mendengarkan pada antarmuka dan port yang tidak Anda harapkan, maka ada masalah konfigurasi (misalnya, bisa jadi mendengarkan, tetapi hanya pada antarmuka loopback, sehingga Anda akan melihat 127.0.0.1:3306 dan tidak ada jalur lain untuk port 3306, dalam kasus konfigurasi default untuk MySQL).

Jika prosesnya sudah selesai, dan mendengarkan port yang Anda harapkan, Anda dapat mencoba menjalankan "telnet" ke port tersebut dari Macbook di kantor / rumah Anda, misalnya,

 telnet xxxxxxxxxxxx.co.uk 443

Itu akan menguji apakah (dengan asumsi port standar) bahwa ada server web yang dikonfigurasi untuk SSL. Perhatikan bahwa tes ini menggunakan telnet hanya akan berfungsi jika proses sedang mendengarkan pada port TCP. Jika port UDP, Anda dapat mencoba dengan klien apa pun yang akan Anda gunakan untuk menyambung ke sana. (Saya melihat bahwa Anda menggunakan port 224. Ini masqdialer, dan saya tidak tahu apa itu).

Jika layanan itu ada di sana, tetapi Anda tidak bisa melakukannya secara eksternal, maka ada firewall yang memblokir Anda. Dalam hal ini, jalankan:

 iptables -L -n

Ini akan menampilkan semua aturan firewall sebagaimana didefinisikan pada sistem Anda. Anda dapat mempostingnya, tetapi, umumnya, jika Anda tidak mengizinkan semua yang ada di rantai INPUT, Anda mungkin perlu secara eksplisit mengizinkan lalu lintas pada port yang bersangkutan:

 iptables -I INPUT -p tcp --dport 224 -j ACCEPT

atau sesuatu di sepanjang garis itu. Jangan jalankan perintah firewall Anda secara membabi buta berdasarkan apa yang orang asing katakan pada Anda di Internet. Pertimbangkan apa yang Anda lakukan.

Jika firewall Anda di kotak memungkinkan lalu lintas yang Anda inginkan, maka perusahaan hosting Anda mungkin menjalankan firewall (misalnya, mereka hanya mengizinkan SSH (22 / tcp), HTTP (80 / tcp) dan HTTPS (443 / tcp) dan menolak semua lalu lintas masuk lainnya). Dalam hal ini, Anda perlu membuka tiket helpdesk dengan mereka untuk menyelesaikan masalah ini, meskipun saya kira mungkin ada sesuatu di cPanel Anda yang memungkinkan.


23
2017-09-07 20:01



Bisakah Anda menambahkan cara untuk membatalkan perintah iptables -I? Terima kasih!! - Evgeny
"iptables -D" diikuti dengan apa pun yang Anda miliki setelah "-I" di perintah awal. Pada dasarnya, cari dokumentasi. - cjc


Saya menggunakan kombo netstatdan lsof:

netstat -an | grep <portnumber>
lsof -i:<portnumber>

Untuk melihat apakah port digunakan, dan apa yang menggunakannya.


8
2018-03-28 19:32



tidak ada yang meminta dengan atau tanpa sudo - Dheeraj Thedijje
@DheerajThedijje - maka port itu tidak terbuka - warren
Ya tidak, mengerti. - Dheeraj Thedijje


Jika Anda terhubung ke sistem dan dapat menjalankan perintah sebagai root maka Anda dapat memeriksa output dari iptables

iptables -L -vn

ini akan mencantumkan aturan firewall dan port mana yang merupakan target terbuka ACCEPT dan target port yang tertutup secara eksplisit REJECT.


7
2017-09-07 17:57



Dan jika Anda memiliki firewall, itu lebih sederhana firewall-cmd --query-port=port/protocol, mis. firewall-cmd --query-port=80/tcp. - Agostino


lsof -i :ssh akan mendaftar semua proses dengan port ssh terbuka, koneksi pendengaran dan aktif.


5
2018-01-25 21:45



Awalan sudo jika tidak mengembalikan output apa pun. - Elijah Lynn