Me revoilà.
Un petit rappel de mon pb: je veux pouvoir connaître le processus qui a été utilisé par une IP “suspecte” (repérée par tcpdump ou wireshark, et en supposant que cette IP refera son apparition à un moment).
j’ajoute cette règle à netfilter:
Remarque: je récupère des lignes de ce type dans /var/log/ulog/syslogemu.log:
[quote="/var/log/ulog/syslogemu.log"]May 5 10:21:50 bigbouzin traque IN= OUT=eth0 MAC= SRC=192.168.1.3 DST=IP_suspecte LEN=52 TOS=00 PREC=0x00 TTL=64 ID=41218 CE DF PROTO=TCP SPT=33948 DPT=19150 SEQ=4114912712 ACK=3646346252 WINDOW=501 ACK URGP=0
[/quote]
ce qui m’interrese, c’est le port de sortie (en vert).
J’ai fait un script awk, nommé traqueur, qui va :
[ul]–> filtrer les lignes de /var/log/ulog/syslogemu.log contenant traque
–> en isoler le port de sortie
–> lancer un lsof -i|grep le_susdit_port[/ul]
[quote=“traqueur”]#! /usr/bin/awk -f
/traque/ { filtre les lignes contenant "traque"
if ($18 ~ /SPT/) { ce sont les champs 18 ou 19 qui contiennent le port de sortie, d’où le deux "if"
gsub(/[SPT=]/,"",$18) je vire le SPT= du champs, pour n’avoir que le n° de port
print “port de sortie:” $18
system (“lsof -i|grep “$18"” ) je lance lsof -i pour le port concerné
}
if ($19 ~ /SPT/) { idem que précédemment, dans le cas où le port de sortie est dans le champs 19
gsub(/[SPT=]/,”",$19)
print “port de sortie:” $19
system ("lsof -i|grep “$19"” )
}
}[/quote]
puis en console:
Le problème:
si je fais des tests sur un site, prenons le forum debian (IP 88.165.116.107), tout se passe bien a peu près bien:
# tail -f /var/log/ulog/syslogemu.log |awk -f traqueur
port de sortie:43663
firefox-b 17451 yanlolot 23r IPv4 106727 0t0 TCP 192.168.1.3:43663->forum.debian-fr.org:www (ESTABLISHED)
port de sortie:43663
firefox-b 17451 yanlolot 23r IPv4 106727 0t0 TCP 192.168.1.3:43663->forum.debian-fr.org:www (ESTABLISHED)
port de sortie:43663
firefox-b 17451 yanlolot 23r IPv4 106727 0t0 TCP 192.168.1.3:43663->forum.debian-fr.org:www (ESTABLISHED)
port de sortie:43663
port de sortie:43664
port de sortie:43663
Au bout d’un moment, lsof ne renvoie plus rien, alors qu’il y a des sorties sur des ports qui devraient apparaîtrent.
Encore plus foireux: un test sur l’IP du dns de mon FAI:
# tail -f /var/log/ulog/syslogemu.log |awk -f traqueur
port de sortie:39611
port de sortie:39611
port de sortie:39614
port de sortie:39614
port de sortie:39614
port de sortie:39614
port de sortie:39611
port de sortie:39614
port de sortie:39614
port de sortie:39611
port de sortie:52484
port de sortie:39648
port de sortie:38089
port de sortie:33059
port de sortie:59091
port de sortie:52765
port de sortie:42603
Là, lsof ne me donne plus rien.
Je me demande si lsof ne serait pas trop lent ?: netfilter choppe l’IP voulue, et le temps que mon lsof s’exécute, le port concerné n’est plus utilisé.
Voilà où j’en suis: pour des requêtes rapides, mon script ne me renvoie rien. 