Mengetahui cara menyemak port terbuka di Linux adalah kemahiran asas bagi sesiapa yang menguruskan pelayan, menyelesaikan masalah rangkaian, atau mengukuhkan keselamatan sistem. Port terbuka pada dasarnya adalah pintu masuk ke dalam sistem anda - dan jika anda tidak tahu pintu mana yang terbuka, anda tidak boleh menjaminnya dengan betul. Sama ada anda menjalankan pelayan web di Ubuntu, menguruskan VPS, atau mendiagnosis masalah sambungan, menyenaraikan port terbuka memberi anda gambaran jelas tentang apa yang sistem anda dedahkan kepada rangkaian. Panduan ini membincangkan empat kaedah praktikal, menerangkan cara menapis keputusan, dan menunjukkan cara menutup port yang tidak diperlukan.
Perkara Utama:
- Perintah
ssadalah cara moden dan terpantas untuk menyenaraikan port terbuka di Linux. nmapmembolehkan anda mengimbas port dari perspektif luar, mendedahkan apa yang sebenarnya dilihat oleh penyerang.- Gunakan
lsofuntuk segera mengenal pasti proses mana yang memiliki sesuatu port. - Menutup port yang tidak diperlukan menggunakan
ufwatauiptablesadalah cara paling langsung untuk mengurangkan permukaan serangan anda.
Jadual Kandungan
- Mengapa Menyemak Port Terbuka Penting di Linux
- Kaedah 1: Perintah ss (Moden, Disyorkan)
- Kaedah 2: Perintah netstat (Lama tapi Masih Biasa Digunakan)
- Kaedah 3: Imbasan Port nmap (Perspektif Luar)
- Kaedah 4: Perintah lsof (Pemetaan Proses ke Port)
- Cara Menapis Keputusan mengikut Port, TCP, atau UDP
- Cara Menutup atau Menyekat Port dengan ufw atau iptables
- Kesimpulan
- Soalan Lazim
Mengapa Menyemak Port Terbuka Penting di Linux
Setiap perkhidmatan yang berjalan pada mesin Linux anda mendengar pada satu atau lebih port. SSH mendengar pada port 22, HTTP pada port 80, HTTPS pada port 443. Tetapi selepas berbulan-bulan memasang dan menyahpasang perisian, pelayan sering berakhir dengan port terbuka yang tidak dikonfigurasi secara sengaja oleh sesiapa pun. Daemon pangkalan data yang terlupa sedang mendengar pada port 5432 tanpa peraturan firewall adalah risiko nyata yang telah membawa kepada kebocoran data.
Menyemak port terbuka di Linux membantu anda:
- Mengaudit perkhidmatan yang sebenarnya sedang berjalan dan terdedah.
- Menyelesaikan masalah mengapa sesuatu aplikasi tidak dapat menyambung ke perkhidmatan lain.
- Mengesahkan bahawa peraturan firewall anda berfungsi seperti yang dimaksudkan.
- Bersedia untuk audit keselamatan atau ujian penembusan.
Kaedah di bawah merangkumi pemeriksaan tempatan (apa yang dilaporkan oleh mesin itu sendiri) dan imbasan luar (apa yang dapat dilihat oleh hos jauh). Kedua-dua perspektif ini penting.
Kaedah 1: Perintah ss (Moden, Disyorkan)
Perintah ss (statistik soket) menggantikan netstat pada kebanyakan pengedaran Linux moden. Ia lebih pantas, lebih terperinci, dan dibina dalam pakej iproute2 yang disertakan secara lalai pada Ubuntu, Debian, CentOS, dan Fedora.
Untuk menyenaraikan semua port terbuka bersama nama prosesnya, jalankan:
sudo ss -tulnpPenjelasan flag:
-t- paparkan soket TCP-u- paparkan soket UDP-l- paparkan soket yang sedang mendengar sahaja-n- paparkan nombor port berangka dan bukannya nama perkhidmatan-p- paparkan proses yang menggunakan setiap soket
Contoh konkrit: Pada pelayan Ubuntu baharu yang menjalankan Nginx dan PostgreSQL, output mungkin kelihatan seperti ini:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6))
tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:* users:(("postgres",pid=5678,fd=5))
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=910,fd=3))Perhatikan bahawa PostgreSQL terikat kepada 127.0.0.1 sahaja, bermakna ia tidak boleh dicapai dari luar. SSH dan Nginx terikat kepada 0.0.0.0, bermakna ia menerima sambungan dari mana-mana IP. Output tunggal ini memberitahu anda banyak tentang pendedahan sistem anda.
Untuk rujukan lengkap semua pilihan ss, lihat halaman manual ss rasmi.
Kaedah 2: Perintah netstat (Lama tapi Masih Biasa Digunakan)
Perintah netstat adalah sebahagian daripada pakej net-tools yang lebih lama. Ia tidak lagi dipasang secara lalai pada banyak pengedaran, tetapi masih digunakan secara meluas dan patut diketahui - terutamanya ketika bekerja pada sistem yang lebih lama.
Pasangnya jika diperlukan:
sudo apt install net-tools # Debian/Ubuntu
sudo yum install net-tools # CentOS/RHELUntuk menyenaraikan port terbuka di Linux menggunakan netstat:
sudo netstat -tulnpFlag-flag tersebut mempunyai maksud yang sama seperti pada ss. Format output sedikit berbeza tetapi memberikan maklumat teras yang sama: protokol, alamat tempatan, port, dan proses pemilik.
Satu batasan praktikal: pada pelayan yang sangat sibuk dengan ribuan sambungan, netstat boleh ketara lebih perlahan berbanding ss. Untuk tugas harian pada pelayan biasa, perbezaannya boleh diabaikan.
Kaedah 3: Imbasan Port nmap (Perspektif Luar)
Alat di atas menunjukkan apa yang dilaporkan oleh mesin anda secara dalaman. nmap mengambil pendekatan berbeza - ia mengimbas port melalui rangkaian, mensimulasikan apa yang akan dilihat oleh penyerang luar atau klien jauh. Ini sangat penting kerana firewall mungkin menyekat sesuatu port yang masih ditunjukkan oleh ss sebagai sedang mendengar.
Pasang nmap:
sudo apt install nmap # Debian/Ubuntu
sudo yum install nmap # CentOS/RHELImbas pelayan dari mesin lain pada rangkaian yang sama:
nmap -sT -p 1-1024 192.168.1.10Untuk mengimbas 1000 port paling biasa dengan pengesanan versi perkhidmatan:
nmap -sV 192.168.1.10Flag -sV cuba mengesan versi perisian yang berjalan pada setiap port terbuka. Ini berguna untuk mengenal pasti perkhidmatan lapuk yang memerlukan tampalan.
Penting: Jalankan nmap hanya pada pelayan yang anda miliki atau yang anda ada kebenaran eksplisit untuk mengimbas. Mengimbas sistem pihak ketiga tanpa kebenaran mungkin menyalahi undang-undang di kawasan anda.
Jika anda perlu menyemak sama ada sesuatu port boleh dicapai dari luar rangkaian anda tanpa memasang nmap, alat Port Checker percuma kami mengendalikannya dengan serta-merta - tiada pemasangan atau konfigurasi diperlukan.
Kaedah 4: Perintah lsof (Pemetaan Proses ke Port)
Perintah lsof (senarai fail terbuka) menganggap soket rangkaian sebagai fail, yang konsisten dengan falsafah Linux "segala-galanya adalah fail". Ia amat berguna apabila anda perlu menjawab soalan: "Proses mana yang menggunakan port 8080?"
Senaraikan semua sambungan rangkaian:
sudo lsof -iCari proses yang menggunakan port tertentu (contohnya, port 3000):
sudo lsof -i :3000Ini amat berguna apabila aplikasi Node.js seorang pembangun menyekat sesuatu port dan anda perlu mengenal pasti serta mematikan proses tersebut sebelum memulakan semula sesuatu perkhidmatan.
Cara Menapis Keputusan mengikut Port, TCP, atau UDP
Output mentah dari mana-mana alat ini boleh menjadi bising. Berikut adalah corak penapisan yang paling berguna:
Paparkan hanya port TCP yang mendengar (ss):
sudo ss -tlnpPaparkan hanya port UDP (ss):
sudo ss -ulnpSemak sama ada port tertentu terbuka (grep dengan ss):
sudo ss -tulnp | grep :443Tapis mengikut port dengan nmap:
nmap -p 80,443,8080 192.168.1.10Corak-corak ini merangkumi sebahagian besar keperluan penapisan harian. Untuk penyelesaian masalah khusus HTTP pada port 80, lihat Panduan Penyelesaian Masalah HTTP Port 80 kami.
Jika anda menggunakan Windows dan memerlukan panduan yang sama, lihat Panduan Lengkap Menyemak Port Terbuka di Windows 2026 kami.
Cara Menutup atau Menyekat Port dengan ufw atau iptables
Menemui port terbuka yang tidak diperlukan hanyalah separuh daripada kerja. Berikut adalah cara menutupnya menggunakan dua alat firewall Linux yang paling biasa.
Menggunakan ufw (Firewall Mudah) - Disyorkan untuk Ubuntu
Sekat trafik masuk pada port 8080:
sudo ufw deny 8080/tcpBenarkan hanya SSH dan HTTPS, dan tolak semua yang lain:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
sudo ufw enableSemak status firewall semasa:
sudo ufw status verboseMenggunakan iptables - Untuk Kawalan Lanjutan
Buang semua trafik masuk pada port 3306 (MySQL):
sudo iptables -A INPUT -p tcp --dport 3306 -j DROPSimpan peraturan supaya kekal selepas but semula:
sudo iptables-save | sudo tee /etc/iptables/rules.v4Untuk rujukan lebih mendalam tentang sintaks dan susunan peraturan iptables, dokumentasi rasmi Netfilter adalah sumber yang paling sahih.
Petua: Menyekat port dengan ufw atau iptables tidak menghentikan perkhidmatan daripada berjalan - ia hanya menghalang sambungan luar daripada mencapainya. Jika anda ingin menghentikan perkhidmatan sepenuhnya, gunakan sudo systemctl stop servicename dan sudo systemctl disable servicename.
Kesimpulan
Menyemak port terbuka di Linux tidak memerlukan alat yang kompleks atau kepakaran yang mendalam. Perintah ss memberikan anda pandangan tempatan yang pantas dan boleh dipercayai. nmap menunjukkan apa yang boleh dicapai oleh dunia luar. lsof menentukan dengan tepat proses mana yang memiliki sesuatu port. Dan ufw atau iptables membolehkan anda menutup apa sahaja yang tidak sepatutnya terdedah. Menjalankan semakan ini secara berkala - terutamanya selepas memasang perisian baharu atau mengubah konfigurasi rangkaian - adalah salah satu tabiat paling mudah yang boleh anda bina untuk memastikan pelayan Linux anda selamat. Mulakan dengan sudo ss -tulnp sekarang dan lihat apa yang sebenarnya didedahkan oleh pelayan anda.
Semak Mana-mana Port pada Pelayan Linux Anda - Serta-merta
Tidak pasti sama ada sesuatu port benar-benar boleh dicapai dari luar? Alat Port Checker percuma kami mengimbas pelayan anda dari perspektif luar dalam beberapa saat - tiada pemasangan, tiada konfigurasi diperlukan.
Cuba Alat Port Checker Percuma Kami →
Soalan Lazim
Jalankan sudo ss -tulnp dalam terminal anda. Ini menggunakan perintah ss moden untuk memaparkan semua port TCP dan UDP yang sedang mendengar bersama nama proses. Ia lebih pantas daripada netstat dan tersedia secara lalai pada kebanyakan pengedaran Linux semasa termasuk Ubuntu dan Debian.
Kedua-dua perintah memaparkan port terbuka dan maklumat soket, tetapi ss adalah pengganti moden untuk netstat. Ia membaca data terus dari kernel, menjadikannya lebih pantas dan lebih tepat pada sistem yang sibuk. netstat memerlukan pakej net-tools yang berasingan, yang tidak lagi dipasang secara lalai pada banyak pengedaran.
Gunakan nmap -p PORT TARGET_IP dari mesin lain pada rangkaian. Untuk semakan luar yang pantas tanpa memasang apa-apa, gunakan alat penyemak port berasaskan web. Pendekatan ini menguji sama ada port boleh dicapai dari luar, dengan mengambil kira peraturan firewall yang tidak dapat dicerminkan oleh alat tempatan seperti ss.
Gunakan sudo lsof -i :PORT atau sudo ss -tulnp | grep :PORT. Kedua-dua perintah memaparkan nama proses dan PID yang dikaitkan dengan port tersebut. Kaedah lsof amat jelas kerana ia menyenaraikan perintah, PID, dan pengguna dalam format yang mudah dibaca.
Tidak. Menyekat port dengan ufw atau iptables menghalang sambungan luar daripada mencapai perkhidmatan, tetapi perkhidmatan itu sendiri terus berjalan. Untuk menghentikannya sepenuhnya, gunakan sudo systemctl stop servicename. Untuk penyingkiran kekal, jalankan juga sudo systemctl disable servicename bagi menghalangnya daripada bermula semasa but semula.