GNU/Linux >> Belajar Linux >  >> Linux

Memfilter tcpdump:Membuat keteraturan dari kekacauan

Dalam artikel terakhir saya, Pemecahan Masalah dengan tcpdump, saya melihat tcpdump alat, beberapa kasus penggunaan dasar, dan berjalan melalui mock-up skenario dunia nyata. Sekarang, saya ingin menggali lebih jauh. Setiap orang yang menggunakan alat ini dalam situasi nyata segera menyadari berapa banyak informasi (saya yakin mereka menyebutnya "verbose"...) yang disajikan kepada pengguna. Salah satu hal terbaik yang dapat Anda lakukan untuk diri sendiri adalah mencari cara praktis untuk menyaring informasi yang Anda butuhkan. Mari kita lihat beberapa cara untuk melakukannya.

Opsi pemfilteran umum

tcpdump alat ini memiliki beberapa cara bawaan yang berbeda untuk memfilter tangkapan itu sendiri. Ini berarti Anda dapat mempersempit informasi yang Anda terima bahkan sebelum pengambilan dimulai. Ini sangat disukai dan membuat pemfilteran pasca-penangkapan menjadi proses yang tidak terlalu membosankan. Beberapa filter pra-tangkap yang dapat Anda gunakan adalah sebagai berikut:

Untuk memfilter menurut alamat IP:

$ sudo tcpdump host x.x.x.x

Untuk memfilter menurut antarmuka:

$ sudo tcpdump -i eth0

Untuk memfilter menurut sumber:

$ sudo tcpdump src x.x.x.x

Untuk memfilter menurut tujuan:

$ sudo tcpdump dst x.x.x.x

Untuk memfilter menurut protokol:

$ sudo tcpdump icmp

Daftar ini tidak mencakup setiap opsi yang tersedia tetapi memberi Anda titik awal yang baik. Selanjutnya, mari kita lihat beberapa cara lain untuk memanipulasi tangkapan.

Menulis tangkapan ke file (pcap)

Karena sifat pemecahan masalah, saya merasa berguna untuk mendokumentasikan apa yang saya lihat saat menangkap dengan tcpdump . Untungnya, tcpdump memiliki format file output yang menangkap semua data yang kita lihat. Format ini disebut pengambilan paket file, alias PCAP, dan digunakan di berbagai utilitas, termasuk penganalisis jaringan dan tcpdump . Di sini, kami menulis ke file PACAP bernama output_file dengan menggunakan -w beralih.

[root@server ~]# tcpdump -i enp0s8 -c100 -nn -w output_file
tcpdump: listening on enp0s8, link-type EN10MB (Ethernet), capture size 262144 bytes
100 packets captured
102 packets received by filter
0 packets dropped by kernel

Membaca file pcap

Anda dapat membaca file PCAP dengan menggunakan -r mengalihkan. Perhatian—jika Anda mencoba membaca file PCAP melalui cara konvensional (cat , Vim, dll.), Anda akan menerima omong kosong yang tidak dapat dibaca. Jika Anda ingin menggunakan program tersebut untuk melihat output Anda, teruslah membaca.

$ tcpdump -r output_file

Menulis tcpdump ke .txt

Jika Anda ingin menggunakan cara konvensional untuk membaca file keluaran Anda, Anda perlu menjalankan kembali tcpdump , tidak termasuk -w bendera. Anda dapat melihat di bawah bahwa kami menggunakan output standar untuk format file dengan nama file output.txt .

[root@server ~]# tcpdump -i enp0s8 -c100 -nn > output.txt
  tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
  listening on enp0s8, link-type EN10MB (Ethernet), capture size 262144 bytes
  100 packets captured
  102 packets received by filter
  0 packets dropped by kernel

Contoh

Sebelum kita melangkah lebih jauh, saya ingin menjelaskan skenario yang telah saya siapkan untuk sisa artikel ini. Kami memiliki tiga VM yang berjalan di jaringan yang sama. Baik Klien 1 dan Klien 2 akan melakukan ping ke server tanpa henti. Kami akan menangkap lalu lintas ICMP pada antarmuka enp0s8 pada Server VM dan kemudian memfilter paket dari setiap mesin klien. Saya menyadari ini adalah latihan yang agak sederhana, tetapi prinsipnya dapat diterapkan ke lingkungan dunia nyata yang lebih kompleks.

  • Server - 172.25.1.5
  • Klien 1 - 172.25.1.4
  • Klien 2 - 172.25.1.7

Selanjutnya, kita melihat dua perintah yang digunakan untuk menghasilkan tangkapan kita:

  1. Tulis ke file PCAP - tcpdump -i enp0s8 -c100 -nn -w output_file
  2. Tulis ke file TXT - tcpdump -i enp0s8 -c100 -nn > output.txt

Satu-satunya perbedaan penting di sini adalah format output. Anda melihat bahwa kami menangkap lalu lintas di antarmuka enp0s8 dan kami membatasi pengambilan hingga 100 paket tanpa nama atau resolusi port. Sekarang, mari kita filter file kita hanya untuk lalu lintas dari Klien 1.

Untuk melakukan ini, kami menggunakan salah satu dari dua string perintah (bergantung pada format file tangkapan kami):

Filter keluaran PCAP - tcpdump -r output_file | grep -i 172.25.1.4

[root@server ~]# tcpdump -r output_file | grep -i 172.25.1.4
reading from file output_file, link-type EN10MB (Ethernet)
22:01:14.947643 IP 172.25.1.4 > server.example.com: ICMP echo request, id 1, seq 109, length 64
22:01:14.947704 IP server.example.com > 172.25.1.4: ICMP echo reply, id 1, seq 109, length 64
22:01:16.023097 IP 172.25.1.4 > server.example.com: ICMP echo request, id 1, seq 110, length 64
22:01:16.023153 IP server.example.com > 172.25.1.4: ICMP echo reply, id 1, seq 110, length 64
22:01:17.081338 IP 172.25.1.4 > server.example.com: ICMP echo request, id 1, seq 111, length 64
22:01:17.081386 IP server.example.com > 172.25.1.4: ICMP echo reply, id 1, seq 111, length 64
22:01:18.103740 IP 172.25.1.4 > server.example.com: ICMP echo request, id 1, seq 112, length 64
22:01:18.103784 IP server.example.com > 172.25.1.4: ICMP echo reply, id 1, seq 112, length 64
22:01:19.128568 IP 172.25.1.4 > server.example.com: ICMP echo request, id 1, seq 113, length 64
22:01:19.128646 IP server.example.com > 172.25.1.4: ICMP echo reply, id 1, seq 113, length 64
22:01:20.129531 IP 172.25.1.4 > server.example.com: ICMP echo request, id 1, seq 114, length 64
22:01:20.129577 IP server.example.com > 172.25.1.4: ICMP echo reply, id 1, seq 114, length 64
22:01:21.175573 IP 172.25.1.4 > server.example.com: ICMP echo request, id 1, seq 115, length 64
22:01:21.175631 IP server.example.com > 172.25.1.4: ICMP echo reply, id 1, seq 115, length 64
22:01:22.199852 IP 172.25.1.4 > server.example.com: ICMP echo request, id 1, seq 116, length 64
22:01:22.199899 IP server.example.com > 172.25.1.4: ICMP echo reply, id 1, seq 116, length 64
22:01:23.231032 IP 172.25.1.4 > server.example.com: ICMP echo request, id 1, seq 117, length 64
22:01:23.231083 IP server.example.com > 172.25.1.4: ICMP echo reply, id 1, seq 117, length 64
22:01:24.247585 IP 172.25.1.4 > server.example.com: ICMP echo request, id 1, seq 118, length 64
22:01:24.247660 IP server.example.com > 172.25.1.4: ICMP echo reply, id 1, seq 118, length 64
22:01:25.248875 IP 172.25.1.4 > server.example.com: ICMP echo request, id 1, seq 119, length 64
22:01:25.248937 IP server.example.com > 172.25.1.4: ICMP echo reply, id 1, seq 119, length 64
22:01:26.295889 IP 172.25.1.4 > server.example.com: ICMP echo request, id 1, seq 120, length 64
22:01:26.295946 IP server.example.com > 172.25.1.4: ICMP echo reply, id 1, seq 120, length 64
22:01:27.255274 ARP, Request who-has server.example.com tell 172.25.1.4, length 46

*Edited for length*

atau

Filter keluaran TXT - cat output.txt | grep -i 172.25.1.4

[root@server ~]# cat output.txt | grep -i 172.25.1.4
12:03:56.653494 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 342, length 64
12:03:56.653534 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 342, length 64
12:03:57.674036 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 343, length 64
12:03:57.674089 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 343, length 64
12:03:58.701049 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 344, length 64
12:03:58.701107 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 344, length 64
12:03:59.721996 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 345, length 64
12:03:59.722134 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 345, length 64
12:04:00.746748 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 346, length 64
12:04:00.746805 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 346, length 64
12:04:01.774055 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 347, length 64
12:04:01.774130 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 347, length 64
12:04:02.793968 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 348, length 64
12:04:02.794012 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 348, length 64
12:04:03.846026 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 349, length 64
12:04:03.846082 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 349, length 64
12:04:04.918800 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 350, length 64
12:04:04.918850 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 350, length 64
12:04:05.930499 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 351, length 64
12:04:05.930543 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 351, length 64
12:04:06.954222 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 352, length 64
12:04:06.954269 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 352, length 64
12:04:07.990890 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 353, length 64
12:04:07.990937 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 353, length 64
12:04:09.002781 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 354, length 64
12:04:09.002842 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 354, length 64
12:04:10.032385 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 355, length 64
12:04:10.032451 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 355, length 64
12:04:11.055533 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 356, length 64
12:04:11.055583 IP 172.25.1.5 > 172.25.1.4: ICMP echo reply, id 1, seq 356, length 64
12:04:12.074288 IP 172.25.1.4 > 172.25.1.5: ICMP echo request, id 1, seq 357, length 64

*Edited for length*

Untuk memeriksa lalu lintas ke/dari Klien 2, kita hanya perlu mengubah alamat IP di grep pertanyaan. Metode ini berfungsi untuk nama host, nomor port, dan kata kunci lain yang Anda temukan di file pengambilan. Contoh khusus ini menunjukkan kekuatan pra dan pasca-pemfilteran. Pra-pemfilteran terjadi ketika kami hanya menangkap melalui antarmuka tertentu, dan pasca-pemfilteran terjadi ketika kami menerapkan grep query ke file capture.

Bawa pulang

Yang ingin saya komunikasikan adalah tcpdump adalah alat yang sangat kuat. Namun, teknologi canggih sering kali dipenuhi dengan informasi yang mungkin tidak sesuai dengan kebutuhan spesifik Anda. Dengan beberapa pemikiran dan perencanaan, Anda dapat memfilter sebelumnya pengambilan untuk mempersempit jumlah lalu lintas yang ditangkap, lalu menggunakan grep yang cerdas atau awk kueri pada file keluaran untuk menemukan interaksi lalu lintas yang Anda cari dengan cepat. Strategi ini, bila diterapkan dengan benar, dapat mempercepat upaya pemecahan masalah secara eksponensial. Sekarang, ini untuk berharap bahwa Anda tidak perlu mempraktikkannya dalam waktu dekat.

[ Pelajari cara menambahkan otomatisasi ke perangkat jaringan Anda dengan ebook gratis ini. ]


Linux
  1. Ambil nama file dari deskriptor file di C

  2. Bagaimana cara membuat file di Linux dari jendela terminal?

  3. Buat PEM dari file PPK

  1. Membuat file CSR sertifikat web.

  2. menyalin file dari windows ke Linux

  3. xauth tidak membuat file .Xauthority

  1. Urutan Pengalihan?

  2. Ganti Garis yang Mencocokkan Pola Dengan Garis Dari File Lain Secara Berurutan?

  3. Bagaimana Cara Cat File Dari Awk?