Tcpdump egy hálózati csomagszippantó parancssori segédprogram. Leggyakrabban a hálózatok hibaelhárításához és a biztonsági problémák teszteléséhez használják. Annak ellenére, hogy nincs grafikus felhasználói felület, ez a legnépszerűbb, legerősebb és legsokoldalúbb parancssori segédprogram.
A Linux-ban őshonos, így a legtöbb Linux-disztribúció a szokásos operációs rendszer részeként telepíti. A Tcpdump egy libpcap interfészes program, amely egy könyvtár a hálózati datagram rögzítéséhez.
Ez a cikk demisztifikálja a tcpdump-ot, bemutatva, hogyan rögzítse, olvassa el és elemezze a rögzített hálózati forgalmat ebben a segédprogramban. Később megértésünket felhasználjuk az adatcsomagok ellenőrzésére a fejlett TCP jelzőszűrőkkel.
Tcpdump telepítés
Az alapértelmezett Tcpdump telepítés a telepítési folyamat során kiválasztott opcióktól függ. Egyedi telepítés esetén lehetséges, hogy a csomag nem érhető el. A tcpdump telepítését a dpkg parancsot a-s" választási lehetőség.
ubuntu $ ubuntu: ~ $ dpkg -s tcpdumpVagy használja a „sudo apt-get install tcpdump” parancsot a tcpdump telepítéséhez az Ubuntu Linux rendszerben.
Csomagok rögzítése a Tcpdump szolgáltatásban:
A rögzítési folyamat megkezdéséhez először meg kell találnunk működő felületünket a “ifconfig”Parancsot. Vagy felsorolhatjuk az összes elérhető interfészt a tcpdump parancsot a-D" választási lehetőség.
ubuntu $ ubuntu: ~ $ tcpdump -DA rögzítési folyamat megkezdéséhez használhatja a szintaxist;
tcpdump [-options] [kifejezés]Például az alábbi parancsban a „-én”Opcióval rögzítheti a forgalmat a„enp0s3”Interfész,„-c”Jelző a rögzített csomagok korlátozásához és a„-w”Azt a teszt_fogás.pcap fájl.
ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 -w / tmp / test_capture.pcapEhhez hasonlóan különféle szűrőkombinációkat is használhat a forgalom elkülönítésére az Ön igényei szerint. Az egyik ilyen példa a hálózati adatok elkapása és a gazdagéphez érkezése a házigazda parancs egy adott kikötő. Sőt, a „-n”Jelzéssel megakadályozhatja, hogy a tcpdump rögzítse a DNS-kereséseket. Ez a jelző nagyon hasznos a forgalom telítésében a hálózat hibaelhárítása közben.
ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 hoszt 10.0.2.15 és dst 80 -w-t /mp / test_capture1.pcaptcpdump: hallgatás enp0s3-on, link típusú EN10MB (Ethernet), rögzítési méret 262144 bájt
20 csomag elfogva
21 csomag érkezett szűrővel
0 csomagot dobott le a kernel
A „és”Parancs csak a 10. hosztot tartalmazó csomagok elfogására.0.2.15 és a célkikötő 80. Hasonlóképpen számos más szűrő is alkalmazható a hibaelhárítási feladatok megkönnyítésére.
Ha nem akarja használni a-c”Jelzővel a rögzítési forgalom korlátozásához megszakítási jelet használhat, azaz.e., Ctrl + C, az izolációs folyamat leállításához.
Tcpdump fájlok olvasása
A tcpdump rögzített fájlok olvasása nagyon elsöprő lehet. Alapértelmezés szerint a tcp neveket rendel az IP-címekhez és a portokhoz. A „-r”Jelző a már elfogott fájlunk elolvasásához teszt_fogás.pcap mentve a / tmp mappába. Csőbe vezetjük a kimenetet awk parancs csak a forrás IP-cím és portok kiadására és csatolására a parancshoz fej hogy csak az első 5 bejegyzés jelenjen meg.
ubuntu $ ubuntu: ~ $ sudo tcpdump -r / tmp / test_capture1.pcap | awk -F „” 'print $ 3' | fej -5olvasás a / tmp / test_capture fájlból.pcap, link típusú EN10MB (Ethernet)
IP ubuntu.53298
IP ubuntu.53298
IP ubuntu.53298
IP ubuntu.53298
IP ubuntu.53298
A hálózati problémák megoldásához azonban ajánlott számokban használni az IP-címeket és a portokat. Letiltjuk az IP névfeloldást a “-n”Zászló és port nevek a következővel:-nn„.
ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -ntcpdump: a bõvített kimenet elnyomva, a -v vagy -vv használatával teljes protokoll dekódoláshoz
hallgatás enp0s3-on, link típusú EN10MB (Ethernet), rögzítési méret 262144 bájt
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Zászlók [P.], seq 1276027591: 1276027630, ack 544039114, win 63900, hossza 39
20:08:22.146745 IP 10.0.2.15.43456> 54.204.39.132.443: Zászlók [P.], seq 3381018839: 3381018885, ack 543136109, win 65535, hossza 46
20:08:22.147506 IP 172.67.39.148.443> 10.0.2.15.54080: Zászlók [.], ack 39, win 65535, hossza 0
20:08:22.147510 IP 54.204.39.132.443> 10.0.2.15.43456: Zászlók [.], ack 46, win 65535, hossza 0
20:08:22.202346 IP 216.58.209.142.443> 10.0.2.15.41050: Zászlók [P.], seq 502925703: 502925826, ack 1203118935, win 65535, hossz 123
20:08:22.202868 IP 10.0.2.15.41050> 216.58.209.142.443: Zászlók [P.], szekvencia 1:40, ack 123, win 65535, hossza 39
A rögzített kimenet megértése
A Tcpdump sok protokollt rögzít, beleértve az UDP-t, TCP-t, ICMP-t stb. Nem könnyű itt mindegyiket lefedni. Fontos azonban megérteni, hogy az információ hogyan jelenik meg és milyen paramétereket tartalmaz.
A Tcpdump minden csomagot egy sorban jelenít meg, időbélyeggel és a protokollra vonatkozó információkkal. Általában a TCP protokoll formátuma a következő:
Magyarázzuk el az egyik elfogott csomagmezőt mezőnként:
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Zászlók [P.], seq 1276027591: 1276027630, ack 544039114, win 63900, hossza 39- 20:08:22.146354: A rögzített csomag időbélyegzője
- IP: Hálózati réteg protokoll.
- 10.0.2.15.54080: Ez a mező tartalmazza a forrás IP-címét és a forrásportot.
- 172.67.39.148.443: Ez a mező a cél IP-címet és a portszámot jelöli.
- Zászlók [P.] /
: A zászlók a kapcsolódási állapotot képviselik. Ebben az esetben [P.] a PUSH nyugtázási csomagot jelöli. A zászló mező néhány egyéb értéket is tartalmaz, például: - S: SYN
- P: PUSH
- [.]: ACK
- F: FIN
- [S.]: SYN_ACK
- R: RST
- seq 1276027591: 1276027630: Az első sorszám: az utolsó formátum a csomagban lévő adatok számát jelöli. Az első csomagot kizárva, ahol a számok abszolút értékek vannak, a következő csomagoknak relatív száma van. Ebben az esetben a számok itt azt jelentik, hogy a csomag 1276027591 és 1276027630 közötti bájtokat tartalmaz.
- ack 544039114: A nyugtázási szám a következő várható adatsorszámot ábrázolja.
- win 63900: Az ablak mérete a rendelkezésre álló bájtok számát mutatja a fogadott pufferben.
- hossza 39: Hasznos adatok hossza bájtokban.
Haladó szűrők
Most néhány speciális fejlécszűrő opciót használhatunk csak adatcsomagok megjelenítésére és elemzésére. Bármely TCP csomagban a TCP jelzők a 14. bájttól kezdődnek, úgy, hogy a PSH-t és az ACK-t 4. és 5. bit képviseli.
Ezeket az adatokat a bitek bekapcsolásával használhatjuk fel 00011000 vagy 24 csak PSH és ACK jelzővel ellátott adatcsomagok megjelenítésére. Ezt a számot átadjuk a tcpdump-nak a szűrőveltcp [13] = 24“, Vegye figyelembe, hogy a TCP tömbindexe nullától kezdődik.
Kiszűrjük ezt a csomagot a csomagunkból text_capture.pcap fájlt, és használja a -A opció a csomag összes adatának megjelenítéséhez.
Hasonlóképpen kiszűrhet néhány más zászlócsomagot is „Tcp [13] = 8” és „tcp [13] = 2” csak a PSH és a SYN zászlókra stb.
ubuntu $ ubuntu: ~ $ sudo tcpdump -A 'tcp [13] = 24' -r / tmp / test_capture.pcapolvasás a / tmp / test_capture fájlból.pcap, link típusú EN10MB (Ethernet)
19:26:17.827902 IP ubuntu.53298> 32.121.122.34.időszámításunk előtt.googleusercontent.com.http: Zászlók [P.], seq 4286571276: 4286571363, ack 252096002, win 64240, hossz 87: HTTP: GET / HTTP / 1.1
E…:?@[email protected].
… "Zy .2.P… P… GET / HTTP / 1.1
Host: kapcsolat-ellenőrzés.ubuntu.com
Elfogad: */*
Csatlakozás: zár
Következtetés
Ebben a cikkben bemutattuk a tcpdump néhány legfontosabb témáját. A Tcpdump a CLI erejével együtt nagy segítség lehet a hálózati hibaelhárításban, az automatizálásban és a biztonsági menedzsmentben. Miután áttanulmányozta és kombinálta, szűrői és parancssori opciói nagyban hozzájárulhatnak a napi hibaelhárítási és automatizálási feladatokhoz, valamint a hálózat átfogó megértéséhez.