Artikel ini menjelaskan cara memeriksa port yang terbuka menggunakan perintah netstat, lsof, dan nmap untuk mengetahui layanan mana yang mendengarkan pada port mana.
Saat memecahkan masalah konektivitas jaringan atau masalah khusus aplikasi, salah satu hal pertama yang harus diperiksa adalah port apa yang sebenarnya digunakan pada sistem Anda dan aplikasi mana yang mendengarkan pada port tertentu.
Port jaringan diidentifikasi berdasarkan nomornya, alamat IP terkait, dan jenis protokol komunikasi, seperti TCP atau UDP. Di atas segalanya, port terbuka adalah port jaringan tempat aplikasi atau proses mendengarkan, bertindak sebagai titik akhir komunikasi.
Setiap port mendengarkan dapat dibuka atau ditutup (difilter) menggunakan firewall. Secara umum, port terbuka adalah port jaringan yang menerima paket masuk dari lokasi yang jauh.
Periksa Port Terbuka dengan netstat
netstat
(statistik jaringan ) adalah alat baris perintah untuk memantau koneksi jaringan baik masuk dan keluar serta melihat tabel perutean, statistik antarmuka, dll. Alat ini sangat penting dan sangat berguna bagi administrator jaringan Linux serta administrator sistem untuk memantau dan memecahkan masalah jaringan mereka -masalah terkait dan menentukan kinerja lalu lintas jaringan.
Untuk membuat daftar semua port TCP atau UDP yang sedang didengarkan, termasuk layanan yang menggunakan port dan status soket, gunakan perintah berikut:
$ sudo netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN 24919/amavisd
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 967/master
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 800/tinyproxy
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 967/master
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 844/pure-ftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 768/sshd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 967/master
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 1001/dovecot
tcp6 0 0 :::3306 :::* LISTEN 823/mysqld
tcp6 0 0 ::1:783 :::* LISTEN 24911/spamd.pid -d
tcp6 0 0 :::80 :::* LISTEN 781/httpd
tcp6 0 0 :::21 :::* LISTEN 844/pure-ftpd
tcp6 0 0 :::22 :::* LISTEN 768/sshd
tcp6 0 0 :::25 :::* LISTEN 967/master
tcp6 0 0 :::993 :::* LISTEN 1001/dovecot
tcp6 0 0 :::995 :::* LISTEN 1001/dovecot
udp 0 0 0.0.0.0:47967 0.0.0.0:* 460/avahi-daemon: r
udp 0 0 127.0.0.1:123 0.0.0.0:* 472/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 472/ntpd
udp6 0 0 :::123 :::* 472/ntpd
Opsi yang digunakan dalam perintah ini memiliki arti sebagai berikut:
-t
:Menampilkan port TCP.-u
:Menampilkan port UDP.-l
:Hanya tampilkan port yang mendengarkan.-n
:Menampilkan alamat numerik alih-alih menyelesaikan host.-p
:Menampilkan PID dan nama proses listener. Informasi ini hanya ditampilkan jika Anda menjalankan perintah sebagai pengguna root atau sudo.
Kolom penting dalam kasus kami adalah:
- Proto – Protokol yang digunakan oleh soket.
- Alamat Lokal – Alamat IP dan nomor port yang didengarkan oleh proses.
- PID/Nama program – PID dan nama proses.
Selain itu, jika Anda ingin memfilter hasilnya, gunakan grep
memerintah. Misalnya, untuk menemukan proses apa yang mendengarkan pada port TCP 22 Anda akan mengetik:
$ sudo netstat -tulnp | grep :22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 768/sshd
tcp6 0 0 :::22 :::* LISTEN 768/sshd
Jika output kosong berarti tidak ada yang mendengarkan di port.
Untuk informasi selengkapnya tentang netstat
perintah di Linux, lihat halaman manualnya.
Periksa Port Terbuka dengan lsof
lsof
artinya 'Buka Daftar File' digunakan untuk mengetahui file mana yang dibuka oleh proses mana. Di Linux, semuanya adalah file. Anda dapat menganggap soket sebagai file yang menulis ke jaringan.
Untuk mendapatkan daftar semua port TCP yang mendengarkan dengan lsof, ketik:
$ sudo lsof -nP -iTCP -sTCP:LISTEN
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 768 root 3u IPv4 16112 0t0 TCP *:22 (LISTEN)
sshd 768 root 4u IPv6 16114 0t0 TCP *:22 (LISTEN)
httpd 781 root 4u IPv6 16328 0t0 TCP *:80 (LISTEN)
httpd 781 root 6u IPv6 16336 0t0 TCP *:443 (LISTEN)
tinyproxy 800 tinyproxy 0u IPv4 16750 0t0 TCP *:8080 (LISTEN)
tinyproxy 805 tinyproxy 0u IPv4 16750 0t0 TCP *:8080 (LISTEN)
mysqld 823 mysql 20u IPv6 17479 0t0 TCP *:3306 (LISTEN)
pure-ftpd 844 root 4u IPv4 16289 0t0 TCP *:21 (LISTEN)
pure-ftpd 844 root 5u IPv6 16290 0t0 TCP *:21 (LISTEN)
master 967 root 13u IPv4 17225 0t0 TCP *:25 (LISTEN)
master 967 root 103u IPv4 17319 0t0 TCP 127.0.0.1:10025 (LISTEN)
dovecot 1001 root 24u IPv4 18600 0t0 TCP *:995 (LISTEN)
dovecot 1001 root 37u IPv6 18623 0t0 TCP *:993 (LISTEN)
httpd 24344 apache 4u IPv6 16328 0t0 TCP *:80 (LISTEN)
httpd 24344 apache 6u IPv6 16336 0t0 TCP *:443 (LISTEN)
/usr/bin/ 24911 root 5u IPv4 25208447 0t0 TCP 127.0.0.1:783 (LISTEN)
/usr/bin/ 24911 root 6u IPv6 25208449 0t0 TCP [::1]:783 (LISTEN)
spamd 24913 root 5u IPv4 25208447 0t0 TCP 127.0.0.1:783 (LISTEN)
spamd 24913 root 6u IPv6 25208449 0t0 TCP [::1]:783 (LISTEN)
/usr/sbin 24919 amavis 5u IPv4 25208583 0t0 TCP 127.0.0.1:10024 (LISTEN)
/usr/sbin 24919 amavis 6u IPv6 25208584 0t0 TCP [::1]:10024 (LISTEN)
smtpd 28403 postfix 6u IPv4 17225 0t0 TCP *:25 (LISTEN)
smtpd 28403 postfix 7u IPv6 17226 0t0 TCP *:25 (LISTEN)
Opsi yang digunakan adalah sebagai berikut:
-n
:Jangan mengubah nomor port menjadi nama port.-P
:Jangan menyelesaikan nama host, tampilkan alamat numerik.-iTCP -sTCP:LISTEN
:Hanya tampilkan file jaringan dengan status TCP DENGARKAN.
Untuk menemukan proses apa yang mendengarkan pada port tertentu, misalnya, port 3306 Anda akan menggunakan:
$ sudo lsof -nP -iTCP:3306 -sTCP:LISTEN
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 823 mysql 20u IPv6 17479 0t0 TCP *:3306 (LISTEN)
Output menunjukkan bahwa server MySQL menggunakan port 3306.
Untuk informasi selengkapnya tentang lsof
perintah di Linux, lihat halaman manualnya.
Periksa Port Terbuka dengan nmap
nmap
, atau Pemeta Jaringan , adalah alat baris perintah Linux sumber terbuka untuk eksplorasi jaringan dan audit keamanan. Dengan nmap, administrator server dapat dengan cepat mengungkapkan host dan layanan, menelusuri masalah keamanan, dan memindai port yang terbuka.
nmap
perintah dapat digunakan untuk memeriksa satu port atau serangkaian port terbuka.
Berikut cara memindai port 80 pada sistem target:
$ sudo nmap -p 80 192.168.0.1
Nmap scan report for 192.168.0.1
Host is up (0.000073s latency).
PORT STATE SERVICE
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds
Pindai port 1 hingga 200 pada sistem target:
$ sudo nmap -p 1-200 192.168.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-21 16:42 EEST
Nmap scan report for 192.168.0.1
Host is up (0.0000080s latency).
Not shown: 196 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 1.45 seconds
Pindai (Cepat) port yang paling umum:
$ sudo nmap -F 192.168.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2020-08-21 16:44 EEST
Nmap scan report for 192.168.0.1
Host is up (0.000014s latency).
Not shown: 89 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
80/tcp open http
443/tcp open https
465/tcp open smtps
587/tcp open submission
993/tcp open imaps
995/tcp open pop3s
3306/tcp open mysql
8080/tcp open http-proxy
Nmap done: 1 IP address (1 host up) scanned in 1.46 seconds
Intinya
Kesimpulannya, memeriksa port mana yang terbuka dan informasi apa yang dapat diperoleh dari layanan yang menerima koneksi pada port tersebut memberi Anda informasi yang Anda perlukan untuk mengunci server Anda.
Misalnya, setiap informasi asing yang bocor dari mesin Anda dapat digunakan oleh pengguna jahat untuk mencoba mengeksploitasi kerentanan yang diketahui atau mengembangkan kerentanan baru. Semakin sedikit yang mereka ketahui, semakin baik.