Mục lục [Ẩn]
Nếu bạn sử dụng phiên bản hệ điều hành unix/linux, tcpdump sẽ giúp bạn kiểm tra lưu lượng mạng và lưu lại những gói tin bắt được. Bài viết dưới đây sẽ giúp các bạn hiểu hơn về tcpdump là gì và cách cài đặt một số lệnh cơ bản tcpdump trên Linux. Hãy cùng theo dõi nhé!
1. Tcpdump là gì?
Tcpdump là công cụ hỗ trợ phân tích các gói dữ liệu mạng theo dòng lệnh, cho phép khách hàng chặn và lọc các gói tin TCP/IP được truyền đi hoặc được nhận trên một mạng mà máy tính có tham gia. tcmpdump sẽ lưu lại những gói tin đã bắt được, sau đó dùng để phân tích.
Hiểu đơn giản, Tcmpdump là công cụ dò mạng tìm Netwwork, có vai trò trong việc gỡ rối và kiểm tra các vấn đề liên quan đến bảo mật và kết nối mạng.
>> Xem thêm: MySQL là gì? Tổng quan từ A - Z MySQL
2. Tcpdump tồn tại ở hình thức nào?
Để lựa chọn gói tin phù hợp với biểu thức logic mà khách hàng nhập vào, tcmpdump sẽ xuất ra màn hình một gói tin chạy trên card mạng mà máy chủ đang lắng nghe.
Tùy vào các lựa chọn khác nhau khashc hàng có thể xuất mô tả này ra một gói tin thành một file “pcap” để phân tích và có thể đọc nội dung “pcap” đó với option – r của lệnh tcpdump, hoặc sử dụng các phần mềm khác như là : Wireshark.
Đối với những trường hợp không có tùy chọn, lệnh tcpdump sẽ được chạy cho đến khi nhận được một tín hiệu ngắt từ khách hàng. Sau khi kết thúc việc bắt các gói tin, tcmpdump sẽ báo cáo các cột sau:
- Packet capture: số lượng gói tin bắt được và xử lý.
- Packet received by filter: số lượng gói tin được nhận bởi bộ lọc.
- Packet dropped by kernel: số lượng packet đã bị dropped bởi cơ chế bắt gói tin của hệ điều hành.
3. Định dạng chung của một dòng giao thức Tcpdump
Định dạng chung của một dòng giao thức tcmpdump cụ thể là: time-stamp src > dst: flags data-seqno ack window urgent options
- Time-stamp: hiển thị thời gian gói tin được capture.
- Src và dst: hiển thị địa IP của người gửi và người nhận.
Cờ Flag thì bao gồm các giá trị sau:
- S(SYN): Được sử dụng trong quá trình bắt tay của giao thức TCP.
- .(ACK): Được sử dụng để thông báo cho bên gửi biết là gói tin đã nhận được dữ liệu thành công.
- F(FIN): Được sử dụng để đóng kết nối TCP.
- P(PUSH): Thường được đặt ở cuối để đánh dấu việc truyền dữ liệu.
- R(RST): Được sử dụng khi muốn thiết lập lại đường truyền.
- Data-sqeno: Số sequence number của gói dữ liệu hiện tại.
- ACK: Mô tả số sequence number tiếp theo của gói tin do bên gởi truyền (số sequence number mong muốn nhận được).
- Window: Vùng nhớ đệm có sẵn theo hướng khác trên kết nối này.
- Urgent: Cho biết có dữ liệu khẩn cấp trong gói tin.
>> Xem thêm: Lamp là gì? Tại sao Lamp được gọi là giải pháp mạnh nhất cho máy chủ
4. Lợi ích sử dụng Tcpdump
Tcpdump sẽ giúp bạn phân các gói dữ liệu phù hợp với dòng lệnh mang theo, cụ thể:
- Bắt bản tin và lưu bằng định dạng PCAP (có thể đọc bởi wireshark)
- Nhìn thấy trực tiếp các bản tin điều khiển hệ thống Linux sử dụng wireshark, xem chi tiết remote packet capture using Wireshark và tcmpdump
- Có thể nhìn thấy các bản tin trên DUMP trên terminal
- Tạo các bộ lọc Filter để bắt bản tin cần thiết như : http, ssh, fpt…
- Ngoài ra tcmpdump còn sử dụng nhiều option khác nhau nữa
5. Cài đặt một số lệnh sử dụng Tcpdump cơ bản trên Linux
Cài đặt Tcpdump trên Linux
Nếu muốn sử dụng được lệnh tcpdump trên Linux bạn phải cài một gói tên như dưới đây:
Ubuntu, ta dùng lệnh
sudo apt-get install tcpdump -y
yum install tcpdump -y
Một số lệnh cơ bản sử dụng tcmpdump trên Linux
- Bắt gói tin theo địa chỉ nguồn
tcpdump -i emp0s3 src 192.168.100.1
- Bắt gói tin theo địa chỉ đích
tcpdump -i emp0s3 dst 192.168.100.1
- Xem các interface đang hoạt động
- Bắt gói tin trên interface
tcpdump -i
- Bắt các gói theo port
tcpdump -i enp0s3 port 22 -c 5 -n
-n: Hiển thị số port thay cho tên giao thức, IP thay cho Hostname
- Bắt theo các gói TCP giữa hai host
tcpdump -i enp0s3 tcp -c 5
Ngoài ra còn có thể bắt theo UDP, IMCP,...
- Bắt gói tin với tùy chọn -c
Mặc định, tcmpdump sẽ bắt liên tiếp các gói tin. Thao tác tổ hợp phím Ctrl + C. Nhưng với tùy chọn -c, chúng ta có thể chỉ cho tcpdump biết là "Tôi chỉ muốn bắt n gói."
n - là số gói tin cần bắt
Cú pháp như sau:
tcpdump -c n -i enp0s3
- Đọc các gói tin nhỏ hơn N byte
Bạn có thể chỉ nhận những gói tin nhỏ hơn N byte thông qua bộ lọc “less”.
$ tcpdump -w l_1024.pcap less 1024
- Lưu file .pcap (Wireshark)
tcpdump -i enp0s3 -w /opt/capture.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
4 packets captured
4 packets received by filter
0 packets dropped by kernel
- Đọc file PCAP
- Hiển thị các gói tin được bắt trong hệ ASCII thông qua Tcpdump -A
$ tcpdump -A -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
14:34:50.913995 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 1457239478:1457239594(116) ack 1561461262 win 63652
E.....@.@..]..i...9...*.V...]...P....h....E...>{..U=...g.
......G..7+KA....A...L.
14:34:51.423640 IP valh4.lell.net.ssh > yy.domain.innetbcp.net.11006: P 116:232(116) ack 1 win 63652
E.....@.@....i...9...*.V..*]...P....h....7......X..!....Im.S.g.u:*..O&....^#Ba...
E..(R.@.|.....9...i.*...]...V..*P..OWp........
- Hiển thị các gói tin được bắt dưới dạng HEX và ASCII thông qua Tcpdump -XX
$tcpdump -XX -i eth0
18:52:54.859697 IP zz.domain.innetbcp.net.63897 > valh4.lell.net.ssh: . ack 232 win 16511
0x0000: 0050 569c 35a3 0019 bb1c 0c00 0800 4500 .PV.5.........E.
0x0010: 0028 042a 4000 7906 c89c 10b5 aaf6 0f9a .(.*@.y.........
0x0020: 69c4 f999 0016 57db 6e08 c712 ea2e 5010 i.....W.n.....P.
0x0030: 407f c976 0000 0000 0000 0000 @..v........
18:52:54.877713 IP 10.0.0.0 > all-systems.mcast.net: igmp query v3 [max resp time 1s]
0x0000: 0050 569c 35a3 0000 0000 0000 0800 4600 .PV.5.........F.
0x0010: 0024 0000 0000 0102 3ad3 0a00 0000 e000 .$......:.......
0x0020: 0001 9404 0000 1101 ebfe 0000 0000 0300 ................
0x0030: 0000 0000 0000 0000 0000 0000 ............
- Đọc các gói tin từ một file thông qua Tcmpdump -r
$tcpdump -tttt -r data.pcap
2010-08-22 21:35:26.571793 00:50:56:9c:69:38 (oui Unknown) > Broadcast, ethertype Unknown (0xcafe), length 74:
0x0000: 0200 000a ffff 0000 ffff 0c00 3c00 0000 .............).....
0x0020: 0000 0000 ffff ffff ad00 996b 0600 0050 ...........k...P
0x0030: 569c 6938 0000 0000 8e07 0000 V.i8........
2010-08-22 21:35:26.571797 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.50570: P 800464396:800464448(52) ack 203316566 win 71
2010-08-22 21:35:26.571800 IP valh4.lell.net.ssh > zz.domain.innetbcp.net.50570: P 52:168(116) ack 1 win 71
2010-08-22 21:35:26.584865 IP valh5.lell.net.ssh > 11.154.12.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADC
- Bắt các gói tin với các dấu thời gian thông qua Tcpdump -tttt
$ tcpdump -n -tttt -i eth0
2010-08-22 15:10:39.162830 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 49800 win 16390
2010-08-22 15:10:39.162833 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 50288 win 16660
2010-08-22 15:10:39.162867 IP 10.0.19.121.52497 > 11.154.12.121.ssh: . ack 50584 win 16586
- Bắt gói tin với địa chỉ IP thông qua Tcmpdump -n
$ tcpdump -n -i eth0
15:01:35.170763 IP 10.0.19.121.52497 > 11.154.12.121.ssh: P 105:157(52) ack 18060 win 16549
15:01:35.170776 IP 11.154.12.121.ssh > 10.0.19.121.52497: P 23988:24136(148) ack 157 win 113
15:01:35.170894 IP 11.154.12.121.ssh > 10.0.19.121.52497: P 24136:24380(244) ack 157 win 113
- Bắt gói tin và ghi vào một file thông qua Tcmdump -w
$ tcpdump -w 08232010.pcap -i eth0
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
32 packets captured
32 packets received by filter
6. Biểu thức Tcpdump
Biểu thức của lệnh tcmdump cung cấp cho bạn cơ hội thêm lập trình vào lựa chọn gói. Bộ hướng dẫn này được viết thành một dòng, khác với một chương trình thông thường. Nếu bạn thường xuyên sử dụng Unix hoặc Linux, bạn sẽ nhanh chóng quen ngay với các biểu thức quen thuộc của kịch bản lệnh shell và hạn chế sự cố khi hiểu định dạng các bộ lọc này.
Các gói đáp ứng bài kiểm tra đều được hệ thống lưu lại, vì vậy kết quả của mỗi biểu thức đề mang giá trị đúng.
Dưới đây là một vài biểu hiện rất ít gặp trong kịch bản lệnh shell :
len
Điều này trả về độ dài của một gói. Ví dụ sử dụng: len! = 5.
- proto [expr: size]
Trong đối tượng này:
nguyên sinh là tên của một lớp giao thức. Nó có thể:
ête
fddi
ip
arp
hiếm
tcp
udp
icmp
expr là phần bù byte. Điều này cần được đưa vào, nhưng nó có thể được đưa ra là 0 để lấy giá trị từ đầu đối tượng.
kích thước là tùy chọn và nó đại diện cho số byte trong tùy chọn. Giá trị mặc định là 1, nhưng cũng có thể là 2, 3 hoặc 4.
Ví dụ sử dụng:
ether [0] & 1! = 0 đúng với tất cả lưu lượng truy cập phát đa hướng.
ip [0] & 0xf! = 5 đúng với tất cả các gói IP với các tùy chọn.
ip [6: 2] & 0x1fff = 0 đúng với các datagram không phân mảnh và các số 0 của các datagram bị phân mảnh.
7. Các thông số thường gặp trong Tcpdump
Tham số tcmdump còn được gọi là nguyên thủy, được lấy dữ liệu từ các máy chủ chỉ định. Các tham số này được biểu thị dưới dạng các điều kiện bằng cách sử dụng các toán tử Boolean và, hoặc là, và không phải. Bạn sẽ không cần đặt dấu (=) và đặt tham số khoảng trắng có dấu chấm câu giữa tên tham số và giá trị của nó.
Hiện nay, có rất nhiều thông số phổ biến, thông số hay sử dụng nhất là máy chủ lưu trữ cho phép người dùng giới hạn việc chụp để truyền đi từ nguồn. Tùy vào trường hợp khác nhau, tên thiết bị làm gía trị tham số có thể được thay bằng địa chỉ khác nhau.
Tham số có một dst phiên bản, biến thể đó sẽ giới hạn đầu ra của các gói tin có thuộc tính đó cho đích của nó. Các thông số src tìm kiếm các gói có giá trị cho trong dữ liệu liên quan đến cốt lõi của chúng.
Dưới đấy là một số tùy chọn tham số thường gắp trong tcmdump :
- thư mục
thư mục – chụp nếu hướng khung hình 802.11 802.11 là thư mục, đó là một số hoặc:
- gật đầu
- tods
- từ
- dstods
- wlan addr2 ehost – chụp nếu địa chỉ IEEE 802.11 thứ hai là ehost
- wlan addr3 ehost – chụp nếu địa chỉ IEEE 802.11 thứ ba là ehost
- wlan addr4 ehost – nếu địa chỉ IEEE 802.11 thứ tư là ehost. Chỉ được sử dụng cho WDS
- ête ehost – giá trị từ / etc / ethers hoặc một số. Cũng thế ether src và số phận ether.
- cửa ngõ tổ chức – nhận các gói được truyền qua cổng tổ chức
- mạng lưới tên mạng – IP nguồn hoặc IP đích bao gồm mạng_num. Cũng thế mạng dst và mạng src
- hải cảng số | tên – cũng thế cổng dst và cổng src. Có thể với tcp hoặc là udp để hạn chế giao thức
- ip proto giao thức – chụp các gói IP của giao thức được đặt tên. Tên phải trong / etc / giao thức
8. Sử dụng Tcpdump cho Windows
Ngoài Linux, còn có bản chuyển thể của tcmdump trên Windows được gọi là Windump và dựa vào Wincap để chụp gói tương tự như tcmpdump sử dụng chức năng pcap của lipcap.
Wincap thuộc sở hữu của Riverbed Technology, đây cũng là nhà tài trợ cho Wireshark được cho là gói nổi tiếng và được sử dụng rộng rãi trên khắp thế giới. Phiên bản không dây của Wincap được gọi là Aircap. Bạn có thể tải xuống Windump, Wincap và aircap miễn phí từ trang web của Wincap.
9. Lời kết
Như vậy, qua bài viết trên Nhân Hòa đã giúp bạn hiểu rõ hơn về tcmdump, hy vọng bạn sẽ sử dụng công cụ này một cách hữu ích. Chúc bạn thành công!
Khách hàng có nhu cầu đăng ký tên miền, đăng ký email doanh nghiệp, hosting wordpress giá rẻ, vps, ssl... xin vui lòng đăng ký tại Nhân Hòa để được hưởng ưu đãi giá rẻ nhất. Trân trọng!
+ Fanpage: https://www.facebook.com/nhanhoacom
+ Chỉ đường: https://g.page/nhanhoacom
+ Chương trình khuyến mãi mới nhất: https://nhanhoa.com/khuyen-mai.html
————————————————————
CÔNG TY TNHH PHẦN MỀM NHÂN HÒA
Hotline: 1900 6680
Trụ sở chính: Tầng 4 - Tòa nhà 97-99 Láng Hạ, Đống Đa, Hà Nội
Tel: (024) 7308 6680 – Email: sales@nhanhoa.com
Chi nhánh: 270 Cao Thắng (nối dài), Phường 12, Quận 10, Tp.HCM
Tel: (028) 7308 6680 – Email: hcmsales@nhanhoa.com