La auditoría de Linux puede ayudar. Al menos localizará a los usuarios y procesos que realizan conexiones de red de datagramas. Los paquetes UDP son datagramas.
Primero, instale el auditdmarco en su plataforma y asegúrese de que auditctl -ldevuelva algo, incluso si dice que no hay reglas definidas.
Luego, agregue una regla para ver la llamada del sistema socket()y etiquétela para encontrarla más tarde ( -k). Necesito suponer que está en una arquitectura de 64 bits, pero puede sustituirla b32en lugar de la b64que no está.
auditctl -a exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET
Tiene que elegir entre las páginas man y los archivos de encabezado para construir esto, pero lo que captura es esencialmente esta llamada al sistema: socket(PF_INET, SOCK_DGRAM|X, Y)donde el tercer parámetro no está especificado pero con frecuencia es cero. PF_INETes 2 y SOCK_DGRAMes 2. Se usarían conexiones TCP SOCK_STREAMque establecerían a1=1. ( SOCK_DGRAMen el segundo parámetro se puede ORar con SOCK_NONBLOCKo SOCK_CLOEXEC, de ahí la &=comparación). Esta -k SOCKETes nuestra palabra clave que queremos usar al buscar pistas de auditoría más adelante. Puede ser cualquier cosa, pero me gusta que sea simple.
Deje pasar unos momentos y revise las pistas de auditoría. Opcionalmente, puede forzar un par de paquetes haciendo ping a un host en la red, lo que provocará una búsqueda de DNS, que utiliza UDP, que debería disparar nuestra alerta de auditoría.
ausearch -i -ts today -k SOCKET
Y aparecerá una salida similar a la siguiente sección. Lo estoy abreviando para resaltar las partes importantes
type=SYSCALL ... arch=x86_64 syscall=socket success=yes exit=1 a0=2 a1=2 ... pid=14510 ... auid=zlagtime uid=zlagtime ... euid=zlagtime ... comm=ping exe=/usr/bin/ping key=SOCKET
En el resultado anterior, podemos ver que el pingcomando provocó que se abriera el socket. Entonces podría ejecutar strace -p 14510el proceso, si todavía se estaba ejecutando. El ppid(ID de proceso principal) también aparece en caso de que sea un script que genera mucho el problema secundario.
Ahora, si tiene mucho tráfico UDP, esto no será lo suficientemente bueno y tendrá que recurrir a OProfile o SystemTap , que actualmente están más allá de mi experiencia.
Esto debería ayudar a reducir las cosas en el caso general.
Cuando haya terminado, elimine la regla de auditoría utilizando la misma línea que usó para crearla, solo sustitúyala -apor -d.
auditctl -d exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET