geoipフィルタリングをテストするために他のSrc IP(スプーフィング)をシミュレートします。

geoipフィルタリングをテストするために他のSrc IP(スプーフィング)をシミュレートします。

トラフィックフィルタリングをテストするために、IPソースに基づいてさまざまなIPをシミュレートしたいと思います。

ブリッジされたネットワークを使用してノード1とノード2をシミュレートするiptablesと2つのコンテナを使用していくつかのテストを実行しました。

  • node1 はソースアドレスをなりすまし、node2 に要求を送信するノードです。
  • node2はIPソースを確認したい受信側にすぎません。

最初はICMPを使ってみましたが、簡単でした。

# node1 : target icmp protocol and change the src @
node1> sudo iptables -t nat -A POSTROUTING -p icmp -j SNAT --to-source 0.0.1.45

# node2 : redirect traffic targeted to 192.168.1.66 to 
node2> declare node1="$(dig +short node1)"
node2> iptables -t nat -A OUTPUT -p icmp -d 0.0.1.45 -j DNAT --to-source $node1

TCP IP スプーフィングはそれほど単純ではないことがわかりました。リクエストをSNATし、DNATルールを使用してトラフィックを物理ホストに送り返す方法でIP 223.253.0.5をシミュレートしました。 node2のtcpdumpは要求が正しく受信されていることを示していますが、ユーザースペースに到達する前にある時点でパケットを破棄する必要があります。

# node1 : 
node1> declare node2="$( dig +short node2 )"
node1> sudo iptables -t nat -A POSTROUTING -p tcp -d "$node2" --dport 80 -j SNAT --to-source 223.253.0.5
node1> sudo iptables -t nat -A POSTROUTING -p tcp -d "$node2" --dport 443 -j SNAT --to-source 223.253.0.5


# node2 : where we check the origin of the ip
node2> declare node1="$(dig +short node1)"
node2> iptables -t nat -A OUTPUT -p tcp -d 223.253.0.5 -j DNAT --to-destination $node  # to send back traffic to the spoofer

要求をシミュレートするためにカールを使用した。

# on the client's side
node1> curl -vvv --insecure -Ls http://$node2:80

# or using socat
  # the client 
node1> socat - TCP:node2:80 
  # the server
node2> socat - TCP-LISTEN:80,fork,bind=172.16.2.6

なぜTCPを使用して機能できないのか知りたいのですが。

ベストアンサー1

おすすめ記事