ゲームサーバーがあり、誰かがボットにスパムを送っています。 SpamBotクライアントはUDP接続を使用してサーバーとハンドシェイクします。これはプロキシリストを介して行われます。デフォルトでは、Spambotクライアントは多くのUDPパケットを私のサーバーに送信し、ボットを使用してスパムを送信します。
今、私にスパムを送る人が使う6つの大規模なプロキシのリストがありました。すべてのリストのすべてのIPをブロックするシェルスクリプトを作成できます。各IPは新しい行にあるため、forループを使用すると簡単に実行できます。
問題は、サーバーのパフォーマンスが心配です。 15,000個のIPアドレスをブロックすると、サーバーのパフォーマンスに影響しますか?
現在私はCentOS 7を使用しています。 IPテーブルが良いアプローチであるかどうか、他の代替方法を試す必要があるかどうかを教えてください。命令も書いてください。私のサーバーはこれらのIPアドレスへの応答を停止し、そのIPアドレスへの接続を確立したくありません。
答え1
IP 数が多すぎる場合は、以下を使用する必要があります。ipsetsモジュール。 ipset は、iptables が反応できるデータセットを生成します。10〜1000個のアイテムを簡単に処理できます。。
あなたが持っていることを確認してくださいEPELリポジトリ以下を介してipsetを有効にしてインストールします。
yum install ipset
一例:
ipset -N blockedip iphash
「iphash」形式で「blockedip」というコレクションを作成します(他の形式がありますが、この形式はIPでのみ機能します)。
ipset -Aを使用すると、データセットにデータ(この場合はIP)を追加できます。
ipset -A blockedip 192.168.1.1
ipset -A blockedip 192.168.1.2
など...
または、IPv4アドレスリストが1行に1つずつあるとipset
仮定し、IPアドレスごとに単一の呼び出しを実行せずに一括生成します。big-file.list
ipset -N blockedip iphash
sed 's/^/add blockedip /' < big-file.list | ipsec restore
次のiptablesコマンドを使用すると、このグループのすべてのソースからすべてのパケットをドロップするようにカーネルに指示できます。
iptables -A INPUT -m set --set blockedip src -j DROP
答え2
15,000の異なるIPアドレスについて話している場合欲しくないiptables
各アドレスに対して別々のルールを使用したいと思います。これにより、ネットワークスループットが低下します。
代わりに、単一の使用を検討する必要があります。IP設定次に、15,000の住所をここに入力してください。
ipset create spambots iphash
iptables -A INPUT -m set --match-set spambots src -j DROP
while read ip; do ipset add spambots "$ip"; done < ip_addresses.txt
del
IPセット、flush
全エントリセットから個々のアドレスを削除(削除)したり、destroy
IPセットを完全に削除したりできます。
答え3
次の形式の入力ファイル「ips.txt」が提供されます。
1.2.3.4
2.3.4.5
その後、このスクリプトはDROP宛先を使用してすべてのIPアドレスをiptables入力チェーンに追加し、一致するパケットを破棄します。
cat ips.txt| while read a; do echo $a; iptables -I INPUT -p udp -s $a -j DROP ; done
多くのIPを追加したい場合は、以下の例のようにIPを蓄積してみてください。
1.2.3.4
1.2.3.5
~になる
1.2.3.0/28
または同様です。この蓄積はスクリプトを介して行うこともできます。
答え4
もう1つの方法は、いわゆるルーティングブラックホールを使用してこれらのIPをブロックすることです。
ip route add blackhole 8.8.8.8/32
これは、上記のアドレスに対してデータをどこにも送信しない経路が確立されていることを意味する。通常のiptablesソリューションよりも優れたパフォーマンスを発揮するかどうかは、サーバー構成によって異なります。本番システムに展開する前に、両方のアプローチをベンチマークする必要があると思います。