すべての着信パケットの送信元IPを記録します。

すべての着信パケットの送信元IPを記録します。

パケットを送信したり、サーバーに接続しているすべてのシステムのIPアドレスをどのように記録できますか?さらに、DDoSに参加するIPをブロックし、サーバーにパケットを殺す方法は何ですか?

答え1

事前にいくつかの注意事項:DDoS攻撃から守るのは難しく、ISPの助けが必要な場合が多い。。 IPtablesだけではユーザーを保護できず、有害かもしれません。私はあなたが本当にあなたが求めていることをしたいとは思わない。

  • DDoSは、システムに過負荷を与え、サービス拒否を引き起こすように設計されています。パケットをロギングすると、システムの負荷が増加します。だからあなたは攻撃者に好意を与えます。
  • IPアドレスのソースは簡単になりすまします。サーバーにSSHを介して接続し、攻撃者がラップトップのIPアドレスを見つけたと想像してください。特定のIP(この場合はノートブック)から来たように見えるパケットを送信するのは非常に簡単です。あなたのサーバーはあなたのIPアドレスをブロックし、効果的にあなたをブロックします。この技術により、攻撃者はサーバーによってブロックされたすべてのIPアドレスを所有する可能性があります。繰り返しますが、あなたは攻撃者に好意を与え、彼らの仕事をより簡単にすることです。

これは除外されます:

個々のIPアドレスをシステムログに記録します(IPあたり1時間あたり最大1エントリ)。

iptables -I INPUT 1 \! -i lo                 \
  -m hashlimit --hashlimit-name "IP_SOURCES" \
               --hashlimit-mode srcip        \
               --hashlimit-burst 1           \
               --hashlimit-upto 1/hour       \
  -j LOG

IPv6パケットに対して同じ操作を実行してiptables置き換えられました。ip6tables

conntrackIPブロックも同様に機能します。モジュールを上記のルールに入れ、NEW接続を一致させ、ジャンプ先をDROP

iptables -I INPUT 1 \! -i lo                 \
  -m conntrack --ctstate NEW                 \
  -m hashlimit --hashlimit-name "RATE_LIMIT" \
               --hashlimit-mode srcip        \
               --hashlimit-burst 20          \
               --hashlimit-above 1/min       \
  -j DROP

これにより、毎分20回の接続試行が許可され、他のすべての接続試行は無視されます。確立された接続のパケットはそのまま通過できます。

コメントで述べたように、fail2banこれは不要なトラフィックをブロックするのに良い解決策になるかもしれません。攻撃者がSYN-floodを作成したりIPv6を使用している場合は役に立ちませんが、攻撃者が「一般」IPv4を使用してSSHまたはsmtpサーバーに無差別の代入を試みる場合に便利です。つながる

関連情報