
我目前正在使用 psad 自動封鎖可能有害的 IP。當它偵測到攻擊時,會將 IP 加到 PSAD_BLOCKED_INPUT 或 PSAD_BLOCK_OUTPUT,然後丟棄來自該來源的所有進一步流量。
到目前為止一切順利,但我想要的是將流量從這些被封鎖的 IP 重新導向到在虛擬機器上運行的蜜罐。有什麼想法/建議嗎?
答案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 寫入位於 /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 中的蜜罐。
攔截後,攻擊者實際上掃描了蜜罐