Часть 1: Добавление заблокированных IP-адресов в ipset

Часть 1: Добавление заблокированных IP-адресов в ipset

В настоящее время я использую psad для автоматической блокировки потенциально вредоносных IP-адресов. Когда он обнаруживает атаку, он добавляет IP-адрес в PSAD_BLOCKED_INPUT или PSAD_BLOCK_OUTPUT, а затем сбрасывает весь дальнейший трафик из этого источника.

Пока все хорошо, но я хочу перенаправить трафик с этих заблокированных IP на honeypot, работающий на VM. Есть идеи/предложения?

решение1

Сначала вам придется загрузить /etc/host.deny в ipset. Затем определить правило для его пересылки. iptables -A PREROUTING -m set -i eth0 -j DNAT --to-destination 192.168.1.1 --match-set banned_nets src

192.168.1.1 — это то место, куда вы введете IP-адрес своей виртуальной машины.

Теперь все может стать сложнее, так как psad может очистить все правила iptables, и тогда вам придется добавлять их после инициализации psad.

решение2

Я решил попробовать ответить @cybernard и, знаете что, у меня получилось! Большое спасибо :)

Вот как я это сделал:

Часть 1: Добавление заблокированных IP-адресов в ipset

psad автоматически записывает каждый заблокированный IP в текстовый файл с именем auto_blocked_ips, расположенный в /var/log/psad. Поэтому сначала нам нужно добавить его в ipset, который я назвал banned_nets.

Я написал этот простой скрипт, чтобы сделать это динамически:

#!/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]{1,3}[\.]){3}[0-9]{1,3}' $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

Часть 2: Определение правил пересылки

Теперь нам нужны правила для пересылки трафика с сервера на honeypot. Деталь в том, что на самом деле нам нужны два правила, чтобы сервер действовал как прозрачный прокси.

Вот как я это сделал (еще раз спасибо @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

Эти правила являются частью моего скрипта iptables.sh.

Часть 3: проверка результатов

Итак, у нас есть злоумышленник, пытающийся просканировать 192.168.56.101, и приманка в 192.168.56.100.

Сканирование сервера перед блокировкой IP

После блокировки злоумышленник фактически сканирует honeypot

Сканирование сервера после блокировки IP (и переадресации)

Связанный контент