iptables leitet blockierte IPs von einer Kette an einen Honigtopf um

817
Marcos Valle

Ich verwende derzeit psad, um potenziell schädliche IPs automatisch zu blockieren. Wenn ein Angriff entdeckt wird, fügt er die IP-Adresse zu PSAD_BLOCKED_INPUT oder PSAD_BLOCK_OUTPUT hinzu und löscht dann den gesamten Datenverkehr aus dieser Quelle.

So weit so gut, aber ich möchte den Verkehr von diesen blockierten IPs an einen auf einer VM laufenden Honeypot umleiten. Irgendwelche Ideen / Vorschläge?

0
Dies ist eher eine reine Routingfrage als eine InfoSec-Frage (trotz Verwendung eines Honigtopfs). Ich stimme für die Migration zu SuperUser. schroeder vor 9 Jahren 1

2 Antworten auf die Frage

0
cybernard

Zuerst müssten Sie /etc/host.deny in ein ipset laden. Definieren Sie dann eine Regel, um sie weiterzuleiten. iptables -A PREROUTING -m set -i eth0 -j DNAT --to-destination 192.168.1.1 --match-set banned_nets src

In 192.168.1.1 geben Sie Ihre VM-IP ein.

Jetzt könnte es schwierig werden, da psad alle iptables-Regeln aufhebt und Sie es nach der Initialisierung von psad hinzufügen müssen.

Vielen Dank für deine Hilfe! Ich habe eine vollständige Antwort auf meine Lösung gegeben, basierend auf dem, was Sie gesagt haben :) Marcos Valle vor 9 Jahren 0
0
Marcos Valle

Ich entschied mich, @cybernard zu beantworten, und ich denke, ich habe gearbeitet! Ich danke dir sehr :)

So habe ich es gemacht:

Teil 1: Hinzufügen gesperrter IPs zu einem ipset

psad schreibt jede gesperrte IP-Adresse automatisch in eine Textdatei mit dem Namen auto_blocked_ips, die sich in / var / log / psad befindet. Also müssen wir es zuerst in ein ipset aufnehmen, das ich banned_nets nannte.

Ich habe dieses einfache Skript geschrieben, um es dynamisch zu machen:

#!/bin/bash #ipset banned_nets must already exist  AUTO_BLOCKED_IPTABLES_PATH=/var/log/psad/auto_blocked_iptables  update_set(){ ipset flush banned_nets  grep -E -o '^([0-9][\.])[0-9]' $AUTO_BLOCKED_IPTABLES_PATH | while read -r line ; do echo "Processing $line" ipset add banned_nets $line done }  while true #run indefinitely  do inotifywait -e modify $AUTO_BLOCKED_IPTABLES_PATH | update_set done 

Teil 2: Definieren Sie Weiterleitungsregeln

Jetzt brauchen wir Regeln, um den Verkehr vom Server an den Honeypot weiterzuleiten. Das Detail ist, dass wir eigentlich zwei Regeln benötigen, sodass der Server als transparenter Proxy fungiert.

So habe ich es gemacht (noch einmal dank @cybernard):

###### forwarding ###### ipset create banned_nets hash:ip hashsize 4096  iptables -t nat -A PREROUTING -p tcp -m set --dport 8181 -j DNAT --to-destination $HONEYPOT_ADDR:443 --match-set banned_nets src iptables -t nat -A POSTROUTING -p tcp -s $HONEYPOT_ADDR --dport 443 -j SNAT --to-source $SERVER_ADDR:8181  iptables -t nat -A PREROUTING -p tcp -m set -j DNAT --to-destination $HONEYPOT_ADDR --match-set banned_nets src iptables -t nat -A PREROUTING -p udp -m set -j DNAT --to-destination $HONEYPOT_ADDR --match-set banned_nets src  iptables -t nat -A POSTROUTING -p tcp -m set -j SNAT --to-source $SERVER_ADDR --match-set banned_nets src iptables -t nat -A POSTROUTING -p udp -m set -j SNAT --to-source $SERVER_ADDR --match-set banned_nets src  echo "[+] Activating IP forwarding" echo 1 > /proc/sys/net/ipv4/ip_forward 

Diese Regeln sind Bestandteil meines iptables.sh-Skripts.

Teil 3: Überprüfung der Ergebnisse

Wir haben also einen Angreifer, der versucht, 192.168.56.101 zu scannen, und einen Honeypot in 192.168.56.100.

Scannen des Servers, bevor die IP blockiert wird

Nach dem Blockieren scannt der Angreifer tatsächlich den Honigtopf

Scannen des Servers, nachdem IP blockiert (und weitergeleitet) wurde

Übrigens, ich habe bei GitHub ein Repo mit einem Funktionsprojekt dafür erstellt: https://github.com/marcosValle/pfcIME/ Marcos Valle vor 9 Jahren 0
Nur damit Sie wissen, dass ipset save> all.txt ** oder ** ipset save -f /src/all.txt** verwendet werden kann, um die gesamte Liste auf einmal zu speichern, und Sie können ** restore ** durch * ersetzen. * save **, wenn Sie die gesamte Liste auf einmal laden möchten, anstatt eine Datei manuell abzugreifen. cybernard vor 9 Jahren 0
Auch wenn Sie mit / var / log / psad umgehen müssen. Sie können auch Folgendes tun: cat / var / log / psad | cut -f 1 | xargs -n1 ipset banned_nets hinzufügen. ** Natürlich müssen Sie den ausgeschnittenen Teil ändern. cybernard vor 9 Jahren 0