Introducere în Tcpdump

Dacă rulați un server, fără îndoială veți ajunge la un punct în care trebuie să reduceți anumite probleme legate de rețea. Desigur, ar fi ușor să trageți doar un mail către departamentul de asistență, dar uneori trebuie să vă murdăriți mâinile. În acest caz, tcpdumpeste instrumentul pentru acel job. Tcpdump este un analizator de pachete de rețea care rulează sub linia de comandă.

Acest articol va fi împărțit în trei părți:

  • Caracteristici de bază.
  • Filtrare pe baza anumitor caracteristici ale traficului.
  • Un scurt fragment de funcții mai avansate (cum ar fi expresii logice, filtrare prin steaguri TCP).

Deoarece tcpdump nu este inclus în majoritatea sistemelor de bază, va trebui să îl instalați. Cu toate acestea, aproape toate distribuțiile Linux au tcpdump în depozitele lor de bază. Pentru distribuțiile bazate pe Debian, comanda de instalare a tcpdump este:

apt-get install tcpdump

Pentru CentOS / RedHat, utilizați următoarea comandă:

yum install tcpdump

FreeBSD oferă un pachet pre-construit care poate fi instalat prin emiterea:

pkg install tcpdump

Există, de asemenea, un port, net/tcpdumpcare poate fi instalat prin:

cd /usr/ports/net/tcpdump
make install clean

Dacă executați tcpdumpfără niciun argument, veți fi bătut cu rezultate. Rularea pe o instanță proaspăt rotită aici pe Vultr pentru mai puțin de cinci secunde oferă următoarele rezultate:

2661 packets captured
2663 packets received by filter
0 packets dropped by kernel

Înainte de a vedea mai multe detalii despre modul de filtrare a intrării, ar trebui să aruncați o privire asupra unor parametri care pot fi transmise la tcpdump:

  • -i- Specifică interfața pe care doriți să ascultați pe, de exemplu: tcpdump -i eth0.
  • -n- Nu încercați să faceți căutări invers pe adresele IP, de exemplu: tcpdump -n(dacă adăugați un alt ntcpdump vă va afișa numerele de port în loc de nume).
  • -X- Arată conținutul pachetelor colectate: tcpdump -X.
  • -c- Captați doar xpachete, xfiind un număr arbitrar, de exemplu, tcpdump -c 10captează exact 10 pachete.
  • -v- Măriți cantitatea de informații despre pachete care vă sunt afișate, vadăugând mai multă veridicitate.

Fiecare dintre acești parametri menționați aici pot fi combinați împreună. Dacă doriți să capturați 100 de pachete, dar numai pe interfața VPN tun0, atunci comanda tcpdump va arăta astfel:

tcpdump -i tun0 -c 100 -X

Există zeci (dacă nu chiar sute) de opțiuni în plus față de cele puține, dar sunt cele mai comune. Simțiți-vă liber să citiți pagina de manual a lui tcpdump pe sistemul dvs.

Acum că aveți o înțelegere de bază a tcpdump, este timpul să analizați una dintre cele mai nemaipomenite caracteristici ale tcpdump: expresiile. Expresiile îți vor face viața mult mai ușoară. Ele sunt, de asemenea, cunoscute sub numele de BPF sau Berkeley Packet Filters. Utilizarea expresiilor vă permite să afișați (sau să ignorați) pachete selectiv pe baza anumitor caracteristici - cum ar fi originea, destinația, mărimea sau chiar numărul de secvență TCP.

Până acum ați reușit să vă limitați căutarea la o anumită cantitate de pachete de pe o anumită interfață, dar să fim sinceri aici: asta lasă încă prea mult zgomot de fond pentru a lucra eficient cu datele colectate. Acolo intră în joc expresiile. Conceptul este destul de simplu, așa că vom lăsa aici teoria uscată și vom susține înțelegerea cu câteva exemple practice.

Expresiile pe care le veți folosi cel mai mult sunt:

  • host - Căutați trafic pe baza numelor de gazdă sau a adreselor IP.
  • srcsau dst- Căutați trafic de la sau către o anumită gazdă.
  • proto- Căutați traficul unui anumit protocol. Funcționează pentru tcp, udp, icmp și altele. Omiterea protocuvântului cheie este de asemenea posibilă.
  • net - Căutați trafic către / dintr-o anumită gamă de adrese IP.
  • port - Căutați trafic către / dintr-un anumit port.
  • greatersau less- Căutați trafic mai mare sau mai mic decât o anumită cantitate de octeți.

În timp ce pagina manuală tcpdumpconține doar câteva exemple, pagina de manual pentru pcap-filterexplicații oferă detalii despre modul în care funcționează și poate fi aplicat fiecare filtru.

Dacă doriți să vedeți cum merge comunicarea dvs. cu un anumit server, atunci puteți utiliza hostcuvântul cheie, de exemplu (inclusiv unii dintre parametrii de mai sus):

tcpdump -i eth0 host vultr.com

Uneori există computere în rețea care nu onorează MTU sau vă trimit spam cu pachete mari; filtrarea lor poate fi dificilă uneori. Expresiile vă permit să filtrați pachetele mai mari sau mai mici decât un anumit număr de octeți:

tcpdump -i eth0 -nn greater 128
or
tcpdump -i eth0 -nn less 32

Poate doar un anumit port vă interesează. În acest caz, utilizați portexpresia:

tcpdump -i eth0 -X port 21

Puteți, de asemenea, să aveți grijă pentru intervalele de porturi:

tcdump -i eth0 -X portrange 22-25

Deoarece gateway-urile NAT sunt destul de comune, este posibil să căutați doar porturile de destinație:

tcpdump dst port 80

Dacă urmăriți traficul către serverul dvs. web, este posibil să doriți să consultați doar traficul TCP către portul 80:

tcpdump tcp and dst port 80

Probabil că vă întrebați ce face cuvântul cheie andacolo. Buna intrebare. Asta ne aduce la ultima parte a acestui articol.

tcpdump oferă suport de bază pentru expresii logice, mai precis:

  • and/ &&- Logic „și”.
  • or/ ||- Logic "sau".
  • not/ !- Logic „nu”.

Împreună cu capacitatea de a grupa expresiile împreună, acest lucru vă permite să creați căutări foarte puternice pentru traficul de intrare și de ieșire. Deci, să filtrăm traficul care vine de la vultr.com pe portul 22 sau 443:

tcpdump -i eth0 src host vultr.com and (dst port 22 or 443)

Rularea acestui lucru pe linia de comandă vă va produce următoarea eroare:

bash: syntax error near unexpected token `('

Asta pentru că există o avertizare: bashîncearcă să evalueze fiecare personaj pe care îl poate. Aceasta include personajele (și ). Pentru a evita acea eroare, ar trebui să utilizați ghilimele unice în jurul expresiei combinate:

tcpdump -i eth0 'src host vultr.com and (dst port 22 or 443)'

Un alt exemplu util: atunci când depanați probleme SSH cu unul dintre utilizatorii dvs., poate doriți să ignorați tot ce este legat de sesiunea SSH:

tcpdump '!(host $youripaddress) && port 22)'

Din nou, cazurile de utilizare sunt interminabile și puteți specifica în profunzimi extreme ce fel de trafic doriți să vedeți. Următoarea comandă vă va arăta doar pachetele SYNACK ale unei strângeri de mână TCP:

tcpdump -i eth0 'tcp[13]=18'

Acest lucru funcționează uitându-ne la al treisprezecelea decalaj al antetului TCP și al optsprezecelea octet în cadrul acestuia.

Dacă ai făcut-o până aici, atunci ești pregătit pentru majoritatea cazurilor de utilizare care vor apărea. Abia pot atinge suprafața fără să intru în prea multe detalii. Vă recomand să experimentați un pic mai departe diferitele opțiuni și expresii; și, ca de obicei: referiți la pagina de manuale când vă pierdeți.

Nu în ultimul rând - o privire rapidă înapoi. Vă amintiți începutul acestui articol? Cu miile de pachete capturate în câteva secunde? Puterea de tcpdumppoate reduce această mulțime:

tcpdump -i eth0 tcp port 22

Rezultatul este acum:

81 packets captured
114 packets received by filter
0 packets dropped by kerne

Acest lucru este mult mai sănătos și mai ușor de depanat. Rețea fericită!



Leave a Comment

Cum se instalează Anchor CMS pe un VPS Fedora 26 LAMP

Cum se instalează Anchor CMS pe un VPS Fedora 26 LAMP

Folosind un sistem diferit? Anchor CMS este un motor de blog de sistem de gestionare a conținutului (CMS) super-simplu și extrem de ușor, gratuit și deschis

Configurare partajare NFS pe Debian

Configurare partajare NFS pe Debian

NFS este un sistem de fișiere bazat pe rețea care permite computerelor să acceseze fișiere într-o rețea de calculatoare. Acest ghid explică modul în care puteți expune folderele peste NF

Configurați un server TeamTalk pe Linux

Configurați un server TeamTalk pe Linux

TeamTalk este un sistem de conferințe care permite utilizatorilor să aibă conversații audio / video de înaltă calitate, chat de text, transfer de fișiere și partajare ecrane. Este

Folosind cheia SSH pentru a vă conecta la utilizatori non-root

Folosind cheia SSH pentru a vă conecta la utilizatori non-root

Vultr oferă o caracteristică care vă permite să preinstalați cheile SSH la crearea unei noi instanțe. Acest lucru vă permite să accesați utilizatorul root al serverelor, totuși

Cum se instalează Ranger Terminal File Manager pe Linux

Cum se instalează Ranger Terminal File Manager pe Linux

Ranger este un manager de fișiere bazat pe linia de comandă cu legături de cheie VI. Oferă o interfață de blestem minimalistă și frumoasă, cu o vedere asupra ierarhiei de directoare

Cum se instalează Redmine pe Ubuntu 16.04

Cum se instalează Redmine pe Ubuntu 16.04

Folosind un sistem diferit? Redmine este un instrument gratuit și deschis de gestionare a proiectelor bazat pe web. Este scris în Ruby on Rails și acceptă mai multe baze de date

Instalare RethinkDB Cluster pe CentOS 7

Instalare RethinkDB Cluster pe CentOS 7

Introducere RethinkDB este o bază de date NoSQL care stochează date sub formă de documente JSON. Are un limbaj de interogare super intuitiv și are funcții disponibile în mod obișnuit

Cum se construiește Brotli din sursă pe Ubuntu 18.04 LTS

Cum se construiește Brotli din sursă pe Ubuntu 18.04 LTS

Folosind un sistem diferit? Brotli este o nouă metodă de compresie cu un raport de compresie mai bun decât GZIP. Codul sursă este găzduit public pe acest Githu

Configurarea conturilor de utilizator numai SFTP pe CentOS 7

Configurarea conturilor de utilizator numai SFTP pe CentOS 7

În anumite ocazii, este posibil ca un administrator de sistem să aibă nevoie să creeze un cont de utilizator și să restricționeze accesul acestora la gestionarea propriilor fișiere prin sFTP, dar nu b

Utilizarea vizualizărilor MySQL pe Debian 7

Utilizarea vizualizărilor MySQL pe Debian 7

Introducere MySQL are o caracteristică excelentă cunoscută sub numele de vizualizări. Vizualizările sunt interogări stocate. Gândiți-vă la ele ca la un alias pentru o întrebare altfel lungă. În acest ghid,

Cum se instalează Nginx 1.14 pe Arch Linux

Cum se instalează Nginx 1.14 pe Arch Linux

Cerințe preliminare Un server Vultr care funcționează actualizat Arch Linux (vezi acest articol.) Acces Sudo. Comenzile care trebuie rulate ca root sunt prefixate de #. Th

Dezactivați sau restricționați conectarea rădăcină prin SSH pe Linux

Dezactivați sau restricționați conectarea rădăcină prin SSH pe Linux

Permiterea autentificării root pe SSH este de obicei considerată o practică slabă de securitate în întreaga industrie tehnologică. În schimb, puteți efectua administrativ sensibil

Cum se instalează Seafile Server pe Ubuntu 16.10

Cum se instalează Seafile Server pe Ubuntu 16.10

Folosind un sistem diferit? Seafile (versiunea comunității) este o soluție gratuită și deschisă de sincronizare și partajare a fișierelor, care este similară cu ownCloud. De-a lungul spiritului

Cum să compilați Nginx din sursă pe CentOS 7

Cum să compilați Nginx din sursă pe CentOS 7

Folosind un sistem diferit? NGINX poate fi utilizat ca server HTTP / HTTPS, server proxy invers, server proxy de poștă, echilibrator de sarcină, terminator TLS sau cachin

Cum se instalează Thelia 2.3 pe Debian 9

Cum se instalează Thelia 2.3 pe Debian 9

Folosind un sistem diferit? Thelia este un instrument open source pentru crearea de site-uri web pentru e-business și gestionarea conținutului online scris în PHP. Codul sursă Thelia i

Cum se instalează DokuWiki pe Ubuntu 16.04 LTS

Cum se instalează DokuWiki pe Ubuntu 16.04 LTS

Folosind un sistem diferit? DokuWiki este un program wiki open source scris în PHP care nu necesită o bază de date. Stochează date în fișiere text. DokuWik

Configurarea unui chroot pe Debian

Configurarea unui chroot pe Debian

Acest articol vă va învăța cum să configurați o închisoare chroot pe Debian. Presupun că utilizați Debian 7.x. Dacă executați Debian 6 sau 8, acest lucru poate funcționa, bine

Cum se instalează PiVPN pe Debian

Cum se instalează PiVPN pe Debian

Introducere Un mod ușor de a configura un server VPN pe Debian este cu PiVPN. PiVPN este un instalator și un pachet pentru OpenVPN. Creează comenzi simple pentru tine

Cum se instalează Chamilo 1.11.8 pe CentOS 7

Cum se instalează Chamilo 1.11.8 pe CentOS 7

Folosind un sistem diferit? Chamilo este un sistem gratuit și deschis de management al învățării (LMS), care este utilizat pe scară largă pentru educația online și colaborarea în echipă

Instalați Nginx, Wordpress și permiteți criptarea în minute cu EasyEngine pe Debian 8 sau Ubuntu 16.04

Instalați Nginx, Wordpress și permiteți criptarea în minute cu EasyEngine pe Debian 8 sau Ubuntu 16.04

EasyEngine (ee) este un instrument Python care vă permite să gestionați ușor și automat site-urile Wordpress de pe Nginx. Folosind EasyEngine, nu va trebui să dați

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe