2012-07-20 15 views
8

:)ejecutar un comando del sistema cuando una regla de iptables se corresponde

Estoy queriendo ser capaz de ejecutar un comando del sistema cuando se golpea una regla iptable, pasando la dirección IP del dispositivo remoto a la misma.

He echado un vistazo pero no he encontrado nada. Pensé en rellenar registros, pero estoy esperando mucho tráfico ...

¡Cualquier ayuda sería fantástica!

Gracias

(Si ayuda, Ubuntu Linux es mi plataforma de elección)

Respuesta

4

Así es como se hace:

iptables -I FORWARD -p tcp --dport 80 -d a.b.c.d -j LOG --log-prefix="TRIGGER ME NOW !!!"

tail -f some-logfile | awk '/some-pattern/ {system("run-some-command")}'

debe ser recta lo suficientemente avanzado y debe ser capaz de lidiar con mucho tráfico, el comando de cola debe ser lo suficientemente rápido ... Ju st asegúrese de que el archivo no crezca demasiado.

+0

Ooh, parece una buena solución ..! Voy a intentarlo ... – AndyD

1

Hazlo con knockd en su lugar. Usted configura una secuencia de golpeo de puerto de un solo puerto, luego dice knockd el comando que desea ejecutar. Normalmente se usa para agregar/eliminar reglas de iptables - para abrir un servicio (por ejemplo, acceso ssh) después de una determinada secuencia knock, pero no veo por qué no podrías usarlo para ejecutar un comando después de una muy simple, una paquete en una regla de puerto esperado.

'apt-get install knockd' en su sistema Ubuntu y la página man tiene ejemplos que puede adaptar fácilmente a esto.

+0

¡Interesante, gracias! Voy a echarle un vistazo! :) – AndyD

Cuestiones relacionadas