GNU/Linux >> Belajar Linux >  >> Linux

Perintah tcpdump Linux

tcpdump adalah utilitas baris perintah yang memungkinkan kami menangkap dan menganalisis lalu lintas jaringan melalui sistem kami. Bergantung pada opsi pemfilteran, kami dapat menggunakan alat ini untuk membantu memecahkan masalah jaringan apa pun secara efektif. Ini adalah alat yang sangat umum digunakan oleh insinyur sysadmin untuk fitur ini.

Dalam tutorial ini, kita akan menganalisis beberapa cara menggunakan tcpdump , tapi tidak semua. Ini karena ada terlalu banyak opsi pemfilteran yang terlibat dalam perintah ini, dan tidak mungkin untuk mencakup semuanya. Kami hanya akan melihat beberapa opsi yang umum digunakan di sini. Anda dapat menemukan sisanya di halaman manual.

Menginstal perintah tcpdump

Anda dapat memeriksa apakah sistem Anda memiliki tcpdump perintah, dengan mengetik

tcpdump --version

Jika output menunjukkan bahwa itu tidak diinstal, Anda bisa langsung mendapatkannya menggunakan manajer paket sistem Anda.

CATATAN :Karena kami akan menangkap paket, kami memerlukan izin yang lebih tinggi. (sudo Dibutuhkan). Kami akan mengawali semua tcpdump perintah dengan sudo sebagai hasilnya.

Mencantumkan antarmuka untuk pengambilan paket

Sebelum menangkap paket secara aktif, kita akan melihat antarmuka yang tersedia untuktcpdump .

Kita dapat membuat daftar antarmuka menggunakan -D opsi (Tampilan).

sudo tcpdump -D

Anda akan mendapatkan daftar semua antarmuka yang tersedia di mesin Anda. Ini akan tergantung dari sistem ke sistem, jadi milik saya memiliki beberapa antarmuka lain seperti Docker , karena layanan Docker sedang berjalan, selain dari antarmuka jaringan biasa.

Antarmuka khusus apa saja memungkinkan pengambilan di apa saja antarmuka aktif.

Sekarang setelah kita mengetahui antarmuka yang tersedia di mesin kita, mari kita mulai menangkap paket!

Tangkap Paket menggunakan tcpdump

Tangkap semua paket di apa saja antarmuka dengan menjalankan perintah ini:

sudo tcpdump -i any

Ini akan menentukan antarmuka menjadi apa saja , antarmuka khusus yang disebutkan sebelumnya.

tcpdump terus menangkap paket sampai menerima interupsi sinyal. Anda dapat menghentikan pengambilan dengan menekan Ctrl+C .

Output akan mencantumkan semua paket yang ditangkap sampai sinyal interupsi diterima untuk menghentikan tcpdump .

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
10:49:32.841984 IP 111.11.111.11.vultr.com.ssh > 123.45.678.90.48006: Flags [P.], seq 4132693749:4132693857, ack 3344962610, win 1002, options [nop,nop,TS val 135269404 ecr 1623818400], length 108
10:49:32.842057 IP 111.11.111.11.vultr.com.ssh > 123.45.678.90.48006: Flags [P.], seq 108:144, ack 1, win 1002, options [nop,nop,TS val 135269404 ecr 1623818400], length 36
10:49:32.842101 IP 111.11.111.11.vultr.com.ssh > 123.45.678.90.48006: Flags [P.], seq 144:260, ack 1, win 1002, options [nop,nop,TS val 135269404 ecr 1623818400], length 116
10:49:32.842135 IP 111.11.111.11.vultr.com.ssh > 123.45.678.90.48006: Flags [P.], seq 260:296, ack 1, win 1002, options [nop,nop,TS val 135269404 ecr 1623818400], length 36
...
...
^C
264 packets captured
361 packets received by filter
91 packets dropped by kernel

Seperti yang Anda amati, tcpdump telah menangkap 264 paket. Misalnya, karena saya terhubung ke server ini menggunakan ssh , tcpdump menangkap semua paket ini.

Batasi jumlah pengambilan Paket

Untuk membatasi jumlah paket yang diambil dan menghentikan tcpdump , gunakan -c (batas pengambilan) opsi:

sudo tcpdump -i any -c 2

Ini akan menyebabkan perintah tcpdump berhenti menangkap secara otomatis setelah 2 paket. Kami tidak perlu menggunakan sinyal interupsi untuk menghentikannya secara manual dalam kasus ini.

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
10:57:31.284198 IP 111.11.111.11.vultr.com.ssh > 123.45.678.90.48006: Flags [P.], seq 4132754245:4132754353, ack 3344963698, win 1002, options [nop,nop,TS val 135747845 ecr 1624296856], length 108
10:57:31.284275 IP 111.11.111.11.vultr.com.ssh > 123.45.678.90.48006: Flags [P.], seq 108:144, ack 1, win 1002, options [nop,nop,TS val 135747845 ecr 1624296856], length 36
2 packets captured
16 packets received by filter
8 packets dropped by kernel

Opsi ini bisa sangat berguna dalam memantau koneksi jaringan untuk memecahkan masalah apa pun, jika ada masalah jaringan.

Nonaktifkan nama dan resolusi port

Secara default, tcpdump perintah menyelesaikan alamat IP dan port menjadi nama (seperti vultr.com.ssh , yang melakukan resolusi nama dari alamat IP dan port).

Saat memecahkan masalah jaringan, seringkali lebih mudah menggunakan alamat IP dan nomor port; Kita dapat menonaktifkan resolusi nama dengan menggunakan opsi -n dan resolusi port dengan -nn .

sudo tcpdump -i any -c 2 -nn

Perintah di atas menangkap 2 paket pada antarmuka apa pun, sambil menonaktifkan resolusi port.

Jadi output sekarang akan menghentikan resolusi nama apa pun, dan hanya mengembalikan alamat IP dan nomor port.

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
11:00:36.459922 IP 111.11.111.11.22 > 123.45.678.90.48006: Flags [P.], seq 4132755513:4132755621, ack 3344963838, win 1002, options [nop,nop,TS val 135933020 ecr 1624482048], length 108
11:00:36.459982 IP 111.11.111.11.22 > 123.45.678.90.48006: Flags [P.], seq 108:144, ack 1, win 1002, options [nop,nop,TS val 135933020 ecr 1624482048], length 36
2 packets captured
8 packets received by filter
0 packets dropped by kernel

Di sini, mari kita periksa satu baris output.

11:00:36.459922 IP 111.11.111.11.22 > 123.45.678.90.48006: Flags [P.], seq 4132755513:4132755621, ack 3344963838, win 1002, options [nop,nop,TS val 135933020 ecr 1624482048], length 108

Ini adalah tipikal TCP penangkapan paket. Paket dan format protokol lainnya dapat dirujuk di halaman manual perintah tcpdump.

Kolom pertama, 11:00:36.459922 , mewakili stempel waktu paket yang diterima sesuai dengan jam lokal.

Selanjutnya, IP mewakili protokol lapisan jaringan—dalam hal ini, IPv4 . Untuk IPv6 paket, nilainya adalah IP6 .

Kolom berikutnya, 111.11.111.11.22 , adalah alamat IP dan port sumber. Ini diikuti oleh alamat IP dan port tujuan, yang diwakili oleh 123.45.678.90.48006 .

Sekarang setelah kita mengetahui bagaimana format output dasarnya, mari kita menganalisis beberapa opsi pemfilteran untuk tcpdump

Memfilter Paket

Salah satu dari tcpdump fitur paling kuat dari perintah adalah kemampuannya untuk memfilter paket yang diambil menggunakan berbagai parameter, seperti alamat IP sumber dan tujuan, port, protokol, dll. Mari kita lihat beberapa yang paling umum.

Filter berdasarkan Protokol

Untuk memfilter paket berdasarkan protokol, kita perlu menentukan protokol dalam perintah.

Untuk menangkap ICMP paket saja, kami dapat memfilter berdasarkan ICMP protokol.

sudo tcpdump -i any -c 5 icmp

Sejak ping perintah menggunakan ICMP paket, kami dapat menganalisis paket yang masuk karena ping dari komputer lain.

Mari melakukan ping ke mesin kita saat ini dan menangkap paket ping yang masuk.

Buka sesi terminal di komputer lain, dan ketik

ping IP_ADDRESS_MACHINE_1

Sekarang, di tcpdump . kami sesi terminal, sekarang kita dapat melihat bahwa ia menangkap paket balasan ping ICMP tersebut.

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
11:18:47.947475 IP 123.45.678.90 > 111.11.111.11.vultr.com: ICMP echo request, id 6068, seq 1, length 64
11:18:47.947554 IP 111.11.111.11.vultr.com > 123.45.678.90: ICMP echo reply, id 6068, seq 1, length 64
11:18:48.947669 IP 123.45.678.90 > 111.11.111.11.vultr.com: ICMP echo request, id 6068, seq 2, length 64
11:18:48.947752 IP 111.11.111.11.vultr.com > 123.45.678.90: ICMP echo reply, id 6068, seq 2, length 64
11:18:49.947853 IP 123.45.678.90 > 111.11.111.11.vultr.com: ICMP echo request, id 6068, seq 3, length 64
5 packets captured
6 packets received by filter
0 packets dropped by kernel

Di sini, 123.45.678.90 adalah Alamat IP mesin (Mesin 2) yang mengirimkan ping ke tcpdump kami sistem, dan 111.11.111.11 adalah Alamat IP dari mesin pemfilteran paket (Mesin 1).

Karena saya menggunakan ssh untuk mengirim permintaan ping, ada resolusi domain (tetapi tidak ada resolusi nama) ke vultr.com .

Filter berdasarkan Host

Untuk membatasi pengambilan hanya pada paket yang terkait dengan host tertentu, kita dapat menggunakan host filter

sudo tcpdump -i any -c5 -nn host 192.168.1.2

Dalam contoh ini, tcpdump menangkap dan hanya menampilkan paket ke dan dari host 192.168.1.2 .

Filter berdasarkan Port

Untuk memfilter paket berdasarkan layanan atau port yang diinginkan, gunakan port Saring. Misalnya, ambil paket yang terkait dengan sesi ssh dengan menggunakan perintah ini (port 22 penyaringan):

sudo tcpdump -i any -c5 -nn port 22

Filter berdasarkan IP Sumber/nama host

Anda juga dapat memfilter paket berdasarkan alamat IP sumber atau tujuan atau nama host. Misalnya, untuk menangkap paket dari host 192.168.1.2

sudo tcpdump -i any -c 5 -nn src 192.168.1.2

Kita dapat menggunakan dst untuk memfilter menurut IP tujuan/nama host juga.

sudo tcpdump -i any -c 5 -nn src 172.168.1.2

Simpan tangkapan Paket

Kita bisa menyimpan hasil capture paket ke dalam file untuk dianalisis nanti.

Untuk menyimpan paket ke file alih-alih menampilkannya di layar, gunakan opsi -w :

sudo tcpdump -i any -c 5 -nn -w sample.pcap port 22

Perintah ini menyimpan output dalam file bernama sample.pcap . .pcap ekstensi adalah singkatan dari “packet capture” dan merupakan konvensi untuk format file ini.

Kesimpulan

Dalam tutorial ini, kita mempelajari bagaimana kita dapat melakukan pengambilan dan pemfilteran paket berdasarkan opsi yang berbeda, menggunakan tcpdump perintah.


Linux
  1. Perintah mv Linux

  2. Linux du perintah

  3. Perintah ip Linux

  1. Cara menangkap dan menganalisis paket dengan perintah tcpdump di Linux

  2. Perintah ifconfig Linux

  3. Perintah cd Linux

  1. Perintah Waktu Linux

  2. Perintah Ping di Linux

  3. Perintah Tonton Linux