Các tham số Tcpdump. Lọc không khí! Chúng tôi kiểm tra lưu lượng mạng bằng tcpdump. Chế độ xem đầu ra thô

Khá thường xuyên trong quản trị hệ thống, các tình huống phát sinh đòi hỏi phải xem “bức tranh” chi tiết về những gì đang xảy ra với việc truyền dữ liệu qua mạng. Tiện ích phân tích gói cho phép bạn giám sát lưu lượng và xác định các vấn đề trong những trường hợp như vậy. Một trong số đó (và phổ biến nhất) là tcpdump, một trình phân tích gói tiêu chuẩn cho hệ thống Linux.

Ngoài tcpdump, còn có các công cụ khác để phân tích lưu lượng mạng, ví dụ như Wireshark và Tshark, là những phiên bản cải tiến của tcpdump nhưng tiện ích tcpdump vẫn giữ nguyên tiêu chuẩn và vẫn hiệu quả. Với sự trợ giúp của nó, bạn có thể chặn, lọc theo các tiêu chí nhất định và cũng có thể hiển thị các gói. Cần lưu ý rằng để có toàn quyền truy cập vào các gói, bạn phải chạy tcpdump với tư cách là siêu người dùng, vì bản thân các gói là đối tượng hệ thống cấp thấp. Ngoài ra, có một số điều kiện nhất định, tùy thuộc vào thiết bị mạng, cho phép (hoặc không cho phép) chặn tất cả hoặc chỉ một số gói nhất định hoặc chỉ cung cấp một số thông tin nhất định về chúng. Thiết bị mạng (card mạng, bộ định tuyến, v.v.) phải hỗ trợ/cho phép truy cập vào các gói, tức là có (hoặc cung cấp) cơ chế truyền thông tin về các gói lên cấp độ phần mềm cao hơn và trong trường hợp này là tcpdump, cũng như các máy phân tích gói khác. ra sao cho hiệu quả nhất. Nhân tiện, các giao diện phần cứng, nếu chúng hoạt động ở chế độ “chế độ lăng nhăng”, tức là ở chế độ được gọi là “chế độ lăng nhăng”, sẽ cho phép nhân hệ thống “nhìn thấy” tất cả các gói, tức là ngay cả những gói được gửi đến các máy tính khác và thiết bị.

tcpdump hoạt động như thế nào

Như đã lưu ý, tcpdump là một tiện ích tiêu chuẩn để phân tích lưu lượng mạng trong các bản phân phối Linux. Tác giả của tiện ích này là Van Jacobson. Trong suốt thời gian sử dụng, tcpdump đã chứng tỏ mình là một công cụ rất hiệu quả và đáng tin cậy. Do đó, hiện tại, nhiều thiết bị tương tự sử dụng định dạng tcpdump - libcap làm định dạng tệp chính để đọc/ghi kết quả theo dõi lưu lượng truy cập.

Khi chạy, tcpdump tự động tìm kiếm các giao diện mạng và sử dụng giao diện mạng đầu tiên được tìm thấy để phân tích. Vì vậy, bạn cần chú ý đến đầu ra để đảm bảo rằng giao diện đang được phân tích cú pháp chính xác. Nếu không, bạn có thể dễ dàng thiết lập thủ công giao diện mong muốn để sử dụng. Tiện ích này có thể hoạt động ở chế độ rất hữu ích khi dịch vụ DNS không hoạt động hoặc quá chậm, tức là khi có nguy cơ các gói bị mất trước khi tcpdump có thể phân tích chúng.

tùy chọn tcpdump

Để chỉ định giao diện mạng mong muốn, hãy sử dụng tùy chọn -i. Nếu bạn cần biết địa chỉ của thiết bị (máy tính, thiết bị), thì bạn cần chỉ định tùy chọn -n. Điều này cũng rất hữu ích cho các vấn đề về DNS. Tùy chọn -r cho phép bạn đọc thông tin gói từ một tệp. Khi cần thêm thông tin chi tiết về các gói, tùy chọn -v sẽ giúp ích. Ngoài ra còn có tùy chọn -w để nắm bắt thông tin trong một tệp. Cần lưu ý rằng khi sử dụng tùy chọn -w, chỉ thông tin tiêu đề gói được ghi vào tệp. Tùy chọn -s có giá trị 1056 (mặc dù giá trị này phụ thuộc vào kích thước của gói MTU) cho phép (cùng với -w) ghi thông tin bổ sung vào tệp. Khối lượng dữ liệu có thể rất lớn và phức tạp về cấu trúc (mặc dù thực tế đó là văn bản) và do đó, trong tương lai, nên sử dụng các tiện ích hiệu suất cao thích hợp, chẳng hạn như để xử lý chúng.

Định dạng lệnh tcpdump như sau:

tcpdump[-options] [bộ lọc]

Trong tài liệu chính thức (lệnh man tcpdump), bạn có thể tìm thấy một số ví dụ về cách sử dụng tiện ích này cho các trường hợp khác nhau bằng cách sử dụng các bộ lọc khá đa dạng và phức tạp.

Điều quan trọng cần lưu ý là tcpdump (và thực tế là tất cả các máy phân tích gói) trong quá trình hoạt động của chúng có thể tạo ra lượng thông tin khổng lồ và tải mạng rất lớn, thậm chí đến mức bị lỗi. Do đó, khi phân tích lưu lượng truy cập, bạn nên sử dụng cách tiếp cận hợp lý - tùy theo tình huống và điều kiện của nhiệm vụ (hoặc vấn đề), hãy sử dụng các bộ lọc, đặc biệt vì đây là một phần rất hiệu quả của chức năng tcpdump.

Các switch được sử dụng phổ biến nhất khi chạy tcpdump được hiển thị trong bảng

chìa khóa

Sự miêu tả

Chuyển đổi địa chỉ mạng và địa chỉ quảng bá thành tên miền.

Hiển thị dữ liệu lớp liên kết (địa chỉ MAC, giao thức, độ dài gói). Ngoài địa chỉ IP, địa chỉ MAC của máy tính sẽ được hiển thị.

Sử dụng bộ lọc nằm trong tệp. Nếu bạn sử dụng tùy chọn này, bộ lọc dòng lệnh sẽ bị bỏ qua.

Cho biết giao diện mạng nào sẽ được sử dụng để bắt các gói. Mặc định là eth0, để chọn tất cả các giao diện - bất kỳ. Nếu không có mạng cục bộ, bạn có thể sử dụng giao diện phản hồi lo.

Ví dụ, sử dụng đầu ra phát trực tuyến tiêu chuẩn của tcpdump (thiết bị xuất chuẩn) để ghi vào một tệp:

shell# tcpdump -l | tee out.log //sẽ hiển thị thao tác tcpdump và lưu kết quả vào file out.log

Không thêm phần mở rộng tên miền vào tên máy chủ. Ví dụ tcpdump sẽ hiển thị 'net' thay vì 'net.library.org'

Hiển thị địa chỉ IP thay vì tên máy chủ.

Hiển thị số cổng thay vì giao thức mà nó sử dụng.

Không đưa giao diện vào chế độ lăng nhăng.

Hiển thị thông tin tối thiểu. Thông thường, đây là tên của giao thức, nơi gói tin đến và đi, cổng và lượng dữ liệu được truyền.

Tùy chọn này cho phép tcpdump đọc lưu lượng truy cập từ một tệp nếu trước đó nó đã được lưu bằng tùy chọn -w.

Cho phép bạn tránh xử lý số thứ tự tuyệt đối (số thứ tự ban đầu - ISN) thành số tương đối.

Số byte gói mà tcpdump sẽ xử lý. Nếu bạn đặt số lượng lớn byte hiển thị, thông tin có thể không vừa với màn hình và có thể khó nghiên cứu. Tùy thuộc vào mục tiêu bạn đang theo đuổi, bạn nên chọn giá trị của tham số này. Theo mặc định, tcpdump ghi lại 68 byte đầu tiên (tối thiểu SunOS là 96 byte), nhưng nếu bạn muốn xem nội dung của toàn bộ gói, hãy sử dụng giá trị 1514 byte (kích thước khung hình tối đa được phép trên mạng Ethernet).

Không hiển thị dấu thời gian trên mỗi dòng.

Giải thích các gói của một loại nhất định. Các loại được hỗ trợ là aodv, cnfp, rpc, rtp, rtcp, snmp, tftp, vat, wb.

Hiển thị dấu thời gian chưa được định dạng trên mỗi dòng.

Hiển thị thời gian cùng với ngày.

Hiển thị thông tin chi tiết (TTL; ID; tổng chiều dài của tiêu đề, cũng như các tham số của nó; kiểm tra tổng kiểm tra các tiêu đề IP và ICMP)

Đầu ra của thông tin đầy đủ hơn chủ yếu liên quan đến NFS và SMB.

Hiển thị thông tin chi tiết nhất.

Lưu trữ dữ liệu tcpdump ở định dạng nhị phân. Ưu điểm của việc sử dụng phương pháp này so với chuyển hướng thông thường sang tệp là tốc độ ghi cao và khả năng đọc dữ liệu tương tự của các chương trình khác, chẳng hạn như snort, nhưng con người không thể đọc được tệp này. Có thể xuất dữ liệu nhị phân ra bàn điều khiển, để làm được điều này, bạn cần sử dụng -w -

Tạo bản in của gói ở dạng thập lục phân, hữu ích cho việc phân tích chi tiết hơn về gói. Lượng dữ liệu hiển thị phụ thuộc vào tham số -s

-x, nhưng bao gồm tiêu đề lớp liên kết

Xuất gói ở định dạng ASCII và hex. Hữu ích khi phân tích một sự cố hack vì nó cho phép bạn xem thông tin văn bản nào được truyền trong quá trình kết nối.

Tương tự như tùy chọn trước đó -X, nhưng bao gồm tiêu đề lớp liên kết.

tcpdump sẽ thoát sau khi nhận được số lượng gói được chỉ định.

Các gói đã thu thập sẽ được thêm ngay vào một tệp, nếu không sẽ được tích lũy trong bộ nhớ cho đến khi hết

bộ lọc tcpdump

Bộ lọc được chia thành các phân loại sau

chủ nhà- địa chỉ nút mạng

Hải cảng– cổng mà bạn cần bắt gói

xách đồ phạm vi cổng

mạng lưới- mạng lưới

Mạng Tcpdump 192.168.0.0/24

nắm bắt tất cả lưu lượng truy cập trong đó nguồn hoặc đích là địa chỉ IP từ mạng 192.168.0.0/24

Cổng tcpdump 80

Tất cả lưu lượng truy cập trên cổng 80 sẽ bị bắt.

Hướng giao thông liên quan đến đối tượng giám sát

src- người gửi

dst- người nhận

ví dụ lệnh

Máy chủ Src 172.31.25.200

Nắm bắt lưu lượng truy cập có địa chỉ IP người gửi là 172.31.25.200

Giao thức

ether– công nghệ mạng Ethernet cơ bản, theo quy tắc, chỉ ra rằng bộ lọc sử dụng địa chỉ MAC phần cứng

ip– Giao thức IPv4

ip6– Giao thức IPv6

arp– Giao thức ARP

tcp– Giao thức TCP

udp– Giao thức UDP

Nếu giao thức không được chỉ định thì lưu lượng truy cập cho tất cả các giao thức sẽ được ghi lại

Ví dụ như lệnh

Cổng UDP 5060

chụp lưu lượng truy cập qua cổng UDP 5060

Bộ lọc tổng hợp

Để lọc lưu lượng linh hoạt hơn, bạn có thể sử dụng các thao tác logic

"Và và (&&)

“HOẶC” – hoặc (||)

“KHÔNG” – không phải (!) – đảo ngược giá trị

Mức độ ưu tiên của các hoạt động này như sau:

hoạt động đảo ngược có mức độ ưu tiên cao nhất

sau đó logic “VÀ”

Hoạt động OR có mức độ ưu tiên thấp nhất.

Mức độ ưu tiên của các hoạt động có thể được thay đổi bằng dấu ngoặc đơn.

(net 172.16.0.0/24 hoặc máy chủ 172.31.0.5) và cổng tcp 80

thu thập lưu lượng giao thức TCP bằng cổng 80 thuộc mạng 172.16.0.0/24 hoặc máy chủ 172.31.0.5, cho bất kỳ máy chủ nào riêng lẻ hoặc cùng nhau

(net 172.16.0.0/24 || máy chủ 172.31.0.5) && không phải cổng tcp 80

nắm bắt mọi lưu lượng truy cập ngoại trừ lưu lượng giao thức TCP và sử dụng cổng 80 thuộc mạng 172.16.0.0/24 hoặc máy chủ 172.31.0.5, cho bất kỳ máy chủ nào riêng lẻ hoặc cùng nhau

ví dụ về tcpdump linux

Ghi đầu ra vào một tập tin

$ sudo tcpdump -w sshtrace.tcpdump cổng tcp 22

Tệp sshtrace.tcpdump sẽ được tạo theo mặc định trong thư mục chính của người dùng hiện tại. Để xuất thông tin từ tệp myrouter.tcpdump, hãy sử dụng tùy chọn -r:

$ tcpdump -r sshtrace.tcpdump

Xóa tất cả lưu lượng truy cập khỏi giao diện eth1

$ tcpdump –i eth1

Xóa lưu lượng truy cập khỏi một loạt cổng trên giao diện eth1

$ tcpdump -i eth1 portrange 100-200

tất cả lưu lượng truy cập đến 172.16.0.1 không phải là ICMP.

tcpdump là một trình phân tích dòng lệnh mạnh mẽ và Libpcap, một thư viện di động để nắm bắt lưu lượng mạng. Tcpdump in mô tả nội dung của các gói trên giao diện mạng khớp với biểu thức boolean. Nó cũng có thể được chạy với khóa chuyển -w, giúp nó lưu dữ liệu lô vào một tệp để phân tích sau này và/hoặc với cờ -r, khiến nó đọc từ tệp bó đã lưu. Sử dụng tiện ích này, bạn có thể chặn và phân tích lưu lượng truy cập mạng đi qua PC nơi chương trình này đang chạy.

Tôi muốn nói trong chủ đề “cài đặt và sử dụng tcpdump” này về việc cài đặt tcpdump, cũng như cách sử dụng nó và nó cần thiết để làm gì.

Với tcpdump bạn có thể:

  • Bạn có thể gỡ lỗi các ứng dụng mạng.
  • Bạn có thể gỡ lỗi toàn bộ mạng hoặc thiết bị mạng.

Để cài đặt tcpdump trên debian/ubuntu/linux mint bạn cần chạy:

# sudo apt-get cài đặt tcpdump

Để cài đặt tcpdump trên RedHat/CentOS/Fedora, hãy sử dụng:

# sudo yum cài đặt tcpdump

Để cài đặt tcpdump trên MacOS, hãy sử dụng.

# cài đặt tcpdump

Sử dụng tcpdump.

Để kiểm tra xem tcpdump có hoạt động với chúng tôi hay không, bạn có thể chạy lệnh:

# tcpdump -i eth0 cổng 80

Có khá nhiều công tắc để sử dụng chính tiện ích tcpdump, đây là danh sách các công cụ phổ biến:

Nếu bạn cần tìm hiểu gói nào được trao đổi giữa 21 máy chủ (ví dụ: your_server_1 và your_server_2), thì hãy sử dụng lệnh cho việc này:

# tcpdump lưu trữ your_server_1 và your_server_2

Nếu bạn chỉ cần giám sát các gói gửi đi từ máy chủ thì hãy chạy:

# tcpdump src lưu trữ your_server

Nếu bạn chỉ cần giám sát các gói tin đến từ máy chủ thì hãy chạy:

# tcpdump dst lưu trữ your_server

Bạn cũng có thể nghe các gói tin đi hoặc đến từ máy chủ và trên một cổng cụ thể, để thực hiện việc này, chỉ cần thêm cổng mà bạn muốn nghe (chủ yếu sử dụng 80, 8080).

Xem danh sách các giao diện mà bạn có thể nghe tcpdumt:

# tcpdump -D

Nghe giao diện eth0:

# tcpdump -i eth0

Nghe trên mọi giao diện có sẵn (Yêu cầu Linux kernel phiên bản 2.2 trở lên):

# tcpdump -i bất kỳ

Hiển thị mọi thứ trên màn hình (mọi thứ được chương trình thực thi):

# tcpdump -v

Hiển thị rất nhiều thứ trên màn hình (mọi thứ được chương trình thực thi):

# tcpdump -vv

Xuất rất nhiều thứ ra màn hình (mọi thứ được chương trình thực thi):

# tcpdump -vvv

Hiển thị không nhiều thông tin khi gói tin đang được bắt (không giống như gói tiêu chuẩn):

# tcpdump -q

Giới hạn chụp gói ở mức 100:

# tcpdump -c 100

Ghi tất cả dữ liệu (gói đã bắt) vào tệp có tên capture.cap:

# tcpdump -w capture.cap

Ghi tất cả dữ liệu (gói đã bắt) vào một tệp có tên capture.cap và hiển thị nó trên màn hình theo thời gian thực:

# tcpdump -v -w capture.cap

Đầu ra của các gói từ tệp capture.cap:

# tcpdump -r capture.cap

Các gói đầu ra từ tệp capture.cap sử dụng càng nhiều thông tin càng tốt:

# tcpdump -vvv -r capture.cap

IP đầu ra và các cổng thay vì tên miền là chụp gói:

# tcpdump -n

Chụp bất kỳ gói nào có máy chủ đích là 192.138.1.1. Hiển thị IP và cổng trên màn hình:

# tcpdump -n dst máy chủ 192.138.1.1

# tcpdump -n src máy chủ 192.138.1.1

Chụp bất kỳ gói nào từ máy chủ 192.138.1.1. Hiển thị IP và cổng trên màn hình:

# tcpdump -n máy chủ 192.138.1.1

Chụp các gói có mạng là 192.138.1.0/24. Hiển thị IP và cổng trên màn hình:

# tcpdump -n dst net 192.138.1.0/24

# tcpdump -n src net 192.138.1.0/24

Chụp các gói từ mạng 192.138.1.0/24. Hiển thị IP và cổng trên màn hình:

# tcpdump -n net 192.138.1.0/24

Capture gói tin từ cổng 23. Hiển thị IP và các cổng trên màn hình:

# tcpdump -n cổng dst 23

Capture gói tin từ cổng 1 đến cổng 1023. Hiển thị IP và cổng trên màn hình:

# tcpdump -n dst portrange 1-1023

Chỉ capture các gói tin TCP có đích trên các cổng từ 1 đến 1023. Hiển thị IP và các cổng trên màn hình:

# tcpdump -n tcp dst portrange 1-1023

Chỉ capture các gói UDP có đích đến trên các cổng từ 1 đến 1023. Hiển thị IP và các cổng trên màn hình:

# tcpdump -n udp dst portrange 1-1023

Chụp các gói từ đích có IP là 192.138.1.1 và cổng đích là 23. Hiển thị trên màn hình:

# tcpdump -n "máy chủ dst 192.138.1.1 và cổng dst 23"

Chụp các gói từ đích có IP là 192.138.1.1 và đích qua cổng 80 hoặc 443. Hiển thị:

# tcpdump -n "dst hosting 192.138.1.1 và (dst port 80 hoặc dst port 443)"

Chụp bất kỳ gói ICMP nào:

# tcpdump -v icmp

Chụp bất kỳ gói ARP nào:

# tcpdump -v arp

Chụp bất kỳ gói ICMP hoặc ARP nào:

# tcpdump -v "icmp hoặc arp"

Ghi lại bất kỳ gói nào được phát sóng hoặc phát đa hướng:

# tcpdump -n "phát sóng hoặc phát đa hướng"

Chụp các gói lớn (500 byte) thay vì 68b tiêu chuẩn:

# tcpdump -s 500

Ghi lại tất cả byte dữ liệu trong một gói:

# tcpdump -s 0

Xem "gói nặng":

# tcpdump -nnvvXSs 1514

Chụp các gói ICMP bằng ping và pong:

# tcpdump -nnvXSs 0 -c2 icmp

Kết luận không có nhiều lựa chọn:

# tcpdump -nS

Giao tiếp cơ bản (chế độ rất chi tiết), bạn có thể thấy lượng truy cập tốt, với mức độ chi tiết:

# tcpdump -nnvvS

Nhìn sâu vào lưu lượng truy cập, thêm -X cho tải trọng:

# tcpdump -nnvvXS

Xem gói nặng và tăng tốc độ chụp nhanh, chụp toàn bộ gói:

# tcpdump -nnvvXSs 1514

Bạn cũng có thể lọc dựa trên các phần cụ thể của gói cũng như nhóm nhiều điều kiện. Ví dụ: điều này rất hữu ích khi chỉ tìm kiếm SYN hoặc PCT và PCT sau này để cách ly lưu lượng truy cập nâng cao hơn nữa.

Cho tôi xem tất cả các gói KHẨN CẤP (URG):

# tcpdump "tcp & 32!=0"

Cho tôi xem tất cả các gói ACKNOWLEDGE (ACK):

# tcpdump "tcp & 16!=0"

Cho tôi xem tất cả các gói PUSH (PSH):

# tcpdump "tcp & 8!=0"

Cho tôi xem tất cả các gói RESET (RST):

# tcpdump "tcp & 4!=0"

Cho tôi xem tất cả các gói ĐỒNG BỘ (SYN):

# tcpdump "tcp & 2!=0"

Cho tôi xem tất cả các gói FINISH (FIN):

# tcpdump "tcp & 1!=0"

Cho tôi xem tất cả các gói ĐỒNG BỘ/XÁC NHẬN (SYNACK):

# tcpdump "tcp=18"

Chụp cờ TCP bằng tcpflags:

# tcpdump "tcp & & tcp-syn != 0"

Các gói có cờ RST và SYN (kiểm tra):

# tcpdump "tcp = 6"

Lưu lượng truy cập từ ‘Evil Bit’ (kiểm tra):

# tcpdump "ip & 128 != 0"

Đây là nơi tôi sẽ hoàn thành bài viết “cài đặt và sử dụng tcpdump” của mình, tôi hy vọng mọi thứ đều rõ ràng và dễ hiểu.

Tcpdump là một công cụ phân tích mạng cực kỳ tiện lợi, rất hữu ích cho cả quản trị viên mạng và các chuyên gia bảo mật. Đương nhiên, để có được thông tin tối đa khi làm việc với tcpdump, bạn chỉ cần hiểu biết về ngăn xếp giao thức TCP/IP. Để thuận tiện, bạn có thể sử dụng các chương trình thông minh và tiện lợi hơn, chẳng hạn, nhưng các tình huống thường phát sinh khi không thể cài đặt các dịch vụ bổ sung trên máy đang được thử nghiệm, và khi đó tcpdump đơn giản là không thể thay thế, bởi vì quản trị viên, vì mục đích phân tích. packets, không muốn cài đặt X- trên máy chủ Unix.Windows, đặc biệt vì trong hầu hết các hệ thống Unix, tiện ích tcpdump được cài đặt theo mặc định.

Việc hiểu giao thức TCP/IP mang lại phạm vi rộng cho việc sử dụng máy phân tích và khắc phục sự cố và sự cố mạng bằng cách phân tích gói. Vì việc sử dụng tối ưu tiện ích này đòi hỏi phải hiểu rõ về các giao thức mạng và hoạt động của chúng, điều này tạo ra một tình huống buồn cười trong đó kỹ sư trong mọi trường hợp cần phải biết và hiểu các cơ chế truyền dữ liệu trên mạng. bao gồm tcpdump hữu ích về mọi mặt: cả xử lý sự cố và tự học.

Dưới đây là một số tùy chọn sẽ giúp bạn sử dụng tiện ích này đầy đủ và chi tiết hơn, đặc biệt vì tất cả các hộp và chìa khóa này khá dễ bị quên và những ví dụ này rất hữu ích để làm mới bộ nhớ của bạn.

Khóa đầu tiên được sử dụng là -n, khóa này cấm các nỗ lực chuyển đổi địa chỉ thành tên miền, từ đó cung cấp cho chúng tôi địa chỉ IP sạch có cổng.

Thứ hai là -X chỉ định cho mỗi gói xuất ra cả nội dung hex và ASCII của gói.
Và tùy chọn cuối cùng là -S thay thế đầu ra của việc đánh số TCP tương đối bằng đầu ra tuyệt đối. Vấn đề là với cách đánh số tương đối, một số vấn đề có thể bị che giấu khỏi sự chú ý của bạn.

Bạn cần hiểu rằng ưu điểm chính của tcpdump so với các tiện ích khác là nó cho phép phân tích các gói một cách chi tiết và thủ công. Bạn cũng cần nhớ rằng theo mặc định tcpdump chỉ sử dụng 68 byte đầu tiên của gói, bao gồm cả. nếu bạn cần xem thêm thì bạn nên sử dụng khóa chuyển số -s, trong đó số là số byte cần được ghi lại. Nếu số 0 được chỉ định, gói sẽ bị bắt hoàn toàn, vì vậy tốt hơn nên sử dụng giá trị 1514, giá trị này sẽ bắt hoàn toàn gói tiêu chuẩn cho mạng Ethernet.

Danh sách các phím được sử dụng phổ biến nhất:
-c: kiểm tra kích thước của tệp chụp trước mỗi lần ghi tiếp theo của gói đã chụp; nếu kích thước lớn hơn thì tệp sẽ được lưu và bản ghi sẽ chuyển sang tệp mới
-e: In tiêu đề ethernet (lớp liên kết) trong mỗi dòng kết xuất
-i Any: Nghe trên tất cả các giao diện, trong trường hợp bạn cần tất cả lưu lượng truy cập.
-n: vô hiệu hóa việc phân giải địa chỉ thành tên miền hoặc tên tượng trưng
-nn: vô hiệu hóa việc phân giải địa chỉ và cổng thành tên miền hoặc tên tượng trưng
-q: Đầu ra thông tin ngắn gọn bằng cách giảm đầu ra của thông tin giao thức.
-X: In cả nội dung hex và ASCII của gói
-v, -vv, -vvv: Chỉ định đầu ra của thông tin bổ sung về các gói đã bắt, cho phép phân tích rộng hơn.
Một số ví dụ để sử dụng:

# Đầu ra gói tiêu chuẩn
tcpdump -nS
# Đầu ra tiêu chuẩn mở rộng
tcpdump -nnvvS
# Phân tích sâu một gói
tcpdump -nnvvXS
# Thông tin giao thông chi tiết nhất
tcpdump -nnvvXSs 1514

Biểu thức cho phép bạn thực hiện quét có mục tiêu hơn và chỉ định loại lưu lượng truy cập. Khả năng sử dụng các biểu thức làm cho tcpdump trở thành một công cụ rất hiệu quả trong tay người quản trị hệ thống. Có ba loại biểu thức chính: type, dir và proto.
Các tùy chọn cho biểu thức kiểu là máy chủ, mạng và cổng.
Để thể hiện hướng được chỉ định bởi thư mục, các tùy chọn hiện có là src, dst, src hoặc dst, và src và dst.
Một số biểu thức tiêu chuẩn:

máy chủ // phân tích lưu lượng truy cập dựa trên địa chỉ IP (cũng hoạt động với tên tượng trưng nếu -n không được chỉ định)
máy chủ tcpdump 1.2.3.4

src, dst // chỉ phân tích lưu lượng truy cập cho một đích hoặc bộ phát cụ thể
tcpdump src 2.3.4.5
tcpdump dst 3.4.5.6

net // nắm bắt lưu lượng truy cập thuộc một mạng cụ thể
mạng tcpdump 1.2.3.0/24

proto // hoạt động với tcp, udp và icmp. Cần phải nhớ rằng proto không được đề cập
tcpdump icmp

cổng // phân tích lưu lượng truy cập từ một cổng cụ thể (đến hoặc đi)
cổng tcpdump 3389

src, dst port // lọc dựa trên cổng vào hoặc cổng ra
cổng tcpdump src 1025
cổng dst tcpdump 3389

Nhưng công cụ mạnh mẽ nhất là toán hạng, cho phép bạn đặt điều kiện cho các biểu thức và tùy chọn để tách biệt thông tin chi tiết hơn về lưu lượng được phân tích.


và hoặc &&
HOẶC
hoặc hoặc ||
NGOẠI TRỪ
không hoặc!

Lưu lượng TCP từ tài nguyên 10.15.123.33 với cổng đích 3379:

# tcpdump -nnvvS tcp và src 10.15.123.33 và dst port 3379

Lưu lượng di chuyển từ mạng 192.168 đến đích trên mạng 10 hoặc 172.16:

# tcpdump -nvX src net 192.168.0.0/16 và dst net 10.0.0.0/8 hoặc 172.16.0.0/16

Lưu lượng không phải ICMP đến đích 192.168.0.2 và từ mạng 172.16:

# tcpdump -nvvXSs 1514 dst 192.168.0.2 và src net 172.16.0.0/16 chứ không phải icmp

Lưu lượng truy cập từ máy chủ Eros hoặc Ares, nhưng không đi đến cổng SSH tiêu chuẩn (cần phân giải tên cho biểu thức này):

# tcpdump -vv src eros hay là chứ không phải dst port 22

Như có thể thấy từ các ví dụ đã cho, chúng ta có thể xây dựng bất kỳ biểu thức nào cho bất kỳ mục đích nào. Ngoài ra, bằng cách sử dụng cú pháp phức tạp, chúng tôi có thể loại trừ mọi loại lưu lượng truy cập khỏi quá trình phân tích.

Chúng ta cũng nên nhớ rằng chúng ta có thể xây dựng các truy vấn bao gồm các nhóm và nhóm tùy chọn được chỉ định trong một truy vấn. Nhưng để tiện ích tcpdump chú ý đến chúng, chúng cần được đặt trong ngoặc, lấy biểu thức trong dấu ngoặc đơn:
Lưu lượng truy cập từ máy chủ 10.0.2.4 đến cổng đích 3379 hoặc 22:
# tcpdump ‘src 10.0.2.4 và (cổng dst 3379 hoặc 22)’

Cũng có thể lọc dựa trên cờ TCP, ví dụ để tách các gói SYN hoặc RST:

Phân tích tất cả các gói URG:
# tcpdump ‘tcp & 32 != 0′

Phân tích tất cả các gói ACK:
# tcpdump ‘tcp & 16 != 0′

Phân tích tất cả các gói PSH:
# tcpdump ‘tcp & 8 != 0′

Phân tích tất cả các gói RST:
# tcpdump ‘tcp & 4 != 0′

Phân tích tất cả các gói SYN:
# tcpdump ‘tcp & 2 != 0′

tcpdump hướng dẫn bằng tiếng Nga và ví dụ.

-MỘT chỉ định đầu ra của mỗi gói (không có tiêu đề lớp liên kết) ở định dạng ASCII. Chế độ này hữu ích cho việc thu thập lưu lượng HTTP.

-c <число пакетов>chỉ định rằng chương trình kết thúc sau khi bắt được một số gói được chỉ định.

-C<размер файла>chỉ định xem có kiểm tra kích thước của tệp chụp trước khi mỗi gói mới được ghi vào nó hay không. Nếu kích thước file vượt quá tham số file_size thì file sẽ bị đóng
và một tệp mới được tạo để ghi các gói vào. Đối với các tệp chụp, tên được chỉ định bởi tham số -w sẽ được sử dụng và bắt đầu từ tệp thứ hai, tên sẽ được thêm vào dưới dạng
số tập tin hậu tố. Biến file_size chỉ định kích thước tệp tính bằng triệu byte (không phải megabyte = 1.048.576 byte).

-d chỉ định đầu ra của kết xuất mã khớp gói đã biên dịch ở định dạng mà con người có thể đọc được và kết thúc chương trình.

-dd Loại bỏ mã phù hợp dưới dạng một đoạn chương trình C.

-ddd kết xuất mã khớp dưới dạng một chuỗi giá trị thập phân, trước một chuỗi có giá trị bộ đếm.

-D hiển thị danh sách các giao diện mạng trên hệ thống mà tcpdump có thể thu thập các gói. Mỗi giao diện mạng có một tên và số, theo sau là
văn bản mô tả giao diện. Tên và số giao diện có thể được sử dụng với cờ -i để chỉ định việc thu thập gói từ một giao diện.

Tùy chọn này có thể rất hữu ích cho các hệ thống không cung cấp thông tin về các giao diện mạng khả dụng3.

Cờ -D không được hỗ trợ nếu tcpdump được biên dịch bằng phiên bản libpcap cũ hơn không hỗ trợ hàm pcap_findalldevs().

-e in tiêu đề lớp liên kết trên mỗi dòng của kết xuất.

-E chỉ định việc sử dụng thuật toán spi@ipaddr và bí mật để giải mã các gói IPsec ESP được gửi đến địa chỉ ipaddr và chứa giá trị và trong trường Chỉ mục Tham số Bảo mật
spi. Sự kết hợp giữa spi và địa chỉ có thể được lặp lại bằng cách sử dụng dấu phẩy hoặc dòng mới làm dấu phân cách. Lưu ý rằng việc đặt bí mật cho gói IPv4 ESP trong
hiện được hỗ trợ.

Các thuật toán có thể được sử dụng là des-cbc, 3des-cbc, Blowfish-cbc, rc3-cbc, cast128-cbc hoặc không có thuật toán nào. Thuật toán mặc định là des-cbc. Khả năng giải mã
các gói chỉ được cung cấp trong trường hợp tùy chọn hỗ trợ mật mã được bật khi tcpdump được biên dịch.

Tham số bí mật chứa văn bản ASCII của khóa bí mật ESP. Nếu bí mật bắt đầu bằng ký tự 0x, giá trị thập lục phân sẽ được đọc. Tùy chọn giả định việc sử dụng
ESP theo RFC 2406, không phải RFC 1827. Tùy chọn này chỉ được hỗ trợ cho mục đích gỡ lỗi và không nên sử dụng với khóa riêng thực, vì khóa được nhập vào
dòng lệnh, khóa IPsec có sẵn cho những người dùng khác của hệ thống4.

Ngoài việc chỉ định rõ ràng các tùy chọn trên dòng lệnh, chúng có thể được chỉ định trong tệp tùy chọn mà tcpdump sẽ đọc khi nhận được gói ESP đầu tiên.

-fđặt đầu ra của địa chỉ IPv4 nước ngoài ở định dạng số. Sử dụng tùy chọn này cho phép bạn loại bỏ các sự cố xảy ra trên máy chủ Sun NIS khi cố gắng phát sóng
địa chỉ không cục bộ. Tính chất lạ của địa chỉ IPv4 được kiểm tra bằng cách sử dụng địa chỉ và mặt nạ của giao diện đã nhận gói. Nếu địa chỉ giao diện và mặt nạ không có sẵn
(ví dụ: khi sử dụng giao diện không được đánh số hoặc khi chụp các gói từ tất cả các địa chỉ trên Linux bằng giao diện giả bất kỳ), tùy chọn này sẽ hoạt động
không đúng.

-F<файл> chỉ định việc sử dụng các bộ lọc có trong tệp được chỉ định. Trong trường hợp này, các bộ lọc được chỉ định trên dòng lệnh sẽ bị bỏ qua.

-Tôi<интерфейс> chỉ định tập hợp các gói từ giao diện được chỉ định. Nếu giao diện không được chỉ định, tcpdump sẽ tìm kiếm trong hệ thống danh sách các giao diện khả dụng và chọn thiết bị hoạt động từ đó với mức tối thiểu
số (không bao gồm loopback).

Trên các hệ thống Linux, bắt đầu với kernel 2.2, một giao diện giả được gọi là bất kỳ được hỗ trợ, đảm bảo thu thập các gói từ tất cả các giao diện hoạt động của hệ thống. Xin lưu ý rằng phí
các gói từ thiết bị bất kỳ đều được thực hiện ở chế độ bình thường (không bừa bãi).

Nếu hệ thống của bạn hỗ trợ cờ -D, bạn có thể chỉ định làm đối số số giao diện được in khi sử dụng cờ này.

-l thiết lập bộ đệm dòng stdout. Tùy chọn này hữu ích trong trường hợp bạn muốn xem dữ liệu trong khi thu thập gói. Ví dụ, các lệnh

tcpdump -l | phát bóng

tcpdump -l > dat & tail -f dat

cung cấp khả năng ghi các gói vào tệp dữ liệu và xuất đồng thời ra bảng điều khiển.

-L chỉ định đầu ra của danh sách các loại lớp liên kết đã biết và việc kết thúc chương trình.

-m<файл> tải mô-đun định nghĩa SMI MIB từ tệp được chỉ định. Tùy chọn này có thể được sử dụng nhiều lần để tải nhiều mô-đun MIB.

-N vô hiệu hóa việc chuyển đổi địa chỉ và số cổng thành tên tượng trưng.

-N chỉ định việc chỉ sử dụng tên máy chủ, không phải tên miền đủ điều kiện. Ví dụ: thay vì lhotze.bilim-systems.net, khi sử dụng tùy chọn này, máy trạm của tôi sẽ
ký hiệu là lhotze.

-O tắt trình tối ưu hóa mã để kiểm tra xem các gói có khớp với điều kiện lọc hay không. Sử dụng tùy chọn này nếu bạn cảm thấy trình tối ưu hóa không hoạt động bình thường.

-P cho chương trình biết rằng giao diện không cần phải chuyển sang chế độ chụp5. Tùy chọn -p không thể được sử dụng cùng với máy chủ ether (local-hw-addr) hoặc bộ lọc phát sóng ether.

-q chỉ định đầu ra của lượng thông tin tối thiểu.

-R việc đặt cờ này giả định rằng các gói ESP/AH đang sử dụng phiên bản cũ của thông số kỹ thuật6 và tcpdump sẽ không xuất ra các trường ngăn chặn phát lại.
phát lại). Vì đặc tả ESP/AH không bao gồm các trường số phiên bản nên tcpdump không thể xác định phiên bản giao thức ESP/AH từ tiêu đề gói.

-r<файл> chỉ định đọc dữ liệu từ một tệp được tạo trước đó bằng lệnh tcpdump -w hoặc sử dụng chương trình khác hỗ trợ định dạng tcpdump (ví dụ: Ethereal). Nếu ở
Tên tệp được đặt thành - và luồng dữ liệu từ thiết bị đầu vào tiêu chuẩn (stdin) được sử dụng.

-Sđặt đầu ra của số thứ tự TCP tuyệt đối thay vì số tương đối.

-Sđặt mức thu thập byte từ mỗi gói snaplen thay vì 68 byte mặc định7. Giá trị 68 phù hợp với các giao thức IP, ICMP, TCP và UDP nhưng có thể dẫn đến mất
thông tin giao thức cho một số gói DNS và NFS. Việc mất một số gói do kích thước nhỏ của khung ảnh chụp nhanh được biểu thị trong dữ liệu đầu ra theo các trường của biểu mẫu
[|proto]’, trong đó proto là tên của cấp độ giao thức mà tại đó một phần của gói bị cắt8. Lưu ý rằng việc tăng khung chụp sẽ dẫn đến tốn thêm thời gian tạm thời.
chi phí xử lý gói và giảm số lượng gói được đệm, điều này có thể dẫn đến mất một số gói. Sử dụng giá trị snaplen tối thiểu sẽ cho phép
tránh mất thông tin về giao thức mà bạn quan tâm. Đặt snaplen=0 sẽ chụp các gói hoàn chỉnh.

-T<тип> đặt cách diễn giải các gói được chọn bằng bộ lọc dưới dạng các gói thuộc loại được chỉ định bởi tham số. Các loại hiện được hỗ trợ là aodv9, cnfp10, rpc11, rtp12, rtcp13,
snmp14, tftp15, vat16 và wb17.

-t vô hiệu hóa đầu ra của dấu thời gian trong mỗi dòng kết xuất.

-tt chỉ định đầu ra của dấu thời gian chưa được định dạng trên mỗi dòng của kết xuất.

-ttt chỉ định đầu ra của các khoảng thời gian (tính bằng micro giây) giữa việc chụp gói trước và gói này trong mỗi dòng của kết xuất.

-ttt chỉ định đầu ra của dấu thời gian ở định dạng mặc định cho mỗi dòng kết xuất.

-uđặt đầu ra của các thẻ điều khiển NFS mà không cần giải mã.

-Uđặt chế độ "đệm cấp độ hàng loạt" cho các tệp được lưu bằng tùy chọn -w. Ở chế độ này, mỗi gói được ghi vào tệp đầu ra ngay khi nó được ghi lại.
(không cần đợi bộ đệm đầu ra đầy). Cờ -U sẽ không được hỗ trợ nếu tcpdump được biên dịch bằng tùy chọn libpcap cũ không hỗ trợ chức năng
pcap_dump_flush().

-v chỉ định đầu ra của thông tin bổ sung khi chụp tệp. Thông tin này có thể bao gồm giá trị TTL (Thời gian tồn tại), nhận dạng, kích thước tổng thể, tùy chọn IP, v.v. Khi
Khi sử dụng cờ này, việc kiểm tra tính toàn vẹn gói bổ sung cũng được thực hiện bằng cách sử dụng tổng kiểm tra (ví dụ: đối với giao thức IP và ICMP).

-vv chỉ định mức tăng bổ sung về khối lượng thông tin đầu ra (ví dụ: giải mã đầy đủ các gói SMB, đầu ra của các trường phản hồi NFS bổ sung, v.v.).

-vvvđặt lượng thông tin hiển thị tối đa (ví dụ: tùy chọn telnet SB ... SE được hiển thị hoàn toàn). Khi được sử dụng cùng với khóa chuyển -X, các tùy chọn Telnet cũng được hiển thị trong
biểu diễn thập lục phân.

-w<файл> chỉ định ghi lại các gói thô. Các gói được thu thập vào một tệp sau này có thể được xem bằng cờ -r hoặc chuyển sang các chương trình khác để phân tích
(ví dụ như Ethereal). Nếu tên tệp là -, tệp sẽ được ghi vào thiết bị đầu ra tiêu chuẩn (thiết bị xuất chuẩn).

-x chỉ định đầu ra của kết xuất thập lục phân (không có tiêu đề lớp liên kết) cho mỗi gói được bắt. Lượng thông tin hiển thị được xác định bằng giá trị nhỏ hơn trong hai giá trị -
kích thước gói và giá trị tham số snaplen. Lưu ý rằng khi chụp các khung lớp liên kết đầy đủ, kết xuất cũng có thể bao gồm các byte đệm nếu gói lớp mạng
có kích thước nhỏ.

-xxđặt đầu ra của kết xuất thập lục phân cho mỗi gói, bao gồm các tiêu đề lớp liên kết.

-X chỉ định đầu ra kết xuất ở định dạng thập lục phân và ASCII mà không có tiêu đề lớp liên kết. Tùy chọn này có thể rất thuận tiện khi phân tích các giao thức mới.

-XX chỉ định đầu ra kết xuất ở định dạng thập lục phân và ASCII, bao gồm các tiêu đề lớp liên kết.

-y<тип> chỉ định loại lớp liên kết được sử dụng khi bắt gói tin. Các giá trị được hỗ trợ có thể được xem bằng cờ -L.

Ví dụ.

  • Chúng tôi nắm bắt tất cả lưu lượng truy cập đi

tcpdump -i re0 -n -nn -ttt dst máy chủ 192.168.1.2

  • Chúng tôi nắm bắt tất cả lưu lượng truy cập đi ngoại trừ phiên ssh của chúng tôi vì có luồng dữ liệu rất lớn.

tcpdump -i re0 -n -nn -ttt 'dst hosting 192.168.1.110 và không (src Host 192.168.1.2 và dst port 22)'

  • Xem thông tin liên lạc dns

tcpdump -i re0 -n -nn -ttt ‘host 192.168.1.110 và cổng 53’

  • Xem gói icmp

tcpdump -i re0 -n -nn -ttt ‘ip proto \icmp’

  • Lưu lượng di chuyển từ mạng 10.7.20 đến đích trên mạng 10.7.0. hoặc 10.7.24.:

tcpdump -nvX src net 10.7.20.0.0/16 và dst net 10.7.0.0/8 hoặc 10.7.24.0/16

  • Lưu lượng truy cập từ mạng 10.7.0.0 đến cổng đích 22 hoặc 4589:

tcpdump 'src 10.7.0.0 và (cổng dst 22 hoặc 4589)'

  • Xem lưu lượng truy cập trên giao diện:
  • xem lưu lượng truy cập của một máy chủ:

máy chủ tcpdump 192.168.1.1

  • Xem lưu lượng truy cập trên một cổng:

cổng tcpdump src 80

  • Xem lưu lượng IP đến máy chủ:

máy chủ ip tcpdump 192.168.1.2

  • Xem lưu lượng ARP đến máy chủ:

máy chủ tcpdump arp 192.168.1.2

  • Chúng tôi xem xét lưu lượng RARP đến máy chủ:

máy chủ lưu trữ rarp tcpdump 192.168.1.2

  • Chúng tôi xem xét lưu lượng truy cập, ngoại trừ máy chủ pav253

tcpdump không phải máy chủ pav253

  • Chúng tôi xem xét lưu lượng truy cập trên pav253 và pav210

máy chủ tcpdump pav253 hoặc máy chủ pav210

  • Chúng tôi xem nội dung của các gói trên giao diện re0 đến trang chủ

tcpdump -X -i re0 Trang web lưu trữ

  • giao thông icq

tcpdump -X -i re0 cổng aol

  • Chúng tôi xem nội dung của các gói trên giao diện tun0 tới máy chủ ya.ru, đồng thời đọc 1500 byte từ mỗi gói và không chuyển đổi IP thành tên máy chủ

tcpdump -X -s 1500 -n -i re0 Trang web lưu trữ

  • Tương tác tích cực hàng đầu

tcpdump -tn -c 10000 -i re0 tcp hoặc udp | ôi -F "." '(in $1″.”$2″.”$3″.”$4)’ | \sắp xếp | uniq -c | sắp xếp -nr | awk '$1 > 100'

  • Chúng tôi xem xét tất cả các gói TCP có cờ SYN (bắt đầu phiên).

tcpdump -i eth0 -nn tcp == 2 và src net 192.168.1.0/24

  • Xem các gói đồng bộ và vây từ bên ngoài

tcpdump 'tcp & (tcp-syn|tcp-fin) != 0 chứ không phải src và dst net 192.168.1.0'

  • Xem tất cả các gói http ipv4 từ cổng 80, ngoại trừ dữ liệu syn/fin/ack

tcpdump 'tcp port 80 và (((ip — ((ip&0xf)<>2)) != 0)’

  • Chỉ xem các gói đồng bộ

Nếu bạn cần phân tích hoặc chặn các gói mạng trong Linux, cách tốt nhất để thực hiện việc này là sử dụng tiện ích bảng điều khiển tcpdump. Nhưng vấn đề nảy sinh ở chỗ cách quản lý khá phức tạp của nó. Người dùng bình thường sẽ thấy bất tiện khi làm việc với tiện ích này, nhưng điều này chỉ thoạt nhìn thôi. Bài viết sẽ cho bạn biết tcpdump hoạt động như thế nào, nó có cú pháp gì, cách sử dụng và cũng sẽ cung cấp nhiều ví dụ về cách sử dụng nó.

Đọc thêm: Hướng dẫn thiết lập kết nối Internet trên Ubuntu, Debian, Ubuntu Server

Hầu hết các nhà phát triển hệ điều hành dựa trên Linux đều đưa tiện ích tcpdump vào danh sách những tiện ích được cài đặt sẵn, nhưng nếu vì lý do nào đó mà nó bị thiếu trong bản phân phối của bạn, bạn luôn có thể tải xuống và cài đặt nó qua "Phần cuối". Nếu hệ điều hành của bạn dựa trên Debian và đây là Ubuntu, Linux Mint, Kali Linux và những thứ tương tự, bạn cần chạy lệnh này:

sudo apt cài đặt tcpdump

Trong quá trình cài đặt bạn cần nhập mật khẩu. Lưu ý khi gõ không hiển thị, bạn cũng cần nhập biểu tượng để xác nhận cài đặt "D" và hãy nhấn Đi vào.

Nếu bạn có Red Hat, Fedora hoặc CentOS, lệnh cài đặt sẽ như sau:

sudo yam cài đặt tcpdump

Sau khi tiện ích được cài đặt, bạn có thể sử dụng ngay. Điều này và nhiều hơn nữa sẽ được thảo luận thêm trong văn bản.

Cú pháp

Giống như bất kỳ lệnh nào khác, tcpdump có cú pháp riêng. Biết được điều đó, bạn có thể đặt tất cả các tham số cần thiết sẽ được tính đến khi thực hiện lệnh. Cú pháp như sau:

tùy chọn tcpdump -i bộ lọc giao diện

Khi sử dụng lệnh, bạn phải chỉ định giao diện để theo dõi. Bộ lọc và tùy chọn không phải là biến bắt buộc nhưng chúng cho phép tùy chỉnh linh hoạt hơn.

Tùy chọn

Mặc dù tùy chọn không nhất thiết phải được chỉ định nhưng bạn vẫn cần liệt kê những tùy chọn có sẵn. Bảng không hiển thị toàn bộ danh sách của chúng mà chỉ hiển thị những danh sách phổ biến nhất, nhưng chúng cũng quá đủ để giải quyết hầu hết các nhiệm vụ.

Lựa chọn Sự định nghĩa
-MỘT Cho phép bạn sắp xếp các gói có định dạng ASCII
-l Thêm chức năng cuộn
-Tôi Sau khi nhập, bạn cần chỉ định giao diện mạng sẽ được giám sát. Để bắt đầu giám sát tất cả các giao diện, hãy nhập từ “bất kỳ” sau tùy chọn.
-c Kết thúc quá trình theo dõi sau khi kiểm tra số lượng gói được chỉ định
-w Tạo một tệp văn bản với báo cáo kiểm tra
-e Hiển thị mức độ kết nối internet của gói dữ liệu
-L Chỉ hiển thị những giao thức được hỗ trợ bởi giao diện mạng được chỉ định
-C Tạo một tệp khác trong khi gói đang được ghi nếu kích thước của nó lớn hơn kích thước đã chỉ định
-r Mở một tệp để đọc được tạo bằng tùy chọn -w
-j Định dạng TimeStamp sẽ được sử dụng để ghi lại các gói tin
-J Cho phép bạn xem tất cả các định dạng TimeStamp có sẵn
-G Phục vụ để tạo một tập tin với các bản ghi. Tùy chọn này cũng yêu cầu chỉ định một giá trị tạm thời, sau đó nhật ký mới sẽ được tạo
-v, -vv, -vvv Tùy thuộc vào số lượng ký tự trong tùy chọn, đầu ra lệnh sẽ trở nên chi tiết hơn (mức tăng tỷ lệ thuận với số lượng ký tự)
-f Đầu ra hiển thị tên miền của các địa chỉ IP
-F Cho phép bạn đọc thông tin không phải từ giao diện mạng mà từ tệp được chỉ định
-D Thể hiện tất cả các giao diện mạng có thể được sử dụng
-N Vô hiệu hóa hiển thị tên miền
-Z Chỉ định người dùng có tài khoản mà tất cả các tệp sẽ được tạo
-K Bỏ qua phân tích tổng kiểm tra
-q Hiển thị thông tin ngắn gọn
-H Cho phép phát hiện các tiêu đề 802.11s
-TÔI Được sử dụng khi chụp các gói ở chế độ màn hình

Sau khi kiểm tra các tùy chọn, bên dưới chúng tôi sẽ chuyển trực tiếp đến các ứng dụng của chúng. Trong khi chờ đợi, các bộ lọc sẽ được xem xét.

Bộ lọc

Như đã đề cập ở đầu bài viết, bạn có thể thêm bộ lọc vào cú pháp tcpdump. Bây giờ chúng tôi sẽ xem xét phổ biến nhất trong số họ:

Tất cả các bộ lọc trên có thể được kết hợp với nhau nên ở đầu ra lệnh, bạn sẽ chỉ thấy những thông tin mà bạn muốn xem. Để hiểu chi tiết hơn việc sử dụng các bộ lọc trên, cần đưa ra các ví dụ.

Ví dụ về việc sử dụng

Cú pháp được sử dụng phổ biến nhất cho lệnh tcpdump bây giờ sẽ được mô tả. Sẽ không thể liệt kê tất cả chúng, vì có thể có vô số biến thể.

Xem danh sách giao diện

Mỗi người dùng ban đầu nên kiểm tra danh sách tất cả các giao diện mạng có thể được giám sát. Từ bảng trên, chúng ta biết rằng để làm được điều này, chúng ta cần sử dụng tùy chọn -D vì vậy trong terminal chạy lệnh sau:

Như bạn có thể thấy, có tám giao diện trong ví dụ có thể được xem bằng lệnh tcpdump. Bài viết sẽ đưa ra những ví dụ với ppp0, bạn có thể sử dụng bất kỳ cái nào khác.

Nắm bắt lưu lượng truy cập thường xuyên

Nếu bạn cần giám sát một giao diện mạng, bạn có thể thực hiện việc này bằng tùy chọn -Tôi. Sau khi nhập xong đừng quên cho biết tên giao diện. Đây là một ví dụ về việc chạy một lệnh như vậy:

sudo tcpdump -i ppp0

Xin lưu ý: bạn cần nhập “sudo” trước lệnh vì nó yêu cầu quyền siêu người dùng.

Lưu ý: sau khi nhấn Enter, các gói tin đã bắt được sẽ hiển thị liên tục trong “Terminal”. Để dừng dòng chảy của chúng, bạn cần nhấn tổ hợp phím Ctrl+C.

Nếu bạn chạy lệnh mà không có tùy chọn và bộ lọc bổ sung, bạn sẽ thấy định dạng sau để hiển thị các gói được giám sát:

22:18:52.597573 IP vrrp-topf2.p.mail.ru.https > 10.0.6.67.35482 : Cờ , seq 1:595, ack 1118, win 6494, tùy chọn , độ dài 594

Nơi được tô sáng bằng màu sắc:

  • màu xanh - thời điểm nhận gói hàng;
  • màu xanh lá cây - địa chỉ người gửi;
  • màu tím - địa chỉ người nhận;
  • màu xám - thông tin bổ sung về tcp;
  • màu đỏ - kích thước gói (hiển thị bằng byte).

Cú pháp này có khả năng hiển thị trong một cửa sổ "Phần cuối" mà không cần sử dụng các tùy chọn bổ sung.

Nắm bắt lưu lượng truy cập bằng tùy chọn -v

Như đã biết từ bảng, tùy chọn -v cho phép bạn tăng lượng thông tin. Hãy xem xét nó với một ví dụ. Hãy kiểm tra giao diện tương tự:

sudo tcpdump -v -i ppp0

Ở đây bạn có thể nhận thấy rằng dòng sau xuất hiện trong đầu ra:

IP (tos 0x0, ttl 58, id 30675, offset 0, cờ, proto TCP (6), chiều dài 52

Nơi được tô sáng bằng màu sắc:

  • màu cam - phiên bản giao thức;
  • màu xanh - thời gian tồn tại của giao thức;
  • màu xanh lá cây - độ dài tiêu đề trường;
  • màu tím - phiên bản gói tcp;
  • màu đỏ - kích thước gói.

Bạn cũng có thể thêm tùy chọn vào cú pháp lệnh -vv hoặc -vvv, điều này sẽ làm tăng thêm lượng thông tin hiển thị trên màn hình.

Tùy chọn -w và -r

Bảng tùy chọn đề cập đến khả năng lưu tất cả dữ liệu đầu ra vào một tệp riêng để có thể xem sau. Tùy chọn chịu trách nhiệm cho việc này -w. Việc sử dụng nó khá đơn giản, chỉ cần chỉ định nó trong lệnh, sau đó nhập tên của tệp trong tương lai có phần mở rộng ".pcap". Hãy xem xét mọi thứ bằng một ví dụ:

sudo tcpdump -i ppp0 -w file.pcap

Xin lưu ý: trong khi nhật ký được ghi vào một tệp, không có văn bản nào được hiển thị trên màn hình Terminal.

Khi muốn xem đầu ra đã ghi, bạn cần sử dụng tùy chọn -r, sau đó ghi tên file đã ghi trước đó. Nó được áp dụng mà không có các tùy chọn và bộ lọc khác:

sudo tcpdump -r file.pcap

Cả hai tùy chọn này đều tuyệt vời khi bạn cần lưu số lượng lớn văn bản để phân tích cú pháp sau này.

Lọc IP

Từ bảng lọc chúng ta biết rằng dst cho phép bạn chỉ hiển thị trên màn hình bảng điều khiển những gói đã được nhận theo địa chỉ được chỉ định trong cú pháp lệnh. Điều này làm cho việc xem các gói mà máy tính của bạn nhận được rất thuận tiện. Để thực hiện việc này, bạn chỉ cần chỉ định địa chỉ IP của mình trong lệnh:

sudo tcpdump -i ppp0 ip dst 10.0.6.67

Như bạn có thể thấy, ngoài dst, chúng tôi cũng đã chỉ định một bộ lọc trong lệnh ip. Nói cách khác, chúng tôi đã yêu cầu máy tính chú ý đến địa chỉ IP khi chọn gói chứ không chú ý đến các tham số khác.

Bạn cũng có thể lọc các gói đã gửi theo IP. Hãy sử dụng lại IP của chúng tôi làm ví dụ. Tức là bây giờ chúng ta sẽ theo dõi những gói tin nào được gửi từ máy tính của chúng ta đến các địa chỉ khác. Để làm điều này, bạn cần chạy lệnh sau:

sudo tcpdump -i ppp0 ip src 10.0.6.67

Như bạn thấy, chúng tôi đã thay đổi bộ lọc trong cú pháp lệnh dst TRÊN src, từ đó yêu cầu máy tìm kiếm người gửi bằng IP.

Lọc theo HOST

Bằng cách tương tự với IP, chúng ta có thể chỉ định bộ lọc trong lệnh chủ nhàđể lọc các gói với máy chủ quan tâm. Nghĩa là, theo cú pháp, thay vì địa chỉ IP của người gửi/người nhận, bạn sẽ cần chỉ ra máy chủ của nó. Nó trông như thế này:

sudo tcpdump -i ppp0 dst máy chủ google-public-dns-a.google.com

Trong hình ảnh bạn có thể thấy điều đó trong "Phần cuối" Chỉ những gói được gửi từ IP của chúng tôi đến máy chủ lưu trữ google.com mới được hiển thị. Như bạn có thể hiểu, thay vì máy chủ Google, bạn có thể nhập bất kỳ máy chủ nào khác.

Giống như lọc IP, cú pháp dst có thể được thay thế bởi srcđể xem các gói được gửi đến máy tính của bạn:

sudo tcpdump -i ppp0 src máy chủ google-public-dns-a.google.com

Xin lưu ý: bộ lọc máy chủ phải đứng sau dst hoặc src, nếu không lệnh sẽ báo lỗi. Ngược lại, trong trường hợp lọc IP, dst và src xuất hiện trước bộ lọc ip.

Áp dụng bộ lọc và và hoặc

Nếu bạn cần sử dụng nhiều bộ lọc cùng một lúc trong một lệnh, thì để làm được điều này, bạn cần sử dụng bộ lọc hoặc hoặc(tùy trường hợp). Bằng cách chỉ định các bộ lọc trong cú pháp và tách chúng bằng các toán tử này, bạn "làm cho" chúng hoạt động như một. Trong một ví dụ nó trông như thế này:

sudo tcpdump -i ppp0 ip dst 95.47.144.254 hoặc ip src 95.47.144.254

Từ cú pháp lệnh, rõ ràng là chúng tôi muốn hiển thị "Phần cuối" tất cả các gói được gửi đến địa chỉ 95.47.144.254 và các gói được nhận bởi cùng một địa chỉ. Bạn cũng có thể thay đổi một số biến trong biểu thức này. Ví dụ: thay vì IP, hãy chỉ định HOST hoặc tự thay thế các địa chỉ.

Bộ lọc cổng và portrange

Lọc Hải cảng Hoàn hảo cho những trường hợp khi bạn cần lấy thông tin về các gói trên một cổng cụ thể. Vì vậy, nếu bạn chỉ cần xem phản hồi hoặc yêu cầu DNS, bạn cần chỉ định cổng 53:

sudo tcpdump -vv -i ppp0 cổng 53

Nếu muốn xem gói http, bạn cần nhập cổng 80:

sudo tcpdump -vv -i ppp0 cổng 80

Trong số những thứ khác, có thể theo dõi nhiều cổng cùng một lúc. Một bộ lọc được sử dụng cho việc này xách đồ:

sudo tcpdump portrange 50-80

Như bạn có thể thấy, kết hợp với bộ lọc xách đồ Không cần thiết phải chỉ định các tùy chọn bổ sung. Bạn chỉ cần thiết lập phạm vi.

Lọc theo giao thức

Bạn cũng có thể chỉ hiển thị lưu lượng truy cập phù hợp với một giao thức cụ thể. Để làm điều này, bạn cần sử dụng tên của chính giao thức này làm bộ lọc. Hãy xem một ví dụ udp:

sudo tcpdump -vvv -i ppp0 udp

Như bạn có thể thấy trong hình, sau khi thực hiện lệnh trong "Phần cuối" chỉ các gói giao thức được hiển thị udp. Theo đó, bạn có thể lọc theo người khác, ví dụ: arp:

sudo tcpdump -vvv -i ppp0 arp

hoặc tcp:

sudo tcpdump -vvv -i ppp0 tcp

Lưới lọc

Nhà điều hành mạng lưới giúp lọc các gói dựa trên chỉ định mạng của chúng. Sử dụng nó cũng dễ dàng như những cách khác - bạn cần chỉ định thuộc tính trong cú pháp mạng lưới, sau đó nhập địa chỉ mạng. Đây là một ví dụ về một lệnh như vậy:

sudo tcpdump -i ppp0 net 192.168.1.1

Lọc theo kích thước gói

Chúng tôi chưa xem xét hai bộ lọc thú vị hơn: ít hơnlớn hơn. Từ bảng có các bộ lọc, chúng tôi biết rằng chúng dùng để hiển thị các gói dữ liệu lớn hơn ( ít hơn) hoặc ít hơn ( lớn hơn) kích thước được chỉ định sau khi nhập thuộc tính.

Giả sử chúng ta chỉ muốn giám sát các gói không vượt quá mốc 50 bit, thì lệnh sẽ như sau:

sudo tcpdump -i ppp0 ít hơn 50

Bây giờ hãy hiển thị trong "Phần cuối" gói lớn hơn 50 bit:

sudo tcpdump -i ppp0 lớn hơn 50

Như bạn có thể thấy, chúng được sử dụng theo cùng một cách, điểm khác biệt duy nhất là ở tên của bộ lọc.

Phần kết luận

Ở cuối bài viết, chúng ta có thể kết luận rằng nhóm tcpdump là một công cụ tuyệt vời mà bạn có thể theo dõi bất kỳ gói dữ liệu nào được truyền qua Internet. Nhưng đối với điều này, việc chỉ nhập chính lệnh đó vào "Phần cuối". Bạn chỉ có thể đạt được kết quả mong muốn nếu bạn sử dụng tất cả các loại tùy chọn và bộ lọc cũng như sự kết hợp của chúng.