Lệnh tcpdump: Cách để kiểm soát tất cả các gói UDP trên Linux

Tác giả: VPS chính hãng 22 tháng 12, 2023

Tiện ích dòng lệnh tcpdump nắm bắt và phân tích lưu lượng mạng trong thời gian thực. Người dùng có thể chụp các gói từ giao diện mạng và hiển thị nội dung của các gói trên thiết bị đầu cuối. Nó bao gồm các tiêu đề của gói và dữ liệu tải trọng của một số loại gói nhất định. Nó có nhiều ứng dụng khác nhau để giám sát lưu lượng mạng nhằm mục đích gỡ lỗi, bảo mật và khắc phục sự cố. Bài viết này sẽ minh họa quy trình kiểm soát tất cả các gói UDP bằng lệnh tcpdump trong Linux.

Làm cách nào để kiểm soát tất cả các gói UDP bằng tcpdump?

Lệnh tcpdump là một tiện ích dòng lệnh mà bạn có thể sử dụng để nắm bắt và kiểm tra lưu lượng truy cập mạng đến và đi từ hệ thống của mình. Đây là công cụ được các quản trị viên mạng sử dụng phổ biến nhất để khắc phục sự cố mạng và kiểm tra bảo mật.

Bất chấp tên gọi của nó, với tcpdump, bạn cũng có thể kiểm soát lưu lượng truy cập không phải TCP như UDP, ARP hoặc ICMP. Các gói đã chụp có thể được ghi vào một tệp hoặc đầu ra tiêu chuẩn. Một trong những tính năng mạnh mẽ nhất của lệnh tcpdump là khả năng sử dụng các bộ lọc và chỉ thu thập dữ liệu bạn muốn phân tích. Theo mặc định, lệnh tcpdump sẽ chụp tất cả các gói UDP trên giao diện được chỉ định. Để nắm bắt tất cả các gói UDP thông qua lệnh “tcpdump”, hãy làm theo các hướng dẫn bên dưới.

Cài đặt tcpdump

tcpdump được cài đặt theo mặc định trên hầu hết các bản phân phối Linux và macOS. Để kiểm tra xem lệnh tcpdump có sẵn trên hệ thống của bạn hay không:

tcpdump --version

Đầu ra sẽ trông giống như thế này:

tcpdump version 4.9.2
libpcap version 1.8.1
OpenSSL 1.1.1b  26 Feb 2023

Nếu tcpdump không có trên hệ thống của bạn, lệnh trên sẽ in ra “tcpdump: command not Found”. Bạn có thể dễ dàng cài đặt tcpdump bằng trình quản lý gói của bản phân phối.

  • Cài đặt tcpdump trên Ubuntu và Debian:
sudo apt update && sudo apt install tcpdump
  • Cài đặt tcpdump trên CentOS và Fedora:
sudo apt update && sudo apt install tcpdump
  • Cài đặt tcpdump trên Linux Arch:
sudo pacman -S tcpdump

Điều kiện để liệt kê tất cả các giao diện mạng có sẵn

Trước khi “bắt” được các gói UDP cần phải biết về giao diện mạng, bên cạnh việc cần có cho mình một máy chủ đảm bảo như mua VPS Linux Việt Nam, thì bạn nên liệt kê tất cả các giao diện mạng có sẵn trên hệ thống. Để làm được điều này hãy thực thi lệnh “tcpdump” với tùy chọn “list-interfaces” như bên dưới:

$ sudo tcpdump --list-interfaces
Đầu ra sẽ cho thấy các giao diện mạng của hệ thống hiện tại

Đầu ra sẽ cho thấy các giao diện mạng của hệ thống hiện tại

Ví dụ: giao diện mạng “ens33” sẽ được sử dụng cho các ví dụ khác.

=>> Dùng lệnh ifconfig để cấu hình và quản lý giao diện mạng trong Linux

Các ví dụ về cách để kiểm soát tất cả các gói UDP trên Linux

Ví dụ 1: Chụp tất cả các gói UDP

Để kiểm soát tất cả các gói UDP, hãy sử dụng lệnh “tcpdump” với tùy chọn “i” và chỉ định giao diện mạng của máy. Ở đây, “ens33” là tên của giao diện mạng:

$ sudo tcpdump -i ens33 udp

Sau khi thực hiện lệnh, cuộn xuống terminal. Người dùng có thể hiển thị rằng các gói UDP đã được ghi lại trong hình được đánh dấu bên dưới:

Đầu ra hiển thị các gói UDP được chụp lại

Đầu ra hiển thị các gói UDP được chụp lại

Đầu ra bao gồm thông tin như địa chỉ IP nguồn và đích, giao thức, số cổng và dữ liệu tải trọng.

Ví dụ 2: Chụp tất cả các gói UDP của một địa chỉ cụ thể

Để chụp các gói UDP có địa chỉ IP nguồn hoặc đích cụ thể, hãy sử dụng tùy chọn “i” để hiển thị giao diện mạng và tùy chọn “src” để lọc địa chỉ nguồn. Ví dụ: chụp các gói UDP có địa chỉ IP nguồn là “192.168.157.149” bằng lệnh sau:

$ sudo tcpdump -i ens33 src 192.168.157.149
Đầu ra cho thấy các gói UDP đã được ghi lại với địa chỉ IP nguồn được chỉ định

Đầu ra cho thấy các gói UDP đã được ghi lại với địa chỉ IP nguồn được chỉ định

Ví dụ 3: Hiển thị nội dung của các gói UDP đã kiểm soát

Để hiển thị nội dung của các gói, hãy sử dụng lệnh tcpdump với tùy chọn “c” để chụp khung. Ví dụ: chỉ định 5 khung của gói UDP để hiển thị trong thiết bị đầu cuối:

$ sudo tcpdump -c 5 -x

Đầu ra sẽ hiển thị nội dung của các gói UDP đã chụp được trong thiết bị đầu cuối

Ví dụ 4: Lọc gói dựa trên cổng hoạt động

Người dùng có thể lọc các gói dựa trên cổng đang hoạt động thông qua lệnh “tcpdump”. Để làm như vậy, hãy chỉ định số cổng “80” trong lệnh sau:

$ sudo tcpdump -c 5 port 80
Đầu ra cho thấy 5 gói đã được chụp và nhận qua cổng 80

Đầu ra cho thấy 5 gói đã được chụp và nhận qua cổng 80

Đọc và ghi ảnh chụp vào một tập tin

Một tính năng hữu ích khác của tcpdump là ghi các gói vào một tệp. Điều này rất hữu ích khi bạn đang chụp một số lượng lớn gói hoặc chụp các gói để phân tích sau này. Để bắt đầu ghi vào một tệp, hãy sử dụng tùy chọn -w theo sau là tệp chụp đầu ra:

sudo tcpdump -n -w data.pcap

Lệnh trên sẽ lưu bản chụp vào một tệp có tên data.pcap. Bạn có thể đặt tên tệp theo ý muốn, nhưng quy ước chung là sử dụng phần mở rộng .pcap. Khi tùy chọn -w được sử dụng, đầu ra không được hiển thị trên màn hình. tcpdump ghi các gói thô và tạo một tệp nhị phân không thể đọc được bằng trình soạn thảo văn bản thông thường.

Để kiểm tra nội dung của tệp, hãy gọi tcpdump bằng tùy chọn -r:

sudo tcpdump -r data.pcap

Nếu bạn muốn chạy tcpdump ở chế độ nền, hãy thêm ký hiệu dấu và (&) vào cuối lệnh. Tệp chụp cũng có thể được kiểm tra bằng các công cụ phân tích gói khác như Wireshark.

Khi chụp các gói trong một thời gian dài, bạn có thể bật tính năng xoay tệp. tcpdump cho phép bạn tạo các tệp mới và xoay tệp kết xuất theo một khoảng thời gian được chỉ định hoặc kích thước cố định. Lệnh sau sẽ tạo tối đa mười tệp 200 MB, được đặt tên là file.pcap0, file.pcap1, v.v.: trước khi ghi đè các tệp cũ hơn.

sudo tcpdump -n -W 10 -C 200 -w /tmp/file.pcap

Khi mười tệp được tạo, các tệp cũ hơn sẽ bị ghi đè. Lưu ý rằng bạn chỉ nên chạy tcpdump khi khắc phục sự cố.

Nếu bạn muốn bắt đầu tcpdump vào một thời điểm cụ thể, bạn có thể sử dụng cronjob. tcpdump không có tùy chọn thoát sau một thời gian nhất định. Bạn có thể sử dụng lệnh hết thời gian chờ để dừng tcpdump sau một thời gian. Ví dụ để thoát sau 5 phút, bạn sẽ sử dụng:

sudo timeout 300 tcpdump -n -w data.pcap

Các tính năng tiên tiến

Tcpdump là một công cụ mạnh mẽ với nhiều tính năng nâng cao. Người dùng có thể làm quen với cú pháp và các tùy chọn của nó để sử dụng hiệu quả bằng cách thực hiện lệnh “man tcpdump”:

$ man tcpdump
Lệnh trên truy cập trang hướng dẫn tcpdump và tìm hiểu thêm về các khả năng của nó

Lệnh trên truy cập trang hướng dẫn tcpdump và tìm hiểu thêm về các khả năng của nó

Để chụp tất cả các gói UDP bằng lệnh tcpdump, hãy thực thi lệnh “sudo tcpdump -i <network_interface> udp”. Bằng cách này, tcpdump sẽ ghi lại các gói UDP trên giao diện được chỉ định và hiển thị chúng trên thiết bị đầu cuối theo thời gian thực. Các giao diện mạng khả dụng có thể được hiển thị thông qua lệnh “sudo tcpdump –list-interfaces”. Vậy là bài viết này đã giải thích quy trình chụp tất cả các gói UDP và các ứng dụng khác nhau bằng lệnh tcpdump. Mọi câu hỏi vui lòng để lại dưới phần bình luận của VPS Chính hãng. Chúc các bạn thành công!