¿Hay alguna forma de iniciar sesión para archivar todas las conexiones salientes que crea un proceso? Soy consciente de netstat
eso, pero parece ser más una instantánea de un punto en el tiempo que algo que se ejecuta y registra información durante un período.
Solo necesito la IP o el nombre de host, el puerto y el proceso de conexión.
watch -n 2 netstat
mientras tanto, pero esa no es una solución adecuada, ¿verdad?Respuestas:
En Linux, puede configurar el subsistema de auditoría para registrar cada intento de establecer una conexión de red. Para obtener información sobre el subsistema de auditoría, lea la
auditctl
página de manual o este tutorial u otros ejemplos en este sitio . Instale elauditd
paquete de su distribución si es necesario, luegoLos registros están en
/var/log/audit/audit.log
todas las distribuciones que conozco. También puedes buscarlos conausearch
.fuente
auditctl -d exit,always -S connect
less /var/log/audit/audit.log
Si puede instalar un núcleo personalizado, debería echar un vistazo a SystemTap . Hay muchos ejemplos de cómo rastrear la actividad de la red.
fuente
En Linux, puede usar
ip_conntrack
para lograr esto. Es un módulo de seguimiento de conexiones, que se usa normalmente para monitorear conexiones para protocolos de comportamiento extraño (como FTP) para ser administrados por un firewall / caja NAT.Puede grep el pseudo-archivo para ver las conexiones establecidas, y grep aún más la IP de origen para ver cuándo se origina en su caja.
fuente
Buscaría usar
tcpdump
en la interfaz de salida mirando lasSYN
solicitudes de salida .Si se siente realmente aventurero, podría hacer utilidades como:
strace
otruss
informar todas lasconnect
llamadas al sistema mientras rastrea la ejecución del programa, pero esto es un poco más peligroso y tiene inconvenientes cuando se trata de procesos multiproceso.fuente