A diferencia de los sockets de red que pueden auditarse fácilmente con herramientas tipo tcpdump, los sockets unix requieren de otro tipo de aplicaciones para ser monitorizados y averiguar qué tipo de datos fluyen a través de ellos.
La utilidad “socat”, entre muchas de sus posibilidades, facilita la visualización del tráfico que circula a través de los sockets unix. Esta herramienta crea un socket que está bajo su control y lo vincula al socket UNIX original que queremos vigilar. De esa forma, habiendo configurado los clientes para que utilicen el socket de socat de manera previa, se puede visualizar el tráfico sin ningún problema. Es una especie de hombre en el medio con sockets tipo unix. Esta no es la única forma de hacerlo pero tal vez sea la más fácil de implementar sin necesidad de profundizar demasiado en la herramienta.
Para el ejemplo usaremos el típico socket PHP-FPM. Como se dijo anteriormente debemos configurar el cliente que utilizará el socket generado por socat, en nuestro caso el servidor web nginx.
Configuración del socket php en Nginx
location ~ \.php$ { try_files $uri =404; #fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_pass unix:/tmp/socat-listen; # <---------- fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; ...
Ejemplo: Interceptando la comunicación entre Nginx y php-fpm por medio del socket /tmp/socat-listen.
socat -v UNIX-LISTEN:/tmp/socat-listen,mode=777,fork UNIX-CONNECT:/var/run/php5-fpm.sock
Opciones utilizadas en el ejemplo anterior.
NOTA: Si el contenido manejado por el socket no es texto claro, es útil tener la salida en hexadecimal, para ello podemos utilizar “-x -v”.