パート 1: ブロックされた IP を ipset に追加する

パート 1: ブロックされた IP を ipset に追加する

現在、潜在的に有害な IP を自動的にブロックするために psad を使用しています。攻撃を検出すると、その 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: 転送ルールを定義する

ここで、サーバーからハニーポットにトラフィックを転送するためのルールが必要です。詳しくは、実際には 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がブロックされた後(および転送された後)のサーバーのスキャン

関連情報