我目前正在使用 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 中的蜜罐。
阻断后,攻击者实际上会扫描蜜罐