IPTables: Loggen und dann blockieren bzw. Befehl ausführen

  • Thread starter Thread starter Deleted member 11691
  • Start date Start date
D

Deleted member 11691

Guest
Hallo,

ich suche nach einer Möglichkeit, bestimmte Pakete per IPTables zu loggen, um dann einen Befehl auszuführen bzw. direkt einen Befehl auszuführen.
Zurzeit habe ich folgendes:
Code:
iptables -A INPUT -p icmp -m recent --name icmp_block --rcheck --seconds 10 --hitcount 15 -j [color=red]DROP[/color]
Nun möchte ich meinen Code etwa so umschreiben:
Code:
iptables -A INPUT -p icmp -m recent --name icmp_block --rcheck --seconds 10 --hitcount 15 -j [color=green]COMMAND --command "ip route add {REMOTE_ADDR} gw 127.0.0.1 lo"[/color]
Ist das mit einem bestimmten Modul möglich?
Google spuckte mir nur sch... aus :mad:

L.G. PCFreund
 
Um was für art von Packete geht es dir?

Als Ansatz kann ich dir das Beispiel PortSentry bieten.
Ich setzte es ein bsp um nach einem PortScan einen command auszufüren
also wenn bsp ein portscan auf port 1080 auf eth0 bei mir gemacht würd
reagiert portsentry mit dem starten eines scripts das dan weitere aktionen ausfürt bsp
würd die ip übergeben an das script um A) sie via iptables zu sperren B) mir eine eMail
Benarichtigung zukommen zu lassen.

Man kann mit sicherheit auch mittels traffic-analyse wie in deinem fall beim eintreffen von icmp packeten ein script ausfüren das man parameter etc übergibt. Stichwort tcpdump.

Bau es mit filtern in ein script ein das auf die ausgabe reagiert(Mir fähl leider gerade keine vertich lösung auf anhib ein die dein vorhaben supportet. eine andere möglichkeit wäre das du über den syslog gehst da du mittels iptables ja loggen kanst die wiederrum im syslog deiner kiste landen. dort kanst du ansetzen und dir ein tool schreiben das mittels bsp einem prefix reagiert so wie fail2ban etc.
 
Wie in den Codes sichtbar, geht es mir um allgemeine ICMP-Requests, welche ich nach sehr vielen Anfragen irgendwann blockieren möchte. Aber auch geht es mir um anderes, was ich damals vorhatte, wo mir aber die Grundkenntnisse gefehlt haben.
 
Am einfachsten setzt du eine LOGDROP-Regel, sprich du erstellst eine neue Chain:
Code:
iptables -N LOGDROP
iptables -A LOGDROP -j LOG --log-prefix "rateicmp: "
iptables -A LOGDROP -j DROP

Dann kannst du in rsyslog die Logausgabe auf UDP statt die Festplatte umleiten.
(Mit Sockets hatte ich in der Vergangenheit Probleme)
Code:
:msg, contains, "rateicmp: "  @127.0.0.1:DEINPORT
& ~

Danach brauchst du nur noch einen Listener welcher die UDP-Logs abhoert, zaehlt und danach blockiert. Eine aehnliche Methode inkl. Skript hatte ich vor einiger Zeit in meinem Blog beschrieben
 
Back
Top