Además de usar iptables para registrar conexiones entrantes.
¿Hay alguna manera de registrar conexiones entrantes establecidas a un servicio para el que no tiene la fuente (supongamos que el servicio no registra cosas como esta por sí solo)? Lo que quiero hacer es recopilar información basada en quién se conecta para poder decir cosas como a qué horas del día se usa más el servicio, en qué parte del mundo se encuentra la base de usuarios principal, etc.
Soy consciente de que puedo usarlo netstat
y conectarlo a un script cron, pero eso podría no ser exacto, ya que el script solo puede ejecutarse con la frecuencia de un minuto.
Esto es lo que estoy pensando en este momento:
- Escriba un programa que realice encuestas constantemente
netstat
, buscando conexiones establecidas que no aparecieron en la encuesta anterior. Sin embargo, esta idea parece una pérdida de tiempo de CPU, ya que puede que no haya una nueva conexión. - Escriba un programa contenedor que acepte conexiones entrantes en cualquier puerto en el que se ejecute el servicio, pero entonces no sabría cómo pasar esa conexión al servicio real.
Editar: Se me ocurrió que esta pregunta podría ser mejor para stackoverflow, aunque no estoy seguro. Lo siento si este es el lugar equivocado.
Respuestas:
Puede registrar nuevas conexiones con iptables así
Esto agregará un mensaje como este para una nueva conexión ssh
o como este para una nueva conexión http
y así sucesivamente para cada nueva conexión a su sistema. Se registrará en cualquier lugar donde su syslog esté configurado para enviar mensajes kern.warning.
fuente
puede usar auditado y, al final del día, calcular algunas estadísticas basadas en esos loglines. O también puede ir a una solución snmp, pero probablemente haya escrito su propia mib
fuente
¿Qué tal tcpdump o wireshark?
fuente
tcpdump -i <interface> -s 65535 -w <some-file>
Además, tendrá que terminar la captura con ^ C cuando crea que ha capturado suficientes paquetes.