第 1 部分:将阻止的 IP 添加到 ipset 中

第 1 部分:将阻止的 IP 添加到 ipset 中

我目前正在使用 psad 自动阻止潜在有害 IP。当它检测到攻击时,它会将 IP 添加到 PSAD_BLOCKED_INPUT 或 PSAD_BLOCK_OUTPUT,然后丢弃来自此来源的所有后续流量。

到目前为止一切顺利,但我想要的是将这些被阻止 IP 的流量重定向到在 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 就是你放置 VM IP 的地方。

现在可能会变得棘手,因为 psad 可能会清除所有 iptables 规则,然后您必须在 psad 初始化后添加它。

答案2

我决定尝试一下 @cybernard 的回答,你猜怎么着,我成功了!非常感谢 :)

以下是我的做法:

第 1 部分:将阻止的 IP 添加到 ipset 中

psad 会自动将每个被阻止的 IP 写入位于 /var/log/psad 的名为 auto_blocked_ips 的文本文件中。所以我们首先需要将其添加到我称为 banned_nets 的 ipset 中。

我编写了这个简单的脚本来动态地执行此操作:

#!/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 部分:定义转发规则

现在我们需要规则来将流量从服务器转发到蜜罐。具体来说,我们实际上需要两条规则,以便服务器充当透明代理。

以下是我的方法(再次感谢@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 被封锁之前扫描服务器

阻断后,攻击者实际上会扫描蜜罐

IP 被阻止(并转发)后扫描服务器

相关内容