Vous pouvez utiliser le framework auditd pour ce genre de choses. Ils ne sont pas très "conviviaux" ou intuitifs, donc nécessitent un peu de fouille de votre part.
Assurez-vous d'abord que auditd est installé, en cours d'exécution et que votre noyau le prend en charge.
Pour Ubuntu, vous pouvez l'installer avec apt-get install auditd
par exemple.
Ensuite, vous ajoutez une stratégie d'audit pour surveiller tous les connect
appels système comme celui-ci:
auditctl -a exit,always -F arch=b64 -S connect -k MYCONNECT
Si vous utilisez une installation 32 bits de Linux, vous devez remplacer b64 par b32.
Cette commande insérera une stratégie dans la structure d'audit et tous les appels système connect () seront désormais enregistrés dans vos fichiers journaux d'audit (généralement /var/log/audit/audit.log
) pour que vous puissiez les consulter.
Par exemple, une connexion avec netcat au port 80 de news.ycombinator.com entraînera quelque chose comme ceci:
type=SYSCALL msg=audit(1326872512.453:12752): arch=c000003e syscall=42 success=no exit=-115 a0=3 a1=24e8fa0 a2=10 a3=7fff07a44cd0 items=0 ppid=5675 pid=7270 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts4 ses=4294967295 comm="nc" exe="/bin/nc.openbsd" key="MYCONNECT"
type=SOCKADDR msg=audit(1326872512.453:12752): saddr=02000050AE84E16A0000000000000000
Ici, vous pouvez voir que l'application /bin/nc.openbsd a initié un appel connect (), si vous recevez beaucoup d'appels de connexion et que vous souhaitez uniquement récupérer un certain ip ou port, vous devez effectuer une conversion. La ligne SOCKADDR contient un argument saddr, il commence par 0200 suivi du numéro de port en hexadécimal (0050) qui signifie 80, puis de l'IP en hexadécimal (AE84E16A) qui est l'IP 174.132.225.106 de news.ycombinator.com.
Le cadre d'audit peut générer de nombreux journaux, alors n'oubliez pas de le désactiver lorsque vous avez accompli votre mission. Pour désactiver la politique ci-dessus, remplacez simplement -a par -d comme tel:
auditctl -d exit,always -F arch=b64 -S connect -k MYCONNECT
Bonne documentation sur le cadre d'auditd:
http://doc.opensuse.org/products/draft/SLES/SLES-security_sd_draft/part.audit.html
Convertissez les adresses IP en hexadécimal, déc, binaire, etc. sur:
http://www.kloth.net/services/iplocate.php
Convertisseur hex / dec général:
http://www.statman.info/conversions/hexadecimal.html
Une brève introduction à auditd, de l'IT Security Stack Exchange.
http://security.blogoverflow.com/2013/01/a-brief-introduction-to-auditd/
Edit 1 :
Une autre façon rapide de faire (suédois: fulhack) est de créer une boucle rapide qui vous envoie les données de connexion, comme ceci:
while true;do
ss -ntap -o state established '( dport = :80 )'
sleep 1
done
Cette commande utilise la ss
commande (statistiques de socket) pour vider les connexions établies actuelles vers le port 80, y compris le processus qui l'a initiée. Si c'est beaucoup de données, vous pouvez ajouter une | tee /tmp/output
fois terminé pour afficher la sortie à l'écran et l'écrire dans / tmp / output pour un traitement / creusage ultérieur. S'il n'attrape pas la connexion haproxy rapide, veuillez essayer de le supprimer, sleep 1
mais faites attention à la journalisation extensive s'il s'agit d'une machine très utilisée. Modifiez au besoin!
ausearch -i
pour que cessaddr
chaînes hexadécimales soient décodées automatiquement pour votre.Vous pouvez également récupérer les énormes journaux que vous obtenez de "ausearch -i" pour voir uniquement les sockets qui ont réussi à se connecter à un autre hôte sur Internet. J'ai écrit un script simpliste pour obtenir chaque processus et commande qui a créé un socket pour se connecter à un hôte sur Internet avec l'adresse de connexion de cet hôte cible et l'heure actuelle de création du socket. C'est ici:
la source