Tiện ích Tcpdump mang lại giải pháp giúp bạn nắm bắt các gói dữ liệu, phục vụ cho mục đích phân tích lưu lượng truy cập. Ngoài ra, tiện ích này giúp quản trị viên theo dõi dữ liệu khi máy chủ gặp sự cố. Trong bài viết này, BKHOST sẽ cùng bạn thảo luận về các nội dung:
- Lệnh Tcpdump trong Linux là gì?
- Hướng dẫn cài đặt Tcpdump trong Linux chi tiết
Đây là những nội dung quan trọng giúp bạn hiểu rõ hơn về tiện ích Tcpdump.
Tcpdump là gì?
TCPdump là một công cụ mã nguồn mở được sử dụng trong hệ thống mạng để giám sát và phân tích lưu lượng mạng. Nó cho phép bạn ghi lại các gói tin đang truyền qua mạng và xem chúng theo thời gian thực. Điều này giúp bạn tìm ra các vấn đề và cung cấp các giải pháp để giải quyết chúng.
TCPdump được viết bằng ngôn ngữ lập trình C và hoạt động trên nhiều hệ điều hành, bao gồm cả Linux và Unix. Nó là một trong những công cụ mạnh mẽ và phổ biến nhất để giám sát và phân tích lưu lượng mạng, và được sử dụng rộng rãi trong các môi trường mạng lớn.
Tính năng và Ưu điểm của Tcpdump
- Giám sát và phân tích lưu lượng mạng: Tcpdump cho phép bạn theo dõi và phân tích lưu lượng mạng trong thời gian thực, giúp bạn tìm ra các vấn đề và cung cấp các giải pháp để giải quyết chúng.
- Tùy chỉnh: Tcpdump cung cấp rất nhiều tùy chọn cho phép bạn lọc và ghi lại các gói tin theo nhu cầu của bạn.
- Mã nguồn mở: Tcpdump là một phần mềm mã nguồn mở, cho phép bạn tùy chỉnh và mở rộng chương trình theo nhu cầu của mình.
- Phổ biến: Tcpdump là một trong những công cụ giám sát mạng phổ biến nhất và được sử dụng rộng rãi trong các môi trường mạng lớn.
Cài đặt Tcpdump trong Linux
Phần lớn thời gian sử dụng, bạn sẽ thấy Tcpdump trong Linux đã được cài đặt sẵn trong hệ thống của mình. Tuy nhiên, trong một số trường hợp, bản phân phối Linux không đi kèm gói, bạn sẽ cần cài đặt thủ công tiện ích này.
Để kiểm tra Tcpdump trong Linux đã được cài đặt chưa bạn có thể sử dụng lệnh which. Bạn sẽ nhận được đường dẫn thư mục (/usr/bin/Tcpdump) khi đã cài đặt gói. Khi cài đặt Tcpdump, bạn sẽ cần chi tiết các lệnh như:
- Cài đặt Tcpdump dựa trên Debian như Ubuntu:
sudo apt-get install Tcpdump
- Cài đặt Tcpdump trên CentOS:
sudo yum install Tcpdump
- Bản phân phối dựa trên Arch:
sudo pacman -S Tcpdump
- Cài đặt trên Fedora:
sudo dnf install Tcpdump
Tcpdump khi cài đặt bắt buộc hệ thống của bạn phải có libcap. Do đó, bạn cần đảm bảo gói này đã được cài đặt sẵn trên hệ thống của bạn.
Ví dụ về lệnh Tcpdump trong Linux
Sau khi tiện ích Tcpdump trong Linux được cài đặt thành công, chúng ta sẽ thực hiện theo dõi một số gói. Bạn sẽ cần thêm sudo vào các lệnh vì Tcpdump yêu cầu thực hiện hầu hết các thao tác.
Lấy danh sách toàn bộ Network Interfaces (giao diện mạng)
Khi bạn muốn kiểm tra những giao diện đã có sẵn để chụp, bạn sử dụng lệnh: Tcpdump -D
Thông qua --list-interfaces
làm đối số sẽ nhận được cùng một đầu ra: Tcpdump --list-interfaces
. Bạn sẽ nhận được danh sách toàn bộ giao diện mạng có trên hệ thống.
Sau đó, chúng ta thực hiện bước giám sát mạng thông qua cách chụp các gói trên hệ thống mạng. Bạn hoàn toàn có thể chỉ định giao diện bất kỳ để tiến hành chụp các gói với lệnh: Tcpdump --interface any
Định dạng đầu ra của Tcpdump
Định dạng chung hầu hết các gói tuân theo sẽ được hiển thị như sau:
{{EJS0}}
Đây là kết quả định dạng đầu ra của một gói duy nhất. Định dạng này sẽ chứa các thông tin cụ thể là:
- Dấu thời gian (
17:00:25.369138
) - Tên Interface (
wlp0s20f3
) - Lưu lượng gói (
Out
) - Tên giao thức mạng ( bạn có thể tìm thấy hai giao thức – IP và IP6, IP sẽ biểu thị cho IPV4 và IP6 cho IPV6)
- Địa chỉ IP và chi tiết cổng (các địa chỉ IP được theo sau bởi số cổng)
- Cờ TCP (
Flags [P.]
) - Số thứ tự của dữ liệu trong gói (
seq 196:568
) - Xác nhận dữ liệu (
ack 1
) - Kích thước cửa sổ (
win 309
) - Chiều dài gói tin (
length 33
)
Giới hạn số lượng gói mạng đã chụp
Tuy lệnh Tcpdump đầu tiên đang chạy nhưng hệ thống vẫn sẽ tiếp tục chụp các gói mạng cho đến khi nhận được tín hiệu ngắt từ bạn. Hệ thống cần nhận được thông báo lệnh dừng để ngừng chụp.
Tín hiệu có thể được ghi đè mặc định với lệnh: Tcpdump --interface any -c 10
. Hiểu đơn giản, lệnh này thể hiện rằng sẽ chụp mười gói bất kỳ trong khi giao diện mạng đang hoạt động.
Dựa trên các trường tiến hành lọc gói
Việc nhận được khối lượng văn bản đầu ra trên thiết bị đầu cuối là điều có thể xảy đến trong khi bạn đang khắc phục các sự cố, khiến công việc trở lên khó khăn hơn. Lúc này Tcpdump sẽ phát huy vai trò quan trọng của mình, đó là:
- Chỉ chụp các gói TCP nhập lệnh:
Tcpdump --interface any -c 5 tcp
- Lọc đầu ra bằng số cổng:
Tcpdump --interface any -c 5 port 50
- Chi tiết gói cho một máy chủ cụ thể:
Tcpdump --interface any -c 5 host 112.123.13.145
- Lọc các gói được gửi/nhận bởi một máy chủ cụ thể bạn có thể dùng lệnh:
Tcpdump --interface any -c 5 src 112.123.13.145
Tcpdump --interface any -c 5 dst 112.123.13.145
Ngoài ra, bạn cũng có thể dùng các toán tử logic and và or để kết hợp hai hay nhiều biểu thức. Chẳng hạn như, bạn muốn nhận nhận các gói thuộc về IP nguồn 112.123.13.145
và sử dụng cổng 80
. Bạn có thể sử dụng lệnh:
{{EJS1}}
Trong trường hợp gặp các biểu thức phức tạp, chúng ta có thể nhóm chúng lại với nhau bằng dấu ngoặc đơn theo lệnh. Ví dụ lệnh sau:
{{EJS2}}
Xem xét, phân tích nội dung của gói mạng
Sau khi thực hiện xong các bước trên, chúng ta đến với việc phân tích nội dung gói mạng. Bạn dùng cờ -A và -x kết hợp với lệnh Tcpdump để thực hiện hành động này.
Cờ -A
được viết tắt từ định dạng ASCII và -x
là biểu thị cho định dạng thập lục phân. Cụ thể về lệnh này là:
- Cờ -A:
Tcpdump --interface any -c 1 -A
- Cờ -x:
Tcpdump --interface any -c 1 -x
Lưu lại dữ liệu chụp vào tệp
Dữ liệu chụp sau khi tiến hành phân tích, xem xét có thể được lưu trữ lại nhằm mục đích tham khảo. Tcpdump trong Linux sẽ hỗ trợ bạn hoàn thành công việc này thông qua các lệnh khác nhau.
Chuyển cờ -w
với lệnh mặc định nhằm mục đích ghi đầu ra vào tệp thay vì cho nó hiển thị ra ngoài màn hình của bạn:
{{EJS3}}
Một cách làm khác để lưu lại dữ liệu chụp vào trong một tệp thông qua tiện ích Tcpdump trong Linux đó là sử dụng cờ -v
. Với cách này bạn nhập lệnh:
{{EJS4}}
Phần mở rộng trong các lệnh trên với tệp đuôi .pcap
là viết tắt của dữ liệu chụp gói. Khi sử dụng Tcpdump trong Linux để đọc tệp này, bạn cần sử dụng cờ -r
(viết tắt của Read) với lệnh:
{{EJS5}}
Tổng kết về Tcpdump
TCPdump là một công cụ giám sát và phân tích mạng rất mạnh mẽ và hữu ích. Nó cho phép bạn theo dõi và ghi lại các gói tin truyền qua mạng, giúp bạn tìm ra và giải quyết các vấn đề liên quan đến mạng. TCPdump cung cấp rất nhiều tùy chọn cho phép bạn lọc và ghi lại chính xác những gói tin mà bạn quan tâm, và do đó giúp bạn tiết kiệm thời gian và tăng hiệu suất công việc. Nếu bạn là một quản trị mạng hoặc nhà phát triển mạng, hãy sử dụng TCPdump để giúp bạn quản lý và phân tích mạng một cách dễ dàng và hiệu quả.