Aller au contenu
  1. Articles/

Déterminer les tentatives de connexion

·2 mins·
Sommaire
Memos - Cet article fait partie d'une série.
Partie 10: Cet article

Introduction
#

Dans un environnement contrôlé, où selon la configuration un processus doit parfois passer par un proxy, parfois non, il n’est pas forcément simple de savoir si la configuration est correctement appliquée.

Un exemple est le package manager yum. On peut changer sa configuration proxy via l’édition de son fichier de configuration /etc/yum.conf.

[main]
gpgcheck=1
[...]
proxy=http://proxy.host:port

Mais cette configuration peut être remplacée par une seconde configuration au niveau des repos, via leur fichier dédié, tel que /etc/yum.repos.d/package.repo.

[package_name]
gpgcheck=0
enabled=1
[...]
proxy=http://proxy.host:port

De plus, yum appelle libcurl, qui laisse supposer que la configuration proxy par variable d’environnement fonctionne.

$ strace yum install package 2>&1 | grep -i curl
openat(AT_FDCWD, "/lib64/libcurl.so.4", O_RDONLY|O_CLOEXEC) = 3"
^C

Ce qui est discuté dans un précédent article1 devrait donc être pris en compte par yum.

Mais comment savoir rapidement où notre processus se connecte, et ainsi en déduire si la configuration de notre système est bonne ?

Solution
#

Se baser sur tcpdump peut être utile en filtrant par hostname.

$ tcpdump dst example.org

mais pour s’assurer une pleine visibilité de ce qui se passe au niveau du processus, la commande strace nous propose exactement ce qu’il nous faut.

$ strace -f -tt -T -s 256 -yy -e trace=connect command 2>&1| grep connect

avec la description des options suivante :

  • -f: suivi des processus enfants,
  • -tt: affichage du timestamp pour chaque appel système,
  • -T: affichage du temps passé dans chaque appel système,
  • -s 256: afficage plus verbeux,
  • -yy: affichage des détails sockets et file descriptor,
  • -e trace=connect: suivi des connexions.

dans ce cas d’exemple,

$ strace -f -tt -T -s 256 -yy -e trace=connect yum install package 2>&1 | grep connect
[...]
11:18:57.000889 connect(5<TCP:[101416]>, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("10.0.1.1")}, 16) =
[...]
Memos - Cet article fait partie d'une série.
Partie 10: Cet article