GNU/Linux >> Belajar Linux >  >> Linux

Cara Menemukan Layanan Yang Mendengarkan Pada Port Tertentu

Panduan ini menjelaskan beberapa cara berbeda untuk menemukan layanan mana yang mendengarkan pada port tertentu di Linux. Sebagian besar dari Anda mengetahui port default layanan atau proses populer. Misalnya, port default Apache adalah 80, port default FTP adalah 21 dan port default SSH adalah 22. Anda dapat menemukan nama dan nomor port di Linux seperti yang dijelaskan dalam panduan ini . Nomor port default juga dapat diubah ke port kustom apa pun untuk mengamankan server Linux. Misalnya, panduan berikut menjelaskan cara mengubah port default Apache, FTP, dan SSH ke port yang berbeda.

  • Cara Mengubah Port Default Apache Menjadi Port Kustom
  • Cara Mengubah Port Default FTP Menjadi Port Khusus
  • Cara Mengubah Port Default SSH Menjadi Port Khusus

Jika nomor port default diubah, bagaimana Anda menemukan layanan mana yang mendengarkan di port mana? Itulah yang akan kita temukan sekarang!

Temukan layanan mana yang mendengarkan pada port tertentu di Linux

Saya telah mencantumkan empat metode di bawah ini untuk memeriksa layanan apa yang berjalan di nomor port tertentu. Saya akan terus memperbarui daftar ini jika saya menemukan metode baru di masa mendatang. Jadi, tandai dan periksa sesekali.

Metode 1 - Menggunakan netstat

Ini adalah cara yang paling umum digunakan untuk menemukan layanan mana yang mendengarkan di port mana. Netstat adalah utilitas baris perintah yang digunakan untuk mencetak koneksi jaringan, tabel perutean, statistik antarmuka, koneksi penyamaran, dan keanggotaan multicast.

Netstat tersedia di repositori default sebagian besar distribusi Linux.

Untuk menginstalnya di Arch Linux dan variannya, lakukan:

$ sudo pacman -S net-tools

Di CentOS, RHEL:

$ sudo yum install net-tools

Di Fedora:

$ sudo dnf install net-tools

Di Debian, Ubuntu:

$ sudo apt install net-tools

Setelah diinstal, jalankan perintah berikut untuk menemukan layanan mana yang mendengarkan pada port apa:

$ sudo netstat -tulpn

Contoh keluaran:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      665/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1026/sshd           
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      2068/python3        
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1072/mysqld         
tcp6       0      0 :::22                   :::*                    LISTEN      1026/sshd           
tcp6       0      0 :::80                   :::*                    LISTEN      1062/apache2        
udp        0      0 127.0.0.53:53           0.0.0.0:*                           665/systemd-resolve 
udp        0      0 192.168.225.22:68       0.0.0.0:*                           647/systemd-network 
udp        0      0 192.168.225.53:68       0.0.0.0:*                           647/systemd-network 
udp6       0      0 fe80::a00:27ff:feff:546 :::*                                647/systemd-network 
udp6       0      0 fe80::a00:27ff:fe7e:546 :::*                                647/systemd-network

Seperti yang Anda lihat, layanan python (simpleHTTPserver dalam hal ini) mendengarkan pada nomor port 8000, layanan mysqld mendengarkan pada port 3306, layanan ssh berjalan pada nomor port 22, apache2 berjalan pada port 80 dan seterusnya.

Di sini,

  • -t bendera menunjukkan koneksi tcp.
  • -u bendera menunjukkan koneksi udp.
  • -l bendera menampilkan soket pendengar.
  • -p flag menampilkan ID proses (PID) dan nama proses apa pun yang menggunakan port tersebut.
  • -n bendera menampilkan alamat numerik.

Perintah di atas mencantumkan semua layanan dan nomor port yang mereka dengarkan. Bagaimana jika Anda ingin menemukan layanan mana yang mendengarkan pada port tertentu? Di sinilah perintah grep berguna! Kita dapat menggabungkan netstat dan grep perintah untuk memfilter output untuk layanan tertentu, misalnya mysqld , seperti di bawah ini.

$ sudo netstat -tulpn | grep mysqld
[sudo] password for sk: 
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1076/mysqld

Lihat? layanan mysqld mendengarkan pada nomor port 3306.

Jika Anda sudah mengetahui nomor port, tetapi tidak tahu layanan mana yang sedang menggunakannya, cukup ganti nama layanan dengan nomor port seperti gambar di bawah ini.

$ sudo netstat -tulpn | grep -w 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1076/mysqld

Di sini, -w flag hanya menampilkan baris-baris yang berisi kecocokan yang membentuk keseluruhan kata. Dengan kata lain, -w opsi menunjukkan kecocokan persis dari string yang diberikan.

Anda juga dapat menggunakan -i untuk Mengabaikan perbedaan huruf besar/kecil, sehingga karakter yang berbeda hanya dalam huruf besar/kecil cocok satu sama lain

$ sudo netstat -tulpn | grep -i 3306

Sesederhana itu.

Untuk detail lebih lanjut, lihat halaman manual.

$ man netstat

Netstat sebagian besar sudah usang. Alternatif untuk netstat adalah "ss".

Metode 2 - Menggunakan perintah "ss"

ss adalah utilitas baris perintah untuk menyelidiki soket. Ini adalah alternatif untuk netstat dan penggunaan "ss" hampir sama dengan "netstat". Itu sudah diinstal sebelumnya di Ubuntu dan variannya.

Untuk menemukan layanan mana yang mendengarkan di port mana, jalankan:

$ sudo ss -tulpn

Contoh keluaran:

Netid          State             Recv-Q            Send-Q                                            Local Address:Port                       Peer Address:Port                                                                                                                                                                                     
udp            UNCONN            0                 0                                                 127.0.0.53%lo:53                              0.0.0.0:*               users:(("systemd-resolve",pid=671,fd=12))                                                                                                                                
udp            UNCONN            0                 0                                         192.168.225.22%enp0s3:68                              0.0.0.0:*               users:(("systemd-network",pid=653,fd=17))                                                                                                                                
udp            UNCONN            0                 0                                         192.168.225.53%enp0s8:68                              0.0.0.0:*               users:(("systemd-network",pid=653,fd=25))                                                                                                                                
udp            UNCONN            0                 0                             [fe80::a00:27ff:fe7e:8a9c]%enp0s8:546                                [::]:*               users:(("systemd-network",pid=653,fd=24))                                                                                                                                
udp            UNCONN            0                 0                             [fe80::a00:27ff:feff:d2e0]%enp0s3:546                                [::]:*               users:(("systemd-network",pid=653,fd=22))                                                                                                                                
tcp            LISTEN            0                 80                                                    127.0.0.1:3306                            0.0.0.0:*               users:(("mysqld",pid=1076,fd=32))                                                                                                                                        
tcp            LISTEN            0                 128                                               127.0.0.53%lo:53                              0.0.0.0:*               users:(("systemd-resolve",pid=671,fd=13))                                                                                                                                
tcp            LISTEN            0                 128                                                     0.0.0.0:22                              0.0.0.0:*               users:(("sshd",pid=1015,fd=3))                                                                                                                                           
tcp            LISTEN            0                 128                                                           *:80                                    *:*               users:(("apache2",pid=1094,fd=4),("apache2",pid=1090,fd=4),("apache2",pid=1089,fd=4),("apache2",pid=1088,fd=4),("apache2",pid=1087,fd=4),("apache2",pid=1062,fd=4))      
tcp            LISTEN            0                 128                                                        [::]:22                                 [::]:*               users:(("sshd",pid=1015,fd=4))

Untuk memfilter keluaran untuk layanan tertentu (Misalnya mysqld), gunakan:

$ sudo ss -tulpn | grep -w mysqld
tcp LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=1076,fd=32))

Untuk detail lebih lanjut, lihat halaman manual.

$ man ss

Metode 3 - Menggunakan lsof

Seperti namanya, lsof adalah utilitas baris perintah untuk mendaftar semua file terbuka milik semua proses aktif.

Untuk menginstalnya di Linux, gunakan perintah berikut tergantung pada jenis distribusi yang Anda gunakan.

Di Arch Linux:

$ sudo pacman -S lsof

Di Debian, Ubuntu:

$ sudo apt install lsof

Di CentOS, RHEL:

$ sudo yum install lsof

Di Fedora:

$ sudo dnf install lsof

Untuk menemukan proses mana yang berjalan pada port mana, cukup tentukan nomor port seperti yang ditunjukkan pada perintah berikut:

$ sudo lsof -i :80

Contoh keluaran:

COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2 1062     root    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1087 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1088 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1089 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1090 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)
apache2 1094 www-data    4u  IPv6  20452      0t0  TCP *:http (LISTEN)

Untuk detail lebih lanjut, lihat halaman manual.

$ man lsof

Metode 4 - Menggunakan perintah fuser

pelebur adalah utilitas baris perintah lain untuk mengidentifikasi proses menggunakan file atau soket. Ini menampilkan PID proses menggunakan file atau sistem file yang ditentukan.

Ini juga tersedia di repositori default sebagian besar distribusi Linux.

Untuk menginstalnya di Arch Linux, jalankan:

$ sudo pacman -S psmisc

Di Debian, Ubuntu:

$ sudo apt install psmisc

Di CentOS, RHEL:

$ sudo yum install psmisc

Di Fedora:

$ sudo dnf install psmisc

Pertama kita perlu menemukan PID dari layanan atau proses yang mendengarkan pada port tertentu. Sebagai contoh, saya akan mencari PID dari sebuah proses yang mendengarkan pada port 3306 menggunakan perintah:

$ sudo fuser 3306/tcp

Anda akan melihat output seperti di bawah ini.

3306/tcp: 1076

Di sini, 1076 adalah PID.

Dan kemudian cari tahu proses sebenarnya menggunakan PID menggunakan perintah:

$ ps -p 1076 -o comm=
mysqld

Atau, Anda dapat menggunakan -v tandai untuk melihat detail lengkap dalam satu perintah.

$ sudo fuser -v 3306/tcp
                     USER        PID ACCESS COMMAND
3306/tcp:            mysql      1076 F.... mysqld

Untuk detail lebih lanjut, buka halaman manual.

$ man fuser

Anda sekarang mengetahui empat alat berbeda untuk menemukan proses mana yang mendengarkan pada port apa. Keempatnya mudah digunakan dan tersedia di sebagian besar distribusi Linux. Jika Anda mengetahui alat lain, beri tahu kami di bagian komentar di bawah. Saya akan memeriksa dan memperbarui daftar ini.


Linux
  1. Shell - Bagaimana menemukan direktori dari beberapa perintah?

  2. Cara memeriksa apakah layanan tertentu berjalan di Ubuntu

  3. Bagaimana cara memeriksa zona waktu mana di Linux?

  1. Periksa layanan mana yang mendengarkan pada port linux yang diberikan

  2. Bagaimana Menemukan Port Serial Yang Digunakan?

  3. Bagaimana cara mengetahui namespace dari proses tertentu?

  1. Linux – Bagaimana Menemukan Proses Menggunakan Port Serial?

  2. Bagaimana cara menutup rmiregistry yang berjalan di port tertentu?

  3. Bagaimana cara mematikan proses yang berjalan pada port tertentu di Linux?