Se precisa analizar ou interceptar paquetes de rede en Linux, é mellor empregar unha utilidade para consolas tcpdump. Pero o problema xorde na súa xestión bastante complicada. Parecerá ao usuario medio que traballar coa utilidade non é conveniente, pero isto só é a primeira vista. O artigo contaráche como funciona tcpdump, que sintaxe ten, como empregalo e se darán numerosos exemplos do seu uso.
Vexa tamén: Guías para configurar unha conexión a Internet en Ubuntu, Debian, Ubuntu Server
Instalación
A maioría dos desenvolvedores de sistemas operativos baseados en Linux inclúen a utilidade tcpdump na lista de preinstalados, pero se por algún motivo non está na súa distribución, sempre pode descargala e instalala a través de "Terminal". Se o teu sistema operativo está baseado en Debian e estes son Ubuntu, Linux Mint, Kali Linux e outros, necesitará executar este comando:
sudo apt instalar tcpdump
Ao instalar, ten que introducir un contrasinal. Teña en conta que ao marcar non se mostra, tamén para confirmar a configuración que precisa introducir o personaxe D e fai clic Introduza.
Se tes Red Hat, Fedora ou CentOS, o comando de instalación terá o seguinte aspecto:
sudo yam instalar tcpdump
Despois de instalar a utilidade, pódese empregar de inmediato. Isto e moito máis falaremos máis adiante no texto.
Vexa tamén: Guía de instalación de PHP no servidor Ubuntu
Sintaxe
Como calquera outro comando, tcpdump ten a súa propia sintaxe. Coñecéndoo, podes establecer todos os parámetros necesarios que se terán en conta á hora de executar o comando. A sintaxis é a seguinte:
opcións tcpdump -i filtros de interface
Ao usar o comando, debes especificar a interface para o seguimento. Os filtros e as opcións son variables opcionais, pero permiten unha personalización máis flexible.
Opcións
Aínda que non é necesario indicar unha opción, aínda hai que listar as dispoñibles. A táboa non mostra a súa lista completa, senón só as máis populares, pero son máis que suficientes para resolver a maioría das tarefas.
Opción | Definición |
---|---|
-A | Permite ordenar paquetes con formato ASCII |
-l | Engade unha función de desprazamento. |
-i | Despois de entrar, cómpre especificar a interface de rede que se vai controlar. Para comezar a controlar todas as interfaces, introduza a palabra "calquera" despois da opción |
-c | Finaliza o proceso de seguimento despois de comprobar o número especificado de paquetes |
-w | Xera un ficheiro de texto cun informe de verificación |
-E | Mostra o nivel de conexión a internet coa conexión de datos |
-L | Mostra só os protocolos que admite a interface de rede especificada. |
-C | Crea outro ficheiro durante a gravación de paquetes se o seu tamaño é maior que o especificado |
-r | Abre un ficheiro de lectura que se creou usando a opción -w |
-j | O formato TimeStamp empregarase para gravar paquetes |
-J | Permite ver todos os formatos dispoñibles TimeStamp |
-G | Serve para crear un ficheiro de rexistro. A opción tamén require un valor temporal, despois do cal se creará un novo rexistro |
-v, -vv, -vvv | Dependendo do número de caracteres da opción, a saída do comando será máis detallada (o aumento é directamente proporcional ao número de caracteres) |
-f | A saída mostra o nome de dominio dos enderezos IP |
-F | Permite ler información non desde a interface de rede, senón desde o ficheiro especificado |
-D | Demostra todas as interfaces de rede que se poden usar. |
-n | Desactiva a visualización de nomes de dominio |
-Z | Especifica o usuario en cuxa conta se crearán todos os ficheiros. |
-K | Skipping Checksum Análise |
-q | Resumo da vitrina |
-H | Detecta cabeceiras 802.11s |
-Eu | Emprégase para capturar paquetes en modo monitor |
Examinadas as opcións, un pouco máis baixas imos directamente ás súas aplicacións. Mentres tanto, consideraranse filtros.
Filtros
Como se di ao principio do artigo, pode engadir filtros á sintaxe de tcpdump. Agora considerarase o máis popular deles:
Filtro | Definición |
---|---|
anfitrión | Especifica o nome do servidor |
neto | Indica subredes e redes IP |
ip | Especifica o enderezo do protocolo |
src | Mostra os paquetes que foron enviados desde o enderezo especificado |
dst | Mostra os paquetes que foron recibidos polo enderezo especificado |
arp, udp, tcp | Filtrado por un dos protocolos |
porto | Mostra información relacionada cun porto específico |
e, ou | Combina varios filtros nun comando. |
menos maior | Paquetes de saída menores ou maiores que o tamaño especificado |
Todos os filtros anteriores pódense combinar entre si, polo que na emisión do comando só verás a información que queres ver. Para comprender con máis detalle o uso dos filtros anteriores, paga a pena dar exemplos.
Vexa tamén: Comandos de uso frecuente no terminal de Linux
Exemplos de uso
As opcións de sintaxe usadas frecuentemente para o comando tcpdump mostraranse agora. Non se poden enumerar todos, xa que pode haber un número infinito das súas variacións.
Ver unha lista de interfaces
É recomendable que cada usuario comprobe inicialmente a lista de todas as súas interfaces de rede que se poden rastrexar. Na táboa anterior sabemos que para iso cómpre usar a opción -D, polo que no terminal, execute o seguinte comando:
sudo tcpdump -D
Un exemplo:
Como podes ver, o exemplo ten oito interfaces que se poden ver co comando tcpdump. O artigo fornecerá exemplos ppp0Podes usar calquera outro.
Captura de tráfico normal
Se precisa rastrexar unha interface de rede, pode facelo usando a opción -i. Non esquezas introducir o nome da interface despois de ingresala. Aquí ten un exemplo de tal comando:
sudo tcpdump -i ppp0
Teña en conta: antes do comando hai que introducir "sudo", xa que require dereitos de usuario.
Un exemplo:
Nota: despois de premer Enter no "Terminal", os paquetes interceptados mostraranse continuamente. Para deter o fluxo, cómpre premer a combinación de teclas Ctrl + C.
Se executa o comando sen opcións e filtros adicionais, verá o seguinte formato para mostrar paquetes controlados:
22: 18: 52.597573 IP vrrp-topf2.p.mail.ru.https> 10.0.6.67.35482: Bandeiras [P.], sec. 1: 595, ack 1118, win 6494, opcións [nop, nop, TS val 257060077 ecr 697597623], lonxitude 594
Onde resalta a cor:
- azul: hora de recepción do paquete;
- laranxa: versión de protocolo;
- verde - enderezo do remitente;
- violeta: o enderezo do destinatario;
- gris - información adicional sobre tcp;
- tamaño de paquete vermello (mostrado en bytes).
Esta sintaxe ten a capacidade de mostrar nunha xanela. "Terminal" sen usar opcións adicionais.
Captura de tráfico coa opción -v
Como se sabe na táboa, a opción -v permite aumentar a cantidade de información. Tomemos un exemplo. Comprobe a mesma interface:
sudo tcpdump -v -i ppp0
Un exemplo:
Aquí podes ver que na saída apareceu a seguinte liña:
IP (tos 0x0, ttl 58, id 30675, offset 0, bandeiras [DF], proto TCP (6), lonxitude 52
Onde resalta a cor:
- laranxa: versión de protocolo;
- azul: vida útil do protocolo;
- verde: a lonxitude da cabeceira do campo;
- púrpura - versión do paquete tcp;
- vermello: tamaño do paquete.
Tamén na sintaxe do comando pode escribir unha opción -vv ou -vvv, o que aumentará aínda máis a cantidade de información visualizada na pantalla.
Opción -w e -r
Na táboa de opcións mencionábase a posibilidade de gardar toda a saída nun ficheiro separado para que poida visualizalo máis tarde. A opción é responsable diso. -w. Usalo é bastante sinxelo, só tes que especificalo na orde e logo introduza o nome do futuro ficheiro coa extensión ".pcap". Vexamos un exemplo:
sudo tcpdump -i ppp0 -w file.pcap
Un exemplo:
Teña en conta: ao escribir os rexistros nun ficheiro, non aparece ningún texto na pantalla "Terminal".
Cando queiras ver a saída gravada, debes usar a opción -r, despois do cal escriba o nome do ficheiro anteriormente gravado. Úsase sen outras opcións e filtros:
sudo tcpdump -r file.pcap
Un exemplo:
Ambas as opcións son excelentes nos casos en que precisa gardar grandes cantidades de texto para analizar máis tarde.
Filtrado IP
Desde a táboa de filtros sabemos diso dst Permite amosar na pantalla da consola só aqueles paquetes que recibiron o enderezo especificado na sintaxe do comando. Así, é moi conveniente ver os paquetes recibidos polo seu ordenador. Para iso, o equipo só precisa especificar o seu enderezo IP:
sudo tcpdump -i ppp0 ip dst 10.0.6.67
Un exemplo:
Como podes ver, ademáis dst, tamén rexistramos un filtro no equipo ip. Noutras palabras, dixémoslle á computadora que ao seleccionar paquetes prestaría atención ao seu enderezo IP e non a outros parámetros.
Por IP, tamén pode filtrar os paquetes saíntes. Volveremos a dar a nosa IP no exemplo. É dicir, agora faremos un seguimento dos paquetes que se envían desde o noso ordenador a outros enderezos. Para iso, execute o seguinte comando:
sudo tcpdump -i ppp0 ip src 10.0.6.67
Un exemplo:
Como podes ver, na sintaxe do comando cambiamos o filtro dst en diante src, dándolle así á máquina que busque un remitente mediante IP.
Filtrado HOST
Por analoxía con IP no comando, podemos especificar un filtro anfitriónfiltrar paquetes coa hostia de interese. É dicir, na sintaxe, en lugar do enderezo IP do remitente / receptor, precisará especificar o seu host. Parece así:
sudo tcpdump -i ppp0 host dst google-public-dns-a.google.com
Un exemplo:
Na imaxe podes ver iso "Terminal" só se amosan os paquetes que foron enviados desde a nosa IP á host de google.com. Como podes entender, en vez do google host, podes ingresar calquera outro.
Do mesmo xeito que co filtrado de IP, a sintaxe dst pódese substituír por srcPara ver os paquetes que se envían ao ordenador:
sudo tcpdump -i ppp0 src host google-public-dns-a.google.com
Nota: o filtro do host debe estar despois de dst ou src, se non, o comando lanzará un erro. No caso do filtrado por IP, pola contra, dst e src están diante do filtro ip.
Aplicando o e ou o filtro
Se precisa usar varios filtros nun só comando á vez, entón debe aplicar un filtro e ou ou (depende do caso) Ao especificar filtros na sintaxe e separalos con estes operadores, faralles funcionar como un. Por exemplo, semella:
sudo tcpdump -i ppp0 ip dst 95.47.144.254 ou ip src 95.47.144.254
Un exemplo:
A sintaxe do comando mostra o que queremos mostrar "Terminal" todos os paquetes que foron enviados ao enderezo 95.47.144.254 e os paquetes recibidos polo mesmo enderezo. Tamén pode cambiar algunhas variables nesta expresión. Por exemplo, no canto de IP, especifique HOST ou substitúa directamente as direccións.
Filtro de porto e porta
Filtro porto perfecto nos casos en que necesite obter información sobre paquetes cun porto específico. Polo tanto, se só precisa ver respostas ou consultas DNS, ten que especificar o porto 53:
sudo tcpdump -vv -i ppp0 port 53
Un exemplo:
Se desexa ver paquetes http, ten que entrar no porto 80:
porto 80 sudo tcpdump -vv -i ppp0
Un exemplo:
Entre outras cousas, é posible rastrexar de inmediato a gama de portos. Aplícase un filtro para iso. arranxar:
sudo tcpdump portrange 50-80
Como podes ver, xunto co filtro arranxar opcións opcionais son obrigatorios. Basta configurar o rango.
Filtrado de protocolos
Tamén podes ver o tráfico que corresponda a calquera protocolo. Para iso, use o nome deste protocolo como filtro. Vexamos un exemplo udp:
sudo tcpdump -vvv -i ppp0 udp
Un exemplo:
Como podes ver na imaxe, despois de executar o comando en "Terminal" só se mostraron paquetes co protocolo udp. Así, pódense filtrar por outros, por exemplo arp:
sudo tcpdump -vvv -i ppp0 arp
ou tcp:
sudo tcpdump -vvv -i ppp0 tcp
Filtro neto
Operador neto axuda a filtrar os paquetes en función da súa designación de rede. Usalo é tan sinxelo coma o resto: cómpre especificar un atributo na sintaxe netoe logo introduza o enderezo da rede. Aquí ten un exemplo de tal comando:
sudo tcpdump -i ppp0 net 192.168.1.1
Un exemplo:
Filtrado de tamaño de paquetes
Non consideramos dous filtros máis interesantes: menos e maior. Da táboa con filtros, sabemos que serven para emitir máis paquetes de datos (menos) ou menos (maior) o tamaño especificado despois de introducir o atributo.
Supoñamos que queremos controlar só paquetes que non superen a marca de 50 bits, entón o comando terá o seguinte aspecto:
sudo tcpdump -i ppp0 menos 50
Un exemplo:
Agora imos amosar "Terminal" paquetes maiores de 50 bits:
sudo tcpdump -i ppp0 maior 50
Un exemplo:
Como podes ver, aplícanse do mesmo xeito, a única diferenza é o nome do filtro.
Conclusión
Ao final do artigo, podemos concluír que o equipo tcpdump - Esta é unha excelente ferramenta coa que podes rastrexar calquera paquete de datos transmitido por Internet. Pero non é suficiente con introducir o comando "Terminal". O resultado desexado obterase só se empregas todo tipo de opcións e filtros, así como as súas combinacións.