2012-07-20 6 views
8

:)eseguire un comando di sistema quando una regola di iptables è abbinata

Sono voler essere in grado di eseguire un comando di sistema quando una regola iptable viene colpito, passando l'indirizzo IP del dispositivo remoto ad esso.

Ho dato un'occhiata in giro ma non ho trovato nulla. Ho pensato ai grepping logs, ma mi aspetto un sacco di traffico ..

Qualsiasi aiuto sarebbe fantastico!

Grazie

(Se aiuta, Ubuntu Linux è la mia piattaforma preferita)

risposta

4

Ecco come si fa:

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")}'

deve essere dritta In avanti abbastanza e dovrebbe essere in grado di affrontare un sacco di traffico, il comando della coda dovrebbe essere abbastanza veloce ... Ju Assicurati che il file non cresca troppo.

+0

Ooh, sembra una soluzione eccellente ..! Ho intenzione di provarlo .. – AndyD

1

Invece di farlo con knockd. Configura una sequenza di bussare alla porta di una sola porta, quindi comunica a knockd il comando che vuoi eseguire. Normalmente è usato per aggiungere/rimuovere le regole di iptables - per aprire un servizio (ad es. Accesso ssh) dopo una certa sequenza di colpi, ma non vedo perché non si possa semplicemente usarlo per eseguire un comando dopo un semplice, uno pacchetto su una regola di porta prevista.

'apt-get install knockd' sul tuo sistema Ubuntu e la pagina man ha esempi che puoi facilmente adattare a questo.

+0

Interessante, grazie! Gli darò un'occhiata! :) – AndyD